diff --git a/components/fpspreadsheet/examples/visual/fpsctrls/main.pas b/components/fpspreadsheet/examples/visual/fpsctrls/main.pas index 7b26c1647..f0b885c9e 100644 --- a/components/fpspreadsheet/examples/visual/fpsctrls/main.pas +++ b/components/fpspreadsheet/examples/visual/fpsctrls/main.pas @@ -380,6 +380,9 @@ uses sCSVParamsForm, sCurrencyForm, sFormatSettingsForm, sSortParamsForm, sHyperlinkForm, sNumFormatForm, sSearchForm; +var + SEARCH_DLG_POS: TPoint = (X: -1; Y: -1); + function CreateIni: TCustomIniFile; begin Result := TMemIniFile.Create(GetAppConfigFile(false)); @@ -496,7 +499,15 @@ end; procedure TMainForm.AcSearchExecute(Sender: TObject); begin if SearchForm = nil then - SearchForm := TSearchForm.Create(self); + SearchForm := TSearchForm.Create(self) + else + if not SearchForm.Showing then + begin + SearchForm.Position := poDesigned; + SearchForm.Left := SEARCH_DLG_POS.X; + SearchForm.Top := SEARCH_DLG_POS.Y; + end else + SearchForm.BringToFront; SearchForm.OnFound := @SearchFound; SearchForm.OnClose := @SearchClose; SearchForm.SearchParams := DefaultSearchParams; @@ -611,6 +622,8 @@ begin Unused(CloseAction); DefaultSearchParams := TSearchForm(Sender).SearchParams; DefaultReplaceParams := TSearchForm(Sender).ReplaceParams; + SEARCH_DLG_POS.X := SearchForm.Left; + SEARCH_DLG_POS.Y := SearchForm.Top; end; procedure TMainForm.SearchFound(Sender: TObject; AFound: Boolean; diff --git a/components/fpspreadsheet/examples/visual/shared/ssearchform.pas b/components/fpspreadsheet/examples/visual/shared/ssearchform.pas index f5f5cb6b4..cc70f0278 100644 --- a/components/fpspreadsheet/examples/visual/shared/ssearchform.pas +++ b/components/fpspreadsheet/examples/visual/shared/ssearchform.pas @@ -104,19 +104,46 @@ const SEARCH_TAB = 0; REPLACE_TAB = 1; +var + CONFIRM_REPLACEMENT_DLG_X: Integer = -1; + CONFIRM_REPLACEMENT_DLG_Y: Integer = -1; + { TSearchForms } procedure TSearchForm.ConfirmReplacementHandler(Sender: TObject; AWorksheet: TsWorksheet; ARow, ACol: Cardinal; const ASearchText, AReplaceText: String; var AConfirmReplacement: TsConfirmReplacementResult); +var + F: TForm; begin Unused(AWorksheet, ARow, ACol); Unused(ASearchText, AReplaceText); + F := CreateMessageDialog('Replace?', mtConfirmation, [mbYes, mbNo, mbCancel]); + try + if (CONFIRM_REPLACEMENT_DLG_X = -1) then + F.Position := poMainformCenter + else begin + F.Position := poDesigned; + F.Left := CONFIRM_REPLACEMENT_DLG_X; + F.Top := CONFIRM_REPLACEMENT_DLG_Y; + end; + case F.ShowModal of + mrYes: AConfirmReplacement := crReplace; + mrNo : AConfirmReplacement := crIgnore; + mrCancel: AConfirmReplacement := crAbort; + end; + CONFIRM_REPLACEMENT_DLG_X := F.Left; + CONFIRM_REPLACEMENT_DLG_Y := F.Top; + finally + F.Free; + end; + { case MessageDlg('Replace?', mtConfirmation, [mbYes, mbNo, mbCancel], 0) of mrYes: AConfirmReplacement := crReplace; mrNo : AConfirmReplacement := crIgnore; mrCancel: AConfirmReplacement := crAbort; end; + } end; procedure TSearchForm.Execute(AWorkbook: TsWorkbook);