From 6b224cd088039490a1a888a94519a6799443724d Mon Sep 17 00:00:00 2001 From: mattias Date: Sat, 25 Jul 2009 15:31:44 +0000 Subject: [PATCH] IDE: find dialog: implemented speedbutton to enable/disable auto completion, bug #12334 git-svn-id: trunk@20947 - --- ide/findreplacedialog.lfm | 29 ++++- ide/findreplacedialog.lrs | 243 ++++++++++++++++++++------------------ ide/findreplacedialog.pp | 25 ++++ ide/inputhistory.pas | 6 + ide/sourceeditor.pp | 13 +- 5 files changed, 188 insertions(+), 128 deletions(-) diff --git a/ide/findreplacedialog.lfm b/ide/findreplacedialog.lfm index 14d0653b4f..16c698e703 100644 --- a/ide/findreplacedialog.lfm +++ b/ide/findreplacedialog.lfm @@ -28,6 +28,27 @@ object LazFindReplaceDialog: TLazFindReplaceDialog FocusControl = TextToFindComboBox ParentColor = False end + object EnableAutoCompleteSpeedButton: TSpeedButton + AnchorSideLeft.Control = TextToFindComboBox + AnchorSideTop.Control = TextToFindComboBox + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = TextToFindComboBox + AnchorSideBottom.Side = asrBottom + Left = 389 + Height = 29 + Top = 12 + Width = 25 + Anchors = [akTop, akRight, akBottom] + AllowAllUp = True + BorderSpacing.Right = 6 + Color = clBtnFace + GroupIndex = 1 + NumGlyphs = 0 + OnClick = EnableAutoCompleteSpeedButtonClick + ShowHint = True + ParentShowHint = False + end object ReplaceWithCheckbox: TCheckBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = ReplaceTextComboBox @@ -44,17 +65,15 @@ object LazFindReplaceDialog: TLazFindReplaceDialog object TextToFindComboBox: TComboBox AnchorSideLeft.Control = TextToFindLabel AnchorSideLeft.Side = asrBottom - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - Left = 116 + AnchorSideRight.Control = EnableAutoCompleteSpeedButton + Left = 110 Height = 29 Top = 12 - Width = 298 + Width = 279 Anchors = [akTop, akLeft, akRight] AutoComplete = True AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactRetainPrefixCase, cbactSearchAscending] BorderSpacing.Left = 6 - BorderSpacing.Around = 6 ItemHeight = 0 OnKeyDown = TextToFindComboboxKeyDown TabOrder = 0 diff --git a/ide/findreplacedialog.lrs b/ide/findreplacedialog.lrs index 619f6db0b1..0691b9e9f3 100644 --- a/ide/findreplacedialog.lrs +++ b/ide/findreplacedialog.lrs @@ -1,4 +1,4 @@ -{ Das ist eine automatisch erzeugte Lazarus-Ressourcendatei } +{ This is an automatically generated lazarus resource file } LazarusResources.Add('TLazFindReplaceDialog','FORMDATA',[ 'TPF0'#21'TLazFindReplaceDialog'#20'LazFindReplaceDialog'#4'Left'#3'4'#1#6'He' @@ -12,122 +12,129 @@ LazarusResources.Add('TLazFindReplaceDialog','FORMDATA',[ +'Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#18#3'Top'#2#17#5'Width'#2'b'#9 +'Alignment'#7#14'taRightJustify'#18'BorderSpacing.Left'#2#6#7'Caption'#6#15 +'TextToFindLabel'#12'FocusControl'#7#18'TextToFindComboBox'#11'ParentColor'#8 - +#0#0#9'TCheckBox'#19'ReplaceWithCheckbox'#22'AnchorSideLeft.Control'#7#5'Own' - +'er'#21'AnchorSideTop.Control'#7#19'ReplaceTextComboBox'#18'AnchorSideTop.Si' - +'de'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#22#3'Top'#2'2'#5'Width'#3#162#0 - +#18'BorderSpacing.Left'#2#6#7'Caption'#6#19'ReplaceWithCheckbox'#8'OnChange' - +#7#25'ReplaceWithCheckboxChange'#8'TabOrder'#2#1#0#0#9'TComboBox'#18'TextToF' - +'indComboBox'#22'AnchorSideLeft.Control'#7#15'TextToFindLabel'#19'AnchorSide' - +'Left.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorS' - +'ideRight.Side'#7#9'asrBottom'#4'Left'#2't'#6'Height'#2#29#3'Top'#2#12#5'Wid' - +'th'#3'*'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#12'AutoComplete'#9 + +#0#0#12'TSpeedButton'#29'EnableAutoCompleteSpeedButton'#22'AnchorSideLeft.Co' + +'ntrol'#7#18'TextToFindComboBox'#21'AnchorSideTop.Control'#7#18'TextToFindCo' + +'mboBox'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9 + +'asrBottom'#24'AnchorSideBottom.Control'#7#18'TextToFindComboBox'#21'AnchorS' + +'ideBottom.Side'#7#9'asrBottom'#4'Left'#3#133#1#6'Height'#2#29#3'Top'#2#12#5 + +'Width'#2#25#7'Anchors'#11#5'akTop'#7'akRight'#8'akBottom'#0#10'AllowAllUp'#9 + +#19'BorderSpacing.Right'#2#6#5'Color'#7#9'clBtnFace'#10'GroupIndex'#2#1#9'Nu' + +'mGlyphs'#2#0#7'OnClick'#7'"EnableAutoCompleteSpeedButtonClick'#8'ShowHint'#9 + +#14'ParentShowHint'#8#0#0#9'TCheckBox'#19'ReplaceWithCheckbox'#22'AnchorSide' + +'Left.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#19'ReplaceTextComboBox' + +#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#22#3'Top'#2'2' + +#5'Width'#3#162#0#18'BorderSpacing.Left'#2#6#7'Caption'#6#19'ReplaceWithChec' + +'kbox'#8'OnChange'#7#25'ReplaceWithCheckboxChange'#8'TabOrder'#2#1#0#0#9'TCo' + +'mboBox'#18'TextToFindComboBox'#22'AnchorSideLeft.Control'#7#15'TextToFindLa' + +'bel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#29 + +'EnableAutoCompleteSpeedButton'#4'Left'#2'n'#6'Height'#2#29#3'Top'#2#12#5'Wi' + +'dth'#3#23#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#12'AutoComplete'#9 +#16'AutoCompleteText'#11#12'cbactEnabled'#22'cbactEndOfLineComplete'#21'cbac' - +'tRetainPrefixCase'#20'cbactSearchAscending'#0#18'BorderSpacing.Left'#2#6#20 - +'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#9'OnKeyDown'#7#25'TextToFindCo' - +'mboboxKeyDown'#8'TabOrder'#2#0#4'Text'#6#18'TextToFindComboBox'#0#0#9'TComb' - +'oBox'#19'ReplaceTextComboBox'#22'AnchorSideLeft.Control'#7#19'ReplaceWithCh' - +'eckbox'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7 - +#18'TextToFindComboBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideR' - +'ight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3 - +#180#0#6'Height'#2#29#3'Top'#2'/'#5'Width'#3#234#0#7'Anchors'#11#5'akTop'#6 - +'akLeft'#7'akRight'#0#12'AutoComplete'#9#16'AutoCompleteText'#11#12'cbactEna' - +'bled'#22'cbactEndOfLineComplete'#21'cbactRetainPrefixCase'#20'cbactSearchAs' - +'cending'#0#18'BorderSpacing.Left'#2#6#20'BorderSpacing.Around'#2#6#10'ItemH' - +'eight'#2#0#9'OnKeyDown'#7#25'TextToFindComboboxKeyDown'#8'TabOrder'#2#2#4'T' - +'ext'#6#19'ReplaceTextComboBox'#0#0#9'TGroupBox'#15'OptionsGroupBox'#22'Anch' - +'orSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#19'ReplaceTextCo' - +'mboBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7 - +#8'BtnPanel'#4'Left'#2#6#6'Height'#3#237#0#3'Top'#2'R'#5'Width'#3#199#0#7'An' - +'chors'#11#5'akTop'#6'akLeft'#8'akBottom'#0#18'BorderSpacing.Left'#2#6#17'Bo' - +'rderSpacing.Top'#2#6#20'BorderSpacing.Bottom'#2#6#7'Caption'#6#15'OptionsGr' - +'oupBox'#12'ClientHeight'#3#218#0#11'ClientWidth'#3#195#0#8'TabOrder'#2#3#8 - +'OnResize'#7#21'OptionsGroupBoxResize'#0#9'TCheckBox'#23'PromptOnReplaceChec' - +'kBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#22#3'To' - +'p'#3#148#0#5'Width'#3#183#0#5'Align'#7#5'alTop'#17'BorderSpacing.Top'#2#6#20 - +'BorderSpacing.Around'#2#6#7'Caption'#6#23'PromptOnReplaceCheckBox'#7'Checke' - +'d'#9#14'ParentShowHint'#8#8'ShowHint'#9#5'State'#7#9'cbChecked'#8'TabOrder' - +#2#4#0#0#9'TCheckBox'#17'MultiLineCheckBox'#18'AnchorSideTop.Side'#7#9'asrBo' - +'ttom'#4'Left'#2#6#6'Height'#2#22#3'Top'#2'r'#5'Width'#3#183#0#5'Align'#7#5 - +'alTop'#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Around'#2#6#7'Caption'#6 - +#17'MultiLineCheckBox'#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#3#0#0 - +#9'TCheckBox'#26'RegularExpressionsCheckBox'#18'AnchorSideTop.Side'#7#9'asrB' - +'ottom'#4'Left'#2#6#6'Height'#2#22#3'Top'#2'P'#5'Width'#3#183#0#5'Align'#7#5 - +'alTop'#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Around'#2#6#7'Caption'#6 - +#26'RegularExpressionsCheckBox'#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOrde' - +'r'#2#2#0#0#9'TCheckBox'#22'WholeWordsOnlyCheckBox'#18'AnchorSideTop.Side'#7 - +#9'asrBottom'#4'Left'#2#6#6'Height'#2#22#3'Top'#2'.'#5'Width'#3#183#0#5'Alig' - +'n'#7#5'alTop'#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Around'#2#6#7'Capt' - +'ion'#6#22'WholeWordsOnlyCheckBox'#14'ParentShowHint'#8#8'ShowHint'#9#8'TabO' - +'rder'#2#1#0#0#9'TCheckBox'#21'CaseSensitiveCheckBox'#18'AnchorSideTop.Side' - +#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#22#3'Top'#2#12#5'Width'#3#183#0#5'Al' - +'ign'#7#5'alTop'#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Around'#2#6#7'Ca' - +'ption'#6#21'CaseSensitiveCheckBox'#14'ParentShowHint'#8#8'ShowHint'#9#8'Tab' - +'Order'#2#0#0#0#0#9'TGroupBox'#13'ScopeGroupBox'#22'AnchorSideLeft.Control'#7 - +#15'OptionsGroupBox'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop' - +'.Control'#7#14'OriginGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left' - ,#3#211#0#6'Height'#2'J'#3'Top'#3#162#0#5'Width'#3#199#0#20'BorderSpacing.Aro' - +'und'#2#6#7'Caption'#6#13'ScopeGroupBox'#28'ChildSizing.LeftRightSpacing'#2#6 - +#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSi' - +'zing.EnlargeVertical'#7#24'crsHomogenousSpaceResize'#28'ChildSizing.ShrinkH' - +'orizontal'#7#24'crsHomogenousSpaceResize'#26'ChildSizing.ShrinkVertical'#7 - +#24'crsHomogenousSpaceResize'#18'ChildSizing.Layout'#7#29'cclLeftToRightThen' - +'TopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2'7'#11'C' - +'lientWidth'#3#195#0#8'TabOrder'#2#5#0#12'TRadioButton'#19'SelectedRadioButt' - +'on'#4'Left'#2#6#6'Height'#2#22#3'Top'#2#4#5'Width'#3#183#0#7'Caption'#6#19 - +'SelectedRadioButton'#8'TabOrder'#2#0#7'TabStop'#8#0#0#12'TRadioButton'#17'G' - +'lobalRadioButton'#4'Left'#2#6#6'Height'#2#22#3'Top'#2#30#5'Width'#3#183#0#7 - +'Caption'#6#17'GlobalRadioButton'#7'Checked'#9#5'State'#7#9'cbChecked'#8'Tab' - +'Order'#2#1#0#0#0#9'TGroupBox'#17'DirectionGroupBox'#22'AnchorSideLeft.Contr' - +'ol'#7#15'OptionsGroupBox'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorS' - +'ideTop.Control'#7#13'ScopeGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4 - +'Left'#3#211#0#6'Height'#2'J'#3'Top'#3#242#0#5'Width'#3#199#0#20'BorderSpaci' - +'ng.Around'#2#6#7'Caption'#6#17'DirectionGroupBox'#28'ChildSizing.LeftRightS' - +'pacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize' - +#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousSpaceResize'#28'ChildSizi' - +'ng.ShrinkHorizontal'#7#24'crsHomogenousSpaceResize'#26'ChildSizing.ShrinkVe' - +'rtical'#7#24'crsHomogenousSpaceResize'#18'ChildSizing.Layout'#7#29'cclLeftT' - +'oRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight' - +#2'7'#11'ClientWidth'#3#195#0#8'TabOrder'#2#6#0#12'TRadioButton'#19'Backward' - +'RadioButton'#4'Left'#2#6#6'Height'#2#22#3'Top'#2#4#5'Width'#3#183#0#7'Capti' - +'on'#6#19'BackwardRadioButton'#8'TabOrder'#2#0#7'TabStop'#8#0#0#12'TRadioBut' - +'ton'#18'ForwardRadioButton'#4'Left'#2#6#6'Height'#2#22#3'Top'#2#30#5'Width' - +#3#183#0#7'Caption'#6#18'ForwardRadioButton'#7'Checked'#9#5'State'#7#9'cbChe' - +'cked'#8'TabOrder'#2#1#0#0#0#9'TGroupBox'#14'OriginGroupBox'#22'AnchorSideLe' - +'ft.Control'#7#15'OptionsGroupBox'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21 - +'AnchorSideTop.Control'#7#19'ReplaceTextComboBox'#18'AnchorSideTop.Side'#7#9 - +'asrBottom'#4'Left'#3#211#0#6'Height'#2'J'#3'Top'#2'R'#5'Width'#3#199#0#20'B' - +'orderSpacing.Around'#2#6#7'Caption'#6#14'OriginGroupBox'#28'ChildSizing.Lef' - +'tRightSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChil' - +'dResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousSpaceResize'#28 - +'ChildSizing.ShrinkHorizontal'#7#24'crsHomogenousSpaceResize'#26'ChildSizing' - +'.ShrinkVertical'#7#24'crsHomogenousSpaceResize'#18'ChildSizing.Layout'#7#29 - +'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'Clien' - +'tHeight'#2'7'#11'ClientWidth'#3#195#0#8'TabOrder'#2#4#0#12'TRadioButton'#21 - +'FromCursorRadioButton'#4'Left'#2#6#6'Height'#2#22#3'Top'#2#4#5'Width'#3#183 - +#0#8'AutoSize'#8#7'Caption'#6#21'FromCursorRadioButton'#7'Checked'#9#5'State' - +#7#9'cbChecked'#8'TabOrder'#2#0#0#0#12'TRadioButton'#22'EntireScopeRadioButt' - +'on'#4'Left'#2#6#6'Height'#2#22#3'Top'#2#30#5'Width'#3#183#0#8'AutoSize'#8#7 - +'Caption'#6#22'EntireScopeRadioButton'#8'TabOrder'#2#1#7'TabStop'#8#0#0#0#6 - +'TPanel'#8'BtnPanel'#4'Left'#2#0#6'Height'#2'0'#3'Top'#3'E'#1#5'Width'#3#164 - +#1#5'Align'#7#8'alBottom'#8'AutoSize'#9#10'BevelOuter'#7#6'bvNone'#12'Client' - +'Height'#2'0'#11'ClientWidth'#3#164#1#8'TabOrder'#2#7#0#7'TBitBtn'#16'Replac' - +'eAllButton'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#213#0#6'Heig' - +'ht'#2'$'#3'Top'#2#6#5'Width'#2'6'#5'Align'#7#7'alRight'#8'AutoSize'#9#20'Bo' - +'rderSpacing.Around'#2#6#7'Caption'#6#4'&All'#4'Kind'#7#5'bkAll'#9'NumGlyphs' - +#2#0#7'OnClick'#7#21'ReplaceAllButtonClick'#8'TabOrder'#2#0#0#0#7'TBitBtn'#8 - +'OKButton'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#17#1#6'Height' - +#2'$'#3'Top'#2#6#5'Width'#2'9'#5'Align'#7#7'alRight'#8'AutoSize'#9#20'Border' - +'Spacing.Around'#2#6#7'Caption'#6#3'&OK'#7'Default'#9#4'Kind'#7#4'bkOK'#9'Nu' - +'mGlyphs'#2#0#7'OnClick'#7#13'OkButtonClick'#8'TabOrder'#2#1#0#0#7'TBitBtn' - +#12'CancelButton'#20'AnchorSideRight.Side'#7#9'asrBottom'#21'AnchorSideBotto' - +'m.Side'#7#9'asrBottom'#4'Left'#3'P'#1#6'Height'#2'$'#3'Top'#2#6#5'Width'#2 - +'N'#5'Align'#7#7'alRight'#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#6'Cance' - +'l'#9#7'Caption'#6#6'Cancel'#4'Kind'#7#8'bkCancel'#11'ModalResult'#2#2#9'Num' - +'Glyphs'#2#0#7'OnClick'#7#17'CancelButtonClick'#8'TabOrder'#2#2#0#0#7'TBitBt' - +'n'#10'HelpButton'#22'AnchorSideLeft.Control'#7#8'BtnPanel'#24'AnchorSideBot' - +'tom.Control'#7#8'BtnPanel'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left' - +#2#6#6'Height'#2'"'#3'Top'#2#8#5'Width'#2'B'#7'Anchors'#11#6'akLeft'#8'akBot' - +'tom'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6#5'&Help'#4'K' - +'ind'#7#6'bkHelp'#9'NumGlyphs'#2#0#7'OnClick'#7#15'HelpButtonClick'#8'TabOrd' - ,'er'#2#3#0#0#0#0 + +'tRetainPrefixCase'#20'cbactSearchAscending'#0#18'BorderSpacing.Left'#2#6#10 + +'ItemHeight'#2#0#9'OnKeyDown'#7#25'TextToFindComboboxKeyDown'#8'TabOrder'#2#0 + +#4'Text'#6#18'TextToFindComboBox'#0#0#9'TComboBox'#19'ReplaceTextComboBox'#22 + +'AnchorSideLeft.Control'#7#19'ReplaceWithCheckbox'#19'AnchorSideLeft.Side'#7 + +#9'asrBottom'#21'AnchorSideTop.Control'#7#18'TextToFindComboBox'#18'AnchorSi' + +'deTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'Anchor' + +'SideRight.Side'#7#9'asrBottom'#4'Left'#3#180#0#6'Height'#2#29#3'Top'#2'/'#5 + +'Width'#3#234#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#12'AutoComplet' + +'e'#9#16'AutoCompleteText'#11#12'cbactEnabled'#22'cbactEndOfLineComplete'#21 + +'cbactRetainPrefixCase'#20'cbactSearchAscending'#0#18'BorderSpacing.Left'#2#6 + +#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#9'OnKeyDown'#7#25'TextToFin' + +'dComboboxKeyDown'#8'TabOrder'#2#2#4'Text'#6#19'ReplaceTextComboBox'#0#0#9'T' + +'GroupBox'#15'OptionsGroupBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'Anch' + +'orSideTop.Control'#7#19'ReplaceTextComboBox'#18'AnchorSideTop.Side'#7#9'asr' + +'Bottom'#24'AnchorSideBottom.Control'#7#8'BtnPanel'#4'Left'#2#6#6'Height'#3 + +#237#0#3'Top'#2'R'#5'Width'#3#199#0#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBot' + +'tom'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#20'BorderSpacin' + +'g.Bottom'#2#6#7'Caption'#6#15'OptionsGroupBox'#12'ClientHeight'#3#218#0#11 + +'ClientWidth'#3#195#0#8'TabOrder'#2#3#8'OnResize'#7#21'OptionsGroupBoxResize' + +#0#9'TCheckBox'#23'PromptOnReplaceCheckBox'#18'AnchorSideTop.Side'#7#9'asrBo' + +'ttom'#4'Left'#2#6#6'Height'#2#22#3'Top'#3#148#0#5'Width'#3#183#0#5'Align'#7 + +#5'alTop'#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Around'#2#6#7'Caption'#6 + +#23'PromptOnReplaceCheckBox'#7'Checked'#9#14'ParentShowHint'#8#8'ShowHint'#9 + +#5'State'#7#9'cbChecked'#8'TabOrder'#2#4#0#0#9'TCheckBox'#17'MultiLineCheckB' + +'ox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#22#3'Top' + +#2'r'#5'Width'#3#183#0#5'Align'#7#5'alTop'#17'BorderSpacing.Top'#2#6#20'Bord' + +'erSpacing.Around'#2#6#7'Caption'#6#17'MultiLineCheckBox'#14'ParentShowHint' + +#8#8'ShowHint'#9#8'TabOrder'#2#3#0#0#9'TCheckBox'#26'RegularExpressionsCheck' + +'Box'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#22#3'Top' + +#2'P'#5'Width'#3#183#0#5'Align'#7#5'alTop'#17'BorderSpacing.Top'#2#6#20'Bord' + +'erSpacing.Around'#2#6#7'Caption'#6#26'RegularExpressionsCheckBox'#14'Parent' + +'ShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#2#0#0#9'TCheckBox'#22'WholeWordsOnl' + +'yCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#22 + +#3'Top'#2'.'#5'Width'#3#183#0#5'Align'#7#5'alTop'#17'BorderSpacing.Top'#2#6 + +#20'BorderSpacing.Around'#2#6#7'Caption'#6#22'WholeWordsOnlyCheckBox'#14'Par' + ,'entShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#1#0#0#9'TCheckBox'#21'CaseSensit' + +'iveCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2 + +#22#3'Top'#2#12#5'Width'#3#183#0#5'Align'#7#5'alTop'#17'BorderSpacing.Top'#2 + +#6#20'BorderSpacing.Around'#2#6#7'Caption'#6#21'CaseSensitiveCheckBox'#14'Pa' + +'rentShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#0#0#0#0#9'TGroupBox'#13'ScopeGr' + +'oupBox'#22'AnchorSideLeft.Control'#7#15'OptionsGroupBox'#19'AnchorSideLeft.' + +'Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#14'OriginGroupBox'#18'Anch' + +'orSideTop.Side'#7#9'asrBottom'#4'Left'#3#211#0#6'Height'#2'J'#3'Top'#3#162#0 + +#5'Width'#3#199#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#13'ScopeGroupBox' + +#28'ChildSizing.LeftRightSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24 + +'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenou' + +'sSpaceResize'#28'ChildSizing.ShrinkHorizontal'#7#24'crsHomogenousSpaceResiz' + +'e'#26'ChildSizing.ShrinkVertical'#7#24'crsHomogenousSpaceResize'#18'ChildSi' + +'zing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPer' + +'Line'#2#1#12'ClientHeight'#2'7'#11'ClientWidth'#3#195#0#8'TabOrder'#2#5#0#12 + +'TRadioButton'#19'SelectedRadioButton'#4'Left'#2#6#6'Height'#2#22#3'Top'#2#4 + +#5'Width'#3#183#0#7'Caption'#6#19'SelectedRadioButton'#8'TabOrder'#2#0#7'Tab' + +'Stop'#8#0#0#12'TRadioButton'#17'GlobalRadioButton'#4'Left'#2#6#6'Height'#2 + +#22#3'Top'#2#30#5'Width'#3#183#0#7'Caption'#6#17'GlobalRadioButton'#7'Checke' + +'d'#9#5'State'#7#9'cbChecked'#8'TabOrder'#2#1#0#0#0#9'TGroupBox'#17'Directio' + +'nGroupBox'#22'AnchorSideLeft.Control'#7#15'OptionsGroupBox'#19'AnchorSideLe' + +'ft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#13'ScopeGroupBox'#18'An' + +'chorSideTop.Side'#7#9'asrBottom'#4'Left'#3#211#0#6'Height'#2'J'#3'Top'#3#242 + +#0#5'Width'#3#199#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#17'DirectionGr' + +'oupBox'#28'ChildSizing.LeftRightSpacing'#2#6#29'ChildSizing.EnlargeHorizont' + +'al'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crs' + +'HomogenousSpaceResize'#28'ChildSizing.ShrinkHorizontal'#7#24'crsHomogenousS' + +'paceResize'#26'ChildSizing.ShrinkVertical'#7#24'crsHomogenousSpaceResize'#18 + +'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.Cont' + +'rolsPerLine'#2#1#12'ClientHeight'#2'7'#11'ClientWidth'#3#195#0#8'TabOrder'#2 + +#6#0#12'TRadioButton'#19'BackwardRadioButton'#4'Left'#2#6#6'Height'#2#22#3'T' + +'op'#2#4#5'Width'#3#183#0#7'Caption'#6#19'BackwardRadioButton'#8'TabOrder'#2 + +#0#7'TabStop'#8#0#0#12'TRadioButton'#18'ForwardRadioButton'#4'Left'#2#6#6'He' + +'ight'#2#22#3'Top'#2#30#5'Width'#3#183#0#7'Caption'#6#18'ForwardRadioButton' + +#7'Checked'#9#5'State'#7#9'cbChecked'#8'TabOrder'#2#1#0#0#0#9'TGroupBox'#14 + +'OriginGroupBox'#22'AnchorSideLeft.Control'#7#15'OptionsGroupBox'#19'AnchorS' + +'ideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#19'ReplaceTextComb' + +'oBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#211#0#6'Height'#2'J'#3 + +'Top'#2'R'#5'Width'#3#199#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#14'Ori' + +'ginGroupBox'#28'ChildSizing.LeftRightSpacing'#2#6#29'ChildSizing.EnlargeHor' + +'izontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24 + +'crsHomogenousSpaceResize'#28'ChildSizing.ShrinkHorizontal'#7#24'crsHomogeno' + +'usSpaceResize'#26'ChildSizing.ShrinkVertical'#7#24'crsHomogenousSpaceResize' + +#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.C' + +'ontrolsPerLine'#2#1#12'ClientHeight'#2'7'#11'ClientWidth'#3#195#0#8'TabOrde' + +'r'#2#4#0#12'TRadioButton'#21'FromCursorRadioButton'#4'Left'#2#6#6'Height'#2 + +#22#3'Top'#2#4#5'Width'#3#183#0#8'AutoSize'#8#7'Caption'#6#21'FromCursorRadi' + +'oButton'#7'Checked'#9#5'State'#7#9'cbChecked'#8'TabOrder'#2#0#0#0#12'TRadio' + +'Button'#22'EntireScopeRadioButton'#4'Left'#2#6#6'Height'#2#22#3'Top'#2#30#5 + +'Width'#3#183#0#8'AutoSize'#8#7'Caption'#6#22'EntireScopeRadioButton'#8'TabO' + +'rder'#2#1#7'TabStop'#8#0#0#0#6'TPanel'#8'BtnPanel'#4'Left'#2#0#6'Height'#2 + +'0'#3'Top'#3'E'#1#5'Width'#3#164#1#5'Align'#7#8'alBottom'#8'AutoSize'#9#10'B' + +'evelOuter'#7#6'bvNone'#12'ClientHeight'#2'0'#11'ClientWidth'#3#164#1#8'TabO' + +'rder'#2#7#0#7'TBitBtn'#16'ReplaceAllButton'#21'AnchorSideBottom.Side'#7#9'a' + +'srBottom'#4'Left'#3#213#0#6'Height'#2'$'#3'Top'#2#6#5'Width'#2'6'#5'Align'#7 + +#7'alRight'#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6#4'&All'#4 + +'Kind'#7#5'bkAll'#9'NumGlyphs'#2#0#7'OnClick'#7#21'ReplaceAllButtonClick'#8 + +'TabOrder'#2#0#0#0#7'TBitBtn'#8'OKButton'#21'AnchorSideBottom.Side'#7#9'asrB' + +'ottom'#4'Left'#3#17#1#6'Height'#2'$'#3'Top'#2#6#5'Width'#2'9'#5'Align'#7#7 + +'alRight'#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6#3'&OK'#7'D' + +'efault'#9#4'Kind'#7#4'bkOK'#9'NumGlyphs'#2#0#7'OnClick'#7#13'OkButtonClick' + +#8'TabOrder'#2#1#0#0#7'TBitBtn'#12'CancelButton'#20'AnchorSideRight.Side'#7#9 + +'asrBottom'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3'P'#1#6'Height' + +#2'$'#3'Top'#2#6#5'Width'#2'N'#5'Align'#7#7'alRight'#8'AutoSize'#9#20'Border' + ,'Spacing.Around'#2#6#6'Cancel'#9#7'Caption'#6#6'Cancel'#4'Kind'#7#8'bkCancel' + +#11'ModalResult'#2#2#9'NumGlyphs'#2#0#7'OnClick'#7#17'CancelButtonClick'#8'T' + +'abOrder'#2#2#0#0#7'TBitBtn'#10'HelpButton'#22'AnchorSideLeft.Control'#7#8'B' + +'tnPanel'#24'AnchorSideBottom.Control'#7#8'BtnPanel'#21'AnchorSideBottom.Sid' + +'e'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2'"'#3'Top'#2#8#5'Width'#2'B'#7'Anc' + +'hors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#6 + +#7'Caption'#6#5'&Help'#4'Kind'#7#6'bkHelp'#9'NumGlyphs'#2#0#7'OnClick'#7#15 + +'HelpButtonClick'#8'TabOrder'#2#3#0#0#0#0 ]); diff --git a/ide/findreplacedialog.pp b/ide/findreplacedialog.pp index 210d4bc291..514cfe2aab 100644 --- a/ide/findreplacedialog.pp +++ b/ide/findreplacedialog.pp @@ -71,9 +71,11 @@ type ReplaceWithCheckbox: TCheckBox; ScopeGroupBox: TGroupBox; SelectedRadioButton: TRadioButton; + EnableAutoCompleteSpeedButton: TSpeedButton; TextToFindComboBox: TComboBox; TextToFindLabel: TLabel; WholeWordsOnlyCheckBox: TCheckBox; + procedure EnableAutoCompleteSpeedButtonClick(Sender: TObject); procedure FormChangeBounds(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure HelpButtonClick(Sender: TObject); @@ -90,7 +92,9 @@ type RegExpr: TRegExpr; function CheckInput: boolean; function GetComponentText(c: TFindDlgComponent): string; + function GetEnableAutoComplete: boolean; procedure SetComponentText(c: TFindDlgComponent; const AValue: string); + procedure SetEnableAutoComplete(const AValue: boolean); procedure SetOnKey(const AValue: TOnFindDlgKey); procedure SetOptions(NewOptions: TSynSearchOptions); function GetOptions: TSynSearchOptions; @@ -104,6 +108,8 @@ type destructor Destroy; override; public property Options: TSynSearchOptions read GetOptions write SetOptions; + property EnableAutoComplete: boolean read GetEnableAutoComplete + write SetEnableAutoComplete; property FindText:AnsiString read GetFindText write SetFindText; property ReplaceText:AnsiString read GetReplaceText write SetReplaceText; property OnKey: TOnFindDlgKey read FOnKey write SetOnKey; @@ -254,6 +260,13 @@ begin EnableAlign; end; +procedure TLazFindReplaceDialog.EnableAutoCompleteSpeedButtonClick( + Sender: TObject); +begin + TextToFindComboBox.AutoComplete:=EnableAutoCompleteSpeedButton.Down; + ReplaceTextComboBox.AutoComplete:=EnableAutoCompleteSpeedButton.Down; +end; + procedure TLazFindReplaceDialog.OkButtonClick(Sender:TObject); begin if not CheckInput then exit; @@ -314,6 +327,11 @@ begin end; end; +function TLazFindReplaceDialog.GetEnableAutoComplete: boolean; +begin + Result:=EnableAutoCompleteSpeedButton.Down; +end; + procedure TLazFindReplaceDialog.SetComponentText(c: TFindDlgComponent; const AValue: string); begin @@ -324,6 +342,13 @@ begin end; end; +procedure TLazFindReplaceDialog.SetEnableAutoComplete(const AValue: boolean); +begin + EnableAutoCompleteSpeedButton.Down:=AValue; + TextToFindComboBox.AutoComplete:=AValue; + ReplaceTextComboBox.AutoComplete:=AValue; +end; + procedure TLazFindReplaceDialog.SetOnKey(const AValue: TOnFindDlgKey); begin FOnKey:=AValue; diff --git a/ide/inputhistory.pas b/ide/inputhistory.pas index 35708544eb..76c15396ea 100644 --- a/ide/inputhistory.pas +++ b/ide/inputhistory.pas @@ -180,6 +180,7 @@ type // Find- and replace-history FFindHistory: TStringList; FFindInFilesSearchOptions: TLazFindInFileSearchOptions; + FFindAutoComplete: boolean; FLastConvertDelphiPackage: string; FLastConvertDelphiProject: string; FLastConvertDelphiUnit: string; @@ -247,6 +248,8 @@ type write FFindInFilesMaskHistory; property FindInFilesSearchOptions: TLazFindInFileSearchOptions read FFindInFilesSearchOptions write FFindInFilesSearchOptions; + property FindAutoComplete: boolean read FFindAutoComplete + write FFindAutoComplete; // Unit dependencies property UnitDependenciesHistory: TStringList read FUnitDependenciesHistory; @@ -323,6 +326,7 @@ begin // Find- and replace-history FMaxFindHistory:=20; + FFindAutoComplete:=true; FFindHistory:=TStringList.Create; FReplaceHistory:=TStringList.Create; FFindInFilesPathHistory:=TStringList.Create; @@ -391,6 +395,7 @@ var begin // Find- and replace-history FMaxFindHistory:=XMLConfig.GetValue(Path+'Find/History/Max',FMaxFindHistory); + FFindAutoComplete:=XMLConfig.GetValue(Path+'Find/AutoComplete/Value',FFindAutoComplete); LoadRecentList(XMLConfig,FFindHistory,Path+'Find/History/Find/'); LoadRecentList(XMLConfig,FReplaceHistory,Path+'Find/History/Replace/'); LoadRecentList(XMLConfig,FFindInFilesPathHistory,Path+ @@ -448,6 +453,7 @@ var begin // Find- and replace-history XMLConfig.SetDeleteValue(Path+'Find/History/Max',FMaxFindHistory,20); + XMLConfig.SetDeleteValue(Path+'Find/AutoComplete/Value',FFindAutoComplete,true); SaveRecentList(XMLConfig,FFindHistory,Path+'Find/History/Find/'); SaveRecentList(XMLConfig,FReplaceHistory,Path+'Find/History/Replace/'); SaveRecentList(XMLConfig,FFindInFilesPathHistory,Path+ diff --git a/ide/sourceeditor.pp b/ide/sourceeditor.pp index 51865696f5..cf92e7dca1 100644 --- a/ide/sourceeditor.pp +++ b/ide/sourceeditor.pp @@ -1212,6 +1212,7 @@ end; procedure TSourceEditor.StartFindAndReplace(Replace:boolean); var ALeft,ATop:integer; bSelectedTextOption: Boolean; + DlgResult: TModalResult; begin if SourceNotebook<>nil then SourceNotebook.InitFindDialog; @@ -1242,10 +1243,11 @@ begin //debugln('TSourceEditor.StartFindAndReplace B not FindTextAtCursor'); LazFindReplaceDialog.FindText:=''; end; - // if there is no FindText, use the most recently used FindText - if (LazFindReplaceDialog.FindText='') and (InputHistories.FindHistory.Count > 0) then - LazFindReplaceDialog.FindText:=InputHistories.FindHistory[0] end; + LazFindReplaceDialog.EnableAutoComplete:=InputHistories.FindAutoComplete; + // if there is no FindText, use the most recently used FindText + if (LazFindReplaceDialog.FindText='') and (InputHistories.FindHistory.Count > 0) then + LazFindReplaceDialog.FindText:=InputHistories.FindHistory[0]; GetDialogPosition(LazFindReplaceDialog.Width,LazFindReplaceDialog.Height,ALeft,ATop); LazFindReplaceDialog.Left:=ALeft; @@ -1258,9 +1260,10 @@ begin and (EditorComponent.BlockBegin.Y<>EditorComponent.BlockEnd.Y) then LazFindReplaceDialog.Options := LazFindReplaceDialog.Options + [ssoSelectedOnly]; - if (LazFindReplaceDialog.ShowModal = mrCancel) then begin + DlgResult:=LazFindReplaceDialog.ShowModal; + InputHistories.FindAutoComplete:=LazFindReplaceDialog.EnableAutoComplete; + if DlgResult = mrCancel then exit; - end; //debugln('TSourceEditor.StartFindAndReplace B LazFindReplaceDialog.FindText="',dbgstr(LazFindReplaceDialog.FindText),'"'); Replace:=ssoReplace in LazFindReplaceDialog.Options;