mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 19:39:18 +02:00
IDE: codebrowser: added filter for packages, units and identifiers - ToDo: reg ex
git-svn-id: trunk@10747 -
This commit is contained in:
parent
c1e14d850d
commit
07d40f291c
@ -135,6 +135,7 @@ function ComparePrefixIdent(PrefixIdent, Identifier: PChar): boolean;
|
||||
function TextBeginsWith(Txt: PChar; TxtLen: integer; StartTxt: PChar;
|
||||
StartTxtLen: integer; CaseSensitive: boolean): boolean;
|
||||
function StrBeginsWith(const s, Prefix: string): boolean;
|
||||
function IdentifierPos(Search, Identifier: PChar): PtrInt;
|
||||
|
||||
// space and special chars
|
||||
function TrimCodeSpace(const ACode: string): string;
|
||||
@ -2677,6 +2678,33 @@ begin
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
function IdentifierPos(Search, Identifier: PChar): PtrInt;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
if Search=nil then exit(-1);
|
||||
if Identifier=nil then exit(-1);
|
||||
Result:=0;
|
||||
while (IsIdentChar[Identifier[Result]]) do begin
|
||||
if UpChars[Search^]=UpChars[Identifier[Result]] then begin
|
||||
i:=1;
|
||||
repeat
|
||||
if IsIdentChar[Search[i]] then begin
|
||||
if (UpChars[Search[i]]=UpChars[Identifier[Result+i]]) then
|
||||
inc(i)
|
||||
else
|
||||
break;
|
||||
end else begin
|
||||
// whole found
|
||||
exit;
|
||||
end;
|
||||
until false;
|
||||
end;
|
||||
inc(Result);
|
||||
end;
|
||||
Result:=-1;
|
||||
end;
|
||||
|
||||
function GetIdentifier(Identifier: PChar): string;
|
||||
var len: integer;
|
||||
begin
|
||||
|
@ -125,10 +125,14 @@ object CodeBrowserView: TCodeBrowserView
|
||||
AnchorSideTop.Control = PackageFilterEdit
|
||||
Left = 424
|
||||
Height = 22
|
||||
Top = 2
|
||||
Top = 3
|
||||
Width = 23
|
||||
Color = clBtnFace
|
||||
GroupIndex = 1
|
||||
NumGlyphs = 0
|
||||
OnClick = PackageFilterEditEditingDone
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object PackageFilterContainsSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = PackageFilterBeginsSpeedButton
|
||||
@ -136,10 +140,14 @@ object CodeBrowserView: TCodeBrowserView
|
||||
AnchorSideTop.Control = PackageFilterEdit
|
||||
Left = 447
|
||||
Height = 22
|
||||
Top = 2
|
||||
Top = 3
|
||||
Width = 23
|
||||
Color = clBtnFace
|
||||
GroupIndex = 1
|
||||
NumGlyphs = 0
|
||||
OnClick = PackageFilterEditEditingDone
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object PackageFilterRegExSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = PackageFilterContainsSpeedButton
|
||||
@ -147,15 +155,115 @@ object CodeBrowserView: TCodeBrowserView
|
||||
AnchorSideTop.Control = PackageFilterEdit
|
||||
Left = 470
|
||||
Height = 22
|
||||
Top = 2
|
||||
Top = 3
|
||||
Width = 23
|
||||
Color = clBtnFace
|
||||
GroupIndex = 1
|
||||
NumGlyphs = 0
|
||||
OnClick = PackageFilterEditEditingDone
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object UnitFilterBeginsSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = UnitFilterEdit
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = UnitFilterEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 424
|
||||
Height = 22
|
||||
Top = 31
|
||||
Width = 23
|
||||
Color = clBtnFace
|
||||
GroupIndex = 2
|
||||
NumGlyphs = 0
|
||||
OnClick = PackageFilterEditEditingDone
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object UnitFilterContainsSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = UnitFilterBeginsSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = UnitFilterEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 447
|
||||
Height = 22
|
||||
Top = 31
|
||||
Width = 23
|
||||
Color = clBtnFace
|
||||
GroupIndex = 2
|
||||
NumGlyphs = 0
|
||||
OnClick = PackageFilterEditEditingDone
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object UnitFilterRegExSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = UnitFilterContainsSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = UnitFilterEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 470
|
||||
Height = 22
|
||||
Top = 31
|
||||
Width = 23
|
||||
Color = clBtnFace
|
||||
GroupIndex = 2
|
||||
NumGlyphs = 0
|
||||
OnClick = PackageFilterEditEditingDone
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object IdentifierFilterBeginsSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = IdentifierFilterEdit
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = IdentifierFilterEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 424
|
||||
Height = 22
|
||||
Top = 58
|
||||
Width = 23
|
||||
Color = clBtnFace
|
||||
GroupIndex = 3
|
||||
NumGlyphs = 0
|
||||
OnClick = PackageFilterEditEditingDone
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object IdentifierFilterContainsSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = IdentifierFilterBeginsSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = IdentifierFilterEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 447
|
||||
Height = 22
|
||||
Top = 58
|
||||
Width = 23
|
||||
Color = clBtnFace
|
||||
GroupIndex = 3
|
||||
NumGlyphs = 0
|
||||
OnClick = PackageFilterEditEditingDone
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object IdentifierFilterRegExSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = IdentifierFilterContainsSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = IdentifierFilterEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 470
|
||||
Height = 22
|
||||
Top = 58
|
||||
Width = 23
|
||||
Color = clBtnFace
|
||||
GroupIndex = 3
|
||||
NumGlyphs = 0
|
||||
OnClick = PackageFilterEditEditingDone
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object ShowPackagesCheckBox: TCheckBox
|
||||
Left = 6
|
||||
Height = 20
|
||||
Top = 3
|
||||
Top = 4
|
||||
Width = 170
|
||||
Caption = 'ShowPackagesCheckBox'
|
||||
OnChange = ShowPackagesCheckBoxChange
|
||||
@ -164,7 +272,7 @@ object CodeBrowserView: TCodeBrowserView
|
||||
object ShowUnitsCheckBox: TCheckBox
|
||||
Left = 6
|
||||
Height = 20
|
||||
Top = 27
|
||||
Top = 32
|
||||
Width = 142
|
||||
Caption = 'ShowUnitsCheckBox'
|
||||
OnChange = ShowUnitsCheckBoxChange
|
||||
@ -173,7 +281,7 @@ object CodeBrowserView: TCodeBrowserView
|
||||
object ShowIdentifiersCheckBox: TCheckBox
|
||||
Left = 6
|
||||
Height = 20
|
||||
Top = 51
|
||||
Top = 59
|
||||
Width = 168
|
||||
Caption = 'ShowIdentifiersCheckBox'
|
||||
OnChange = ShowIdentifiersCheckBoxChange
|
||||
@ -184,11 +292,34 @@ object CodeBrowserView: TCodeBrowserView
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 223
|
||||
Height = 23
|
||||
Top = 2
|
||||
Top = 3
|
||||
Width = 201
|
||||
OnEditingDone = PackageFilterEditEditingDone
|
||||
TabOrder = 3
|
||||
Text = 'PackageFilterEdit'
|
||||
end
|
||||
object UnitFilterEdit: TEdit
|
||||
AnchorSideTop.Control = ShowUnitsCheckBox
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 223
|
||||
Height = 23
|
||||
Top = 31
|
||||
Width = 201
|
||||
OnEditingDone = PackageFilterEditEditingDone
|
||||
TabOrder = 4
|
||||
Text = 'UnitFilterEdit'
|
||||
end
|
||||
object IdentifierFilterEdit: TEdit
|
||||
AnchorSideTop.Control = ShowIdentifiersCheckBox
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 223
|
||||
Height = 23
|
||||
Top = 58
|
||||
Width = 201
|
||||
OnEditingDone = PackageFilterEditEditingDone
|
||||
TabOrder = 5
|
||||
Text = 'IdentifierFilterEdit'
|
||||
end
|
||||
end
|
||||
object ImageList1: TImageList
|
||||
left = 298
|
||||
|
@ -46,46 +46,93 @@ LazarusResources.Add('TCodeBrowserView','FORMDATA',[
|
||||
+#3#0#12'TSpeedButton'#30'PackageFilterBeginsSpeedButton'#22'AnchorSideLeft.C'
|
||||
+'ontrol'#7#17'PackageFilterEdit'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'A'
|
||||
+'nchorSideTop.Control'#7#17'PackageFilterEdit'#4'Left'#3#168#1#6'Height'#2#22
|
||||
+#3'Top'#2#2#5'Width'#2#23#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#0#0#12'TS'
|
||||
+'peedButton PackageFilterContainsSpeedButton'#22'AnchorSideLeft.Control'#7#30
|
||||
+'PackageFilterBeginsSpeedButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'A'
|
||||
+'nchorSideTop.Control'#7#17'PackageFilterEdit'#4'Left'#3#191#1#6'Height'#2#22
|
||||
+#3'Top'#2#2#5'Width'#2#23#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#0#0#12'TS'
|
||||
+'peedButton'#29'PackageFilterRegExSpeedButton'#22'AnchorSideLeft.Control'#7
|
||||
+' PackageFilterContainsSpeedButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21
|
||||
+'AnchorSideTop.Control'#7#17'PackageFilterEdit'#4'Left'#3#214#1#6'Height'#2
|
||||
+#22#3'Top'#2#2#5'Width'#2#23#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#0#0#9
|
||||
+'TCheckBox'#20'ShowPackagesCheckBox'#4'Left'#2#6#6'Height'#2#20#3'Top'#2#3#5
|
||||
+'Width'#3#170#0#7'Caption'#6#20'ShowPackagesCheckBox'#8'OnChange'#7#26'ShowP'
|
||||
+'ackagesCheckBoxChange'#8'TabOrder'#2#0#0#0#9'TCheckBox'#17'ShowUnitsCheckBo'
|
||||
+'x'#4'Left'#2#6#6'Height'#2#20#3'Top'#2#27#5'Width'#3#142#0#7'Caption'#6#17
|
||||
+'ShowUnitsCheckBox'#8'OnChange'#7#23'ShowUnitsCheckBoxChange'#8'TabOrder'#2#1
|
||||
+#0#0#9'TCheckBox'#23'ShowIdentifiersCheckBox'#4'Left'#2#6#6'Height'#2#20#3'T'
|
||||
+'op'#2'3'#5'Width'#3#168#0#7'Caption'#6#23'ShowIdentifiersCheckBox'#8'OnChan'
|
||||
+'ge'#7#29'ShowIdentifiersCheckBoxChange'#8'TabOrder'#2#2#0#0#5'TEdit'#17'Pac'
|
||||
+'kageFilterEdit'#21'AnchorSideTop.Control'#7#20'ShowPackagesCheckBox'#18'Anc'
|
||||
+'horSideTop.Side'#7#9'asrCenter'#4'Left'#3#223#0#6'Height'#2#23#3'Top'#2#2#5
|
||||
,'Width'#3#201#0#8'TabOrder'#2#3#4'Text'#6#17'PackageFilterEdit'#0#0#0#10'TIm'
|
||||
+'ageList'#10'ImageList1'#4'left'#3'*'#1#3'top'#3#196#0#0#0#10'TPopupMenu'#10
|
||||
+'PopupMenu1'#7'OnPopup'#7#15'PopupMenu1Popup'#4'left'#3#248#0#3'top'#3#196#0
|
||||
+#0#9'TMenuItem'#23'CopyDescriptionMenuItem'#7'Caption'#6#23'CopyDescriptionM'
|
||||
+'enuItem'#7'OnClick'#7#28'CopyDescriptionMenuItemClick'#0#0#9'TMenuItem'#22
|
||||
+'CopyIdentifierMenuItem'#7'Caption'#6#22'CopyIdentifierMenuItem'#7'OnClick'#7
|
||||
+#27'CopyIdentifierMenuItemClick'#0#0#9'TMenuItem'#21'CopySeparatorMenuItem'#7
|
||||
+'Caption'#6#1'-'#0#0#9'TMenuItem'#25'ExpandAllPackagesMenuItem'#7'Caption'#6
|
||||
+#25'ExpandAllPackagesMenuItem'#7'OnClick'#7#30'ExpandAllPackagesMenuItemClic'
|
||||
+'k'#0#0#9'TMenuItem'#27'CollapseAllPackagesMenuItem'#7'Caption'#6#27'Collaps'
|
||||
+'eAllPackagesMenuItem'#7'OnClick'#7' CollapseAllPackagesMenuItemClick'#0#0#9
|
||||
+'TMenuItem'#28'AllPackagesSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuIt'
|
||||
+'em'#22'ExpandAllUnitsMenuItem'#7'Caption'#6#22'ExpandAllUnitsMenuItem'#7'On'
|
||||
+'Click'#7#27'ExpandAllUnitsMenuItemClick'#0#0#9'TMenuItem'#24'CollapseAllUni'
|
||||
+'tsMenuItem'#7'Caption'#6#24'CollapseAllUnitsMenuItem'#7'OnClick'#7#29'Colla'
|
||||
+'pseAllUnitsMenuItemClick'#0#0#9'TMenuItem'#25'AllUnitsSeparatorMenuItem'#7
|
||||
+'Caption'#6#1'-'#0#0#9'TMenuItem'#24'ExpandAllClassesMenuItem'#7'Caption'#6
|
||||
+#24'ExpandAllClassesMenuItem'#7'OnClick'#7#29'ExpandAllClassesMenuItemClick'
|
||||
+#0#0#9'TMenuItem'#26'CollapseAllClassesMenuItem'#7'Caption'#6#26'CollapseAll'
|
||||
+'ClassesMenuItem'#7'OnClick'#7#31'CollapseAllClassesMenuItemClick'#0#0#9'TMe'
|
||||
+'nuItem'#27'AllClassesSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'
|
||||
+#14'ExportMenuItem'#7'Caption'#6#14'ExportMenuItem'#7'OnClick'#7#19'ExportMe'
|
||||
+'nuItemClick'#0#0#0#0
|
||||
+#3'Top'#2#3#5'Width'#2#23#5'Color'#7#9'clBtnFace'#10'GroupIndex'#2#1#9'NumGl'
|
||||
+'yphs'#2#0#7'OnClick'#7#28'PackageFilterEditEditingDone'#8'ShowHint'#9#14'Pa'
|
||||
+'rentShowHint'#8#0#0#12'TSpeedButton PackageFilterContainsSpeedButton'#22'An'
|
||||
+'chorSideLeft.Control'#7#30'PackageFilterBeginsSpeedButton'#19'AnchorSideLef'
|
||||
+'t.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#17'PackageFilterEdit'#4
|
||||
+'Left'#3#191#1#6'Height'#2#22#3'Top'#2#3#5'Width'#2#23#5'Color'#7#9'clBtnFac'
|
||||
+'e'#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#28'PackageFilterEditEdi'
|
||||
+'tingDone'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton'#29'Packag'
|
||||
+'eFilterRegExSpeedButton'#22'AnchorSideLeft.Control'#7' PackageFilterContain'
|
||||
+'sSpeedButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Contr'
|
||||
+'ol'#7#17'PackageFilterEdit'#4'Left'#3#214#1#6'Height'#2#22#3'Top'#2#3#5'Wid'
|
||||
+'th'#2#23#5'Color'#7#9'clBtnFace'#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnCl'
|
||||
+'ick'#7#28'PackageFilterEditEditingDone'#8'ShowHint'#9#14'ParentShowHint'#8#0
|
||||
+#0#12'TSpeedButton'#27'UnitFilterBeginsSpeedButton'#22'AnchorSideLeft.Contro'
|
||||
+'l'#7#14'UnitFilterEdit'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSid'
|
||||
+'eTop.Control'#7#14'UnitFilterEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4
|
||||
+'Left'#3#168#1#6'Height'#2#22#3'Top'#2#31#5'Width'#2#23#5'Color'#7#9'clBtnFa'
|
||||
+'ce'#10'GroupIndex'#2#2#9'NumGlyphs'#2#0#7'OnClick'#7#28'PackageFilterEditEd'
|
||||
+'itingDone'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton'#29'UnitF'
|
||||
,'ilterContainsSpeedButton'#22'AnchorSideLeft.Control'#7#27'UnitFilterBeginsS'
|
||||
+'peedButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'
|
||||
+#7#14'UnitFilterEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#3#191#1#6
|
||||
+'Height'#2#22#3'Top'#2#31#5'Width'#2#23#5'Color'#7#9'clBtnFace'#10'GroupInde'
|
||||
+'x'#2#2#9'NumGlyphs'#2#0#7'OnClick'#7#28'PackageFilterEditEditingDone'#8'Sho'
|
||||
+'wHint'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton'#26'UnitFilterRegExSpeedB'
|
||||
+'utton'#22'AnchorSideLeft.Control'#7#29'UnitFilterContainsSpeedButton'#19'An'
|
||||
+'chorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#14'UnitFilter'
|
||||
+'Edit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#3#214#1#6'Height'#2#22#3
|
||||
+'Top'#2#31#5'Width'#2#23#5'Color'#7#9'clBtnFace'#10'GroupIndex'#2#2#9'NumGly'
|
||||
+'phs'#2#0#7'OnClick'#7#28'PackageFilterEditEditingDone'#8'ShowHint'#9#14'Par'
|
||||
+'entShowHint'#8#0#0#12'TSpeedButton!IdentifierFilterBeginsSpeedButton'#22'An'
|
||||
+'chorSideLeft.Control'#7#20'IdentifierFilterEdit'#19'AnchorSideLeft.Side'#7#9
|
||||
+'asrBottom'#21'AnchorSideTop.Control'#7#20'IdentifierFilterEdit'#18'AnchorSi'
|
||||
+'deTop.Side'#7#9'asrCenter'#4'Left'#3#168#1#6'Height'#2#22#3'Top'#2':'#5'Wid'
|
||||
+'th'#2#23#5'Color'#7#9'clBtnFace'#10'GroupIndex'#2#3#9'NumGlyphs'#2#0#7'OnCl'
|
||||
+'ick'#7#28'PackageFilterEditEditingDone'#8'ShowHint'#9#14'ParentShowHint'#8#0
|
||||
+#0#12'TSpeedButton#IdentifierFilterContainsSpeedButton'#22'AnchorSideLeft.Co'
|
||||
+'ntrol'#7'!IdentifierFilterBeginsSpeedButton'#19'AnchorSideLeft.Side'#7#9'as'
|
||||
+'rBottom'#21'AnchorSideTop.Control'#7#20'IdentifierFilterEdit'#18'AnchorSide'
|
||||
+'Top.Side'#7#9'asrCenter'#4'Left'#3#191#1#6'Height'#2#22#3'Top'#2':'#5'Width'
|
||||
+#2#23#5'Color'#7#9'clBtnFace'#10'GroupIndex'#2#3#9'NumGlyphs'#2#0#7'OnClick'
|
||||
+#7#28'PackageFilterEditEditingDone'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#12
|
||||
+'TSpeedButton IdentifierFilterRegExSpeedButton'#22'AnchorSideLeft.Control'#7
|
||||
+'#IdentifierFilterContainsSpeedButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'
|
||||
+#21'AnchorSideTop.Control'#7#20'IdentifierFilterEdit'#18'AnchorSideTop.Side'
|
||||
+#7#9'asrCenter'#4'Left'#3#214#1#6'Height'#2#22#3'Top'#2':'#5'Width'#2#23#5'C'
|
||||
+'olor'#7#9'clBtnFace'#10'GroupIndex'#2#3#9'NumGlyphs'#2#0#7'OnClick'#7#28'Pa'
|
||||
+'ckageFilterEditEditingDone'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#9'TCheck'
|
||||
+'Box'#20'ShowPackagesCheckBox'#4'Left'#2#6#6'Height'#2#20#3'Top'#2#4#5'Width'
|
||||
+#3#170#0#7'Caption'#6#20'ShowPackagesCheckBox'#8'OnChange'#7#26'ShowPackages'
|
||||
+'CheckBoxChange'#8'TabOrder'#2#0#0#0#9'TCheckBox'#17'ShowUnitsCheckBox'#4'Le'
|
||||
+'ft'#2#6#6'Height'#2#20#3'Top'#2' '#5'Width'#3#142#0#7'Caption'#6#17'ShowUni'
|
||||
+'tsCheckBox'#8'OnChange'#7#23'ShowUnitsCheckBoxChange'#8'TabOrder'#2#1#0#0#9
|
||||
+'TCheckBox'#23'ShowIdentifiersCheckBox'#4'Left'#2#6#6'Height'#2#20#3'Top'#2
|
||||
+';'#5'Width'#3#168#0#7'Caption'#6#23'ShowIdentifiersCheckBox'#8'OnChange'#7
|
||||
+#29'ShowIdentifiersCheckBoxChange'#8'TabOrder'#2#2#0#0#5'TEdit'#17'PackageFi'
|
||||
+'lterEdit'#21'AnchorSideTop.Control'#7#20'ShowPackagesCheckBox'#18'AnchorSid'
|
||||
+'eTop.Side'#7#9'asrCenter'#4'Left'#3#223#0#6'Height'#2#23#3'Top'#2#3#5'Width'
|
||||
+#3#201#0#13'OnEditingDone'#7#28'PackageFilterEditEditingDone'#8'TabOrder'#2#3
|
||||
+#4'Text'#6#17'PackageFilterEdit'#0#0#5'TEdit'#14'UnitFilterEdit'#21'AnchorSi'
|
||||
+'deTop.Control'#7#17'ShowUnitsCheckBox'#18'AnchorSideTop.Side'#7#9'asrCenter'
|
||||
+#4'Left'#3#223#0#6'Height'#2#23#3'Top'#2#31#5'Width'#3#201#0#13'OnEditingDon'
|
||||
+'e'#7#28'PackageFilterEditEditingDone'#8'TabOrder'#2#4#4'Text'#6#14'UnitFilt'
|
||||
+'erEdit'#0#0#5'TEdit'#20'IdentifierFilterEdit'#21'AnchorSideTop.Control'#7#23
|
||||
+'ShowIdentifiersCheckBox'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#3#223
|
||||
+#0#6'Height'#2#23#3'Top'#2':'#5'Width'#3#201#0#13'OnEditingDone'#7#28'Packag'
|
||||
+'eFilterEditEditingDone'#8'TabOrder'#2#5#4'Text'#6#20'IdentifierFilterEdit'#0
|
||||
+#0#0#10'TImageList'#10'ImageList1'#4'left'#3'*'#1#3'top'#3#196#0#0#0#10'TPop'
|
||||
+'upMenu'#10'PopupMenu1'#7'OnPopup'#7#15'PopupMenu1Popup'#4'left'#3#248#0#3't'
|
||||
+'op'#3#196#0#0#9'TMenuItem'#23'CopyDescriptionMenuItem'#7'Caption'#6#23'Copy'
|
||||
+'DescriptionMenuItem'#7'OnClick'#7#28'CopyDescriptionMenuItemClick'#0#0#9'TM'
|
||||
+'enuItem'#22'CopyIdentifierMenuItem'#7'Caption'#6#22'CopyIdentifierMenuItem'
|
||||
+#7'OnClick'#7#27'CopyIdentifierMenuItemClick'#0#0#9'TMenuItem'#21'CopySepara'
|
||||
+'torMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#25'ExpandAllPackagesMenuIte'
|
||||
+'m'#7'Caption'#6#25'ExpandAllPackagesMenuItem'#7'OnClick'#7#30'ExpandAllPack'
|
||||
+'agesMenuItemClick'#0#0#9'TMenuItem'#27'CollapseAllPackagesMenuItem'#7'Capti'
|
||||
+'on'#6#27'CollapseAllPackagesMenuItem'#7'OnClick'#7' CollapseAllPackagesMenu'
|
||||
+'ItemClick'#0#0#9'TMenuItem'#28'AllPackagesSeparatorMenuItem'#7'Caption'#6#1
|
||||
+'-'#0#0#9'TMenuItem'#22'ExpandAllUnitsMenuItem'#7'Caption'#6#22'ExpandAllUni'
|
||||
+'tsMenuItem'#7'OnClick'#7#27'ExpandAllUnitsMenuItemClick'#0#0#9'TMenuItem'#24
|
||||
+'CollapseAllUnitsMenuItem'#7'Caption'#6#24'CollapseAllUnitsMenuItem'#7'OnCli'
|
||||
+'ck'#7#29'CollapseAllUnitsMenuItemClick'#0#0#9'TMenuItem'#25'AllUnitsSeparat'
|
||||
+'orMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#24'ExpandAllClassesMenuItem'
|
||||
,#7'Caption'#6#24'ExpandAllClassesMenuItem'#7'OnClick'#7#29'ExpandAllClassesM'
|
||||
+'enuItemClick'#0#0#9'TMenuItem'#26'CollapseAllClassesMenuItem'#7'Caption'#6
|
||||
+#26'CollapseAllClassesMenuItem'#7'OnClick'#7#31'CollapseAllClassesMenuItemCl'
|
||||
+'ick'#0#0#9'TMenuItem'#27'AllClassesSeparatorMenuItem'#7'Caption'#6#1'-'#0#0
|
||||
+#9'TMenuItem'#14'ExportMenuItem'#7'Caption'#6#14'ExportMenuItem'#7'OnClick'#7
|
||||
+#19'ExportMenuItemClick'#0#0#0#0
|
||||
]);
|
||||
|
@ -106,6 +106,7 @@ type
|
||||
destructor Destroy; override;
|
||||
procedure Clear;
|
||||
function AddNode(const Description, Identifier: string): TCodeBrowserNode;
|
||||
procedure DeleteNode(var Node: TCodeBrowserNode);
|
||||
property Filename: string read FFilename;
|
||||
property CodeBuffer: TCodeBuffer read FCodeBuffer write SetCodeBuffer;
|
||||
property CodeTool: TCodeTool read FCodeTool write SetCodeTool;
|
||||
@ -253,6 +254,8 @@ type
|
||||
{ TCodeBrowserView }
|
||||
|
||||
TCodeBrowserView = class(TForm)
|
||||
UnitFilterEdit: TEdit;
|
||||
IdentifierFilterEdit: TEdit;
|
||||
PackageFilterEdit: TEdit;
|
||||
ShowIdentifiersCheckBox: TCheckBox;
|
||||
ShowUnitsCheckBox: TCheckBox;
|
||||
@ -283,6 +286,12 @@ type
|
||||
PackageFilterBeginsSpeedButton: TSpeedButton;
|
||||
PackageFilterContainsSpeedButton: TSpeedButton;
|
||||
PackageFilterRegExSpeedButton: TSpeedButton;
|
||||
UnitFilterBeginsSpeedButton: TSpeedButton;
|
||||
UnitFilterContainsSpeedButton: TSpeedButton;
|
||||
UnitFilterRegExSpeedButton: TSpeedButton;
|
||||
IdentifierFilterBeginsSpeedButton: TSpeedButton;
|
||||
IdentifierFilterContainsSpeedButton: TSpeedButton;
|
||||
IdentifierFilterRegExSpeedButton: TSpeedButton;
|
||||
StatusBar1: TStatusBar;
|
||||
procedure BrowseTreeViewMouseDown(Sender: TOBject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
@ -299,6 +308,7 @@ type
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure PackageFilterEditEditingDone(Sender: TObject);
|
||||
procedure PopupMenu1Popup(Sender: TObject);
|
||||
procedure ScopeComboBoxDropDown(Sender: TObject);
|
||||
procedure ScopeComboBoxEditingDone(Sender: TObject);
|
||||
@ -489,6 +499,16 @@ begin
|
||||
ExpandAllClassesMenuItem.Caption:='Expand all classes';
|
||||
CollapseAllClassesMenuItem.Caption:='Collapse all classes';
|
||||
ExportMenuItem.Caption:='Export ...';
|
||||
|
||||
PackageFilterBeginsSpeedButton.Hint:='Package name begins with ...';
|
||||
PackageFilterContainsSpeedButton.Hint:='Package name contains ...';
|
||||
PackageFilterRegExSpeedButton.Hint:='Package name fits regular expression ...';
|
||||
UnitFilterBeginsSpeedButton.Hint:='Unit name begins with ...';
|
||||
UnitFilterContainsSpeedButton.Hint:='Unit name contains ...';
|
||||
UnitFilterRegExSpeedButton.Hint:='Unit name fits regular expression ...';
|
||||
IdentifierFilterBeginsSpeedButton.Hint:='Identifier begins with ...';
|
||||
IdentifierFilterContainsSpeedButton.Hint:='Identifier contains ...';
|
||||
IdentifierFilterRegExSpeedButton.Hint:='Identifier fits regular expression ...';
|
||||
|
||||
InitImageList;
|
||||
LoadOptions;
|
||||
@ -507,6 +527,11 @@ begin
|
||||
FreeAndNil(FOptions);
|
||||
end;
|
||||
|
||||
procedure TCodeBrowserView.PackageFilterEditEditingDone(Sender: TObject);
|
||||
begin
|
||||
fStage:=cbwsGetOptions;
|
||||
end;
|
||||
|
||||
procedure TCodeBrowserView.PopupMenu1Popup(Sender: TObject);
|
||||
var
|
||||
TVNode: TTreeNode;
|
||||
@ -619,6 +644,27 @@ procedure TCodeBrowserView.LoadFilterGroupbox;
|
||||
begin
|
||||
ShowPrivateCheckBox.Checked:=Options.ShowPrivate;
|
||||
ShowProtectedCheckBox.Checked:=Options.ShowProtected;
|
||||
|
||||
PackageFilterEdit.Text:=Options.LevelFilterText[cblPackages];
|
||||
case Options.LevelFilterType[cblPackages] of
|
||||
cbtfBegins: PackageFilterBeginsSpeedButton.Down:=true;
|
||||
cbtfContains: PackageFilterContainsSpeedButton.Down:=true;
|
||||
cbtfRegEx: PackageFilterRegExSpeedButton.Down:=true;
|
||||
end;
|
||||
|
||||
UnitFilterEdit.Text:=Options.LevelFilterText[cblUnits];
|
||||
case Options.LevelFilterType[cblUnits] of
|
||||
cbtfBegins: UnitFilterBeginsSpeedButton.Down:=true;
|
||||
cbtfContains: UnitFilterContainsSpeedButton.Down:=true;
|
||||
cbtfRegEx: UnitFilterRegExSpeedButton.Down:=true;
|
||||
end;
|
||||
|
||||
IdentifierFilterEdit.Text:=Options.LevelFilterText[cblIdentifiers];
|
||||
case Options.LevelFilterType[cblIdentifiers] of
|
||||
cbtfBegins: IdentifierFilterBeginsSpeedButton.Down:=true;
|
||||
cbtfContains: IdentifierFilterContainsSpeedButton.Down:=true;
|
||||
cbtfRegEx: IdentifierFilterRegExSpeedButton.Down:=true;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCodeBrowserView.FillScopeComboBox;
|
||||
@ -745,6 +791,8 @@ begin
|
||||
Options.Scope:=ScopeComboBox.Text;
|
||||
Options.ShowPrivate:=ShowPrivateCheckBox.Checked;
|
||||
Options.ShowProtected:=ShowProtectedCheckBox.Checked;
|
||||
|
||||
// levels
|
||||
NewLevels:=TStringList.Create;
|
||||
if ShowPackagesCheckBox.Checked then
|
||||
NewLevels.Add(CodeBrowserLevelNames[cblPackages]);
|
||||
@ -754,6 +802,32 @@ begin
|
||||
NewLevels.Add(CodeBrowserLevelNames[cblIdentifiers]);
|
||||
Options.Levels:=NewLevels;
|
||||
NewLevels.Free;
|
||||
|
||||
// level filter
|
||||
Options.LevelFilterText[cblPackages]:=PackageFilterEdit.Text;
|
||||
if PackageFilterBeginsSpeedButton.Down then
|
||||
Options.LevelFilterType[cblPackages]:=cbtfBegins;
|
||||
if PackageFilterContainsSpeedButton.Down then
|
||||
Options.LevelFilterType[cblPackages]:=cbtfContains;
|
||||
if PackageFilterRegExSpeedButton.Down then
|
||||
Options.LevelFilterType[cblPackages]:=cbtfRegEx;
|
||||
|
||||
Options.LevelFilterText[cblUnits]:=UnitFilterEdit.Text;
|
||||
DebugLn(['TCodeBrowserView.WorkGetOptions UnitFIlter=',Options.LevelFilterText[cblUnits],' Edit=',UnitFilterEdit.Text]);
|
||||
if UnitFilterBeginsSpeedButton.Down then
|
||||
Options.LevelFilterType[cblUnits]:=cbtfBegins;
|
||||
if UnitFilterContainsSpeedButton.Down then
|
||||
Options.LevelFilterType[cblUnits]:=cbtfContains;
|
||||
if UnitFilterRegExSpeedButton.Down then
|
||||
Options.LevelFilterType[cblUnits]:=cbtfRegEx;
|
||||
|
||||
Options.LevelFilterText[cblIdentifiers]:=IdentifierFilterEdit.Text;
|
||||
if IdentifierFilterBeginsSpeedButton.Down then
|
||||
Options.LevelFilterType[cblIdentifiers]:=cbtfBegins;
|
||||
if IdentifierFilterContainsSpeedButton.Down then
|
||||
Options.LevelFilterType[cblIdentifiers]:=cbtfContains;
|
||||
if IdentifierFilterRegExSpeedButton.Down then
|
||||
Options.LevelFilterType[cblIdentifiers]:=cbtfRegEx;
|
||||
|
||||
// this stage finished -> next stage
|
||||
if UpdateNeeded or Options.Modified then
|
||||
@ -1379,6 +1453,9 @@ var
|
||||
ShowIdentifiers: boolean;
|
||||
ShowPrivate: boolean;
|
||||
ShowProtected: boolean;
|
||||
|
||||
LevelFilterText: array[TCodeBrowserLevel] of string;
|
||||
LevelFilterType: array[TCodeBrowserLevel] of TCodeBrowserTextFilter;
|
||||
|
||||
function GetCodeTool(AnUnit: TCodeBrowserUnit): TCodeTool;
|
||||
begin
|
||||
@ -1391,6 +1468,26 @@ var
|
||||
//DebugLn(['GetCodeTool END ',Result<>nil]);
|
||||
end;
|
||||
|
||||
function IdentifierFitsFilter(LvlType: TCodeBrowserLevel;
|
||||
const Identifier: string): boolean;
|
||||
begin
|
||||
//DebugLn(['IdentifierFitsFilter Identifier=',Identifier,' Filter=',LevelFilterText[LvlType]]);
|
||||
if (LevelFilterText[LvlType]='') then exit(true);
|
||||
if Identifier='' then exit(false);
|
||||
|
||||
case LevelFilterType[LvlType] of
|
||||
cbtfBegins,
|
||||
cbtfRegEx:
|
||||
Result:=ComparePrefixIdent(PChar(Pointer(LevelFilterText[LvlType])),
|
||||
PChar(Pointer(Identifier)));
|
||||
cbtfContains:
|
||||
Result:=IdentifierPos(PChar(Pointer(LevelFilterText[LvlType])),
|
||||
PChar(Pointer(Identifier)))>=0;
|
||||
else
|
||||
Result:=true;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure AddUnitNodes(SrcUnit: TCodeBrowserUnit; var DestUnit: TObject);
|
||||
var
|
||||
Tool: TCodeTool;
|
||||
@ -1468,7 +1565,7 @@ var
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure AddIdentifierNode(CTNode: TCodeTreeNode);
|
||||
var
|
||||
NewNode: TCodeBrowserNode;
|
||||
@ -1486,21 +1583,26 @@ var
|
||||
then
|
||||
exit;
|
||||
GetNodeDescription(ChildCTNode,ChildDescription,ChildIdentifier);
|
||||
NewChildNode:=NewNode.AddNode(ChildDescription,ChildIdentifier);
|
||||
if NewChildNode<>nil then begin
|
||||
NewChildNode.Desc:=ChildCTNode.Desc;
|
||||
Tool.CleanPosToCodePos(ChildCTNode.StartPos,NewChildNode.FCodePos);
|
||||
|
||||
if IdentifierFitsFilter(cblIdentifiers,ChildIdentifier) then begin
|
||||
NewChildNode:=NewNode.AddNode(ChildDescription,ChildIdentifier);
|
||||
if NewChildNode<>nil then begin
|
||||
NewChildNode.Desc:=ChildCTNode.Desc;
|
||||
Tool.CleanPosToCodePos(ChildCTNode.StartPos,NewChildNode.FCodePos);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
Description, Identifier: string;
|
||||
CurUnit: TCodeBrowserUnit;
|
||||
begin
|
||||
if not ShowIdentifiers then exit;
|
||||
AddUnit;
|
||||
CurUnit:=TCodeBrowserUnit(DestUnit);
|
||||
//DebugLn(['AddIdentifierNode ',CTNode.DescAsString,' Description="',Description,'"']);
|
||||
GetNodeDescription(CTNode,Description,Identifier);
|
||||
NewNode:=TCodeBrowserUnit(DestUnit).AddNode(Description,Identifier);
|
||||
NewNode:=CurUnit.AddNode(Description,Identifier);
|
||||
NewNode.Desc:=CTNode.Desc;
|
||||
Tool.CleanPosToCodePos(CTNode.StartPos,NewNode.FCodePos);
|
||||
//DebugLn(['AddIdentifierNode Code=',NewNode.FCodePos.Code<>nil,' P=',NewNode.FCodePos.P]);
|
||||
@ -1525,6 +1627,12 @@ var
|
||||
ChildCTNode:=ChildCTNode.Next;
|
||||
end;
|
||||
end;
|
||||
|
||||
if (NewNode.ChildNodes=nil)
|
||||
and (not IdentifierFitsFilter(cblIdentifiers,Identifier)) then begin
|
||||
// identifier is not needed -> remove
|
||||
CurUnit.DeleteNode(NewNode);
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
@ -1582,23 +1690,26 @@ var
|
||||
NewUnit:=nil;
|
||||
while Node<>nil do begin
|
||||
CurUnit:=TCodeBrowserUnit(Node.Data);
|
||||
if DestParentList=nil then begin
|
||||
DestParentList:=TCodeBrowserUnitList.Create(CodeBrowserHidden,nil);
|
||||
end else if not (DestParentList is TCodeBrowserUnitList) then
|
||||
RaiseParentNotUnitList;
|
||||
if ShowUnits then begin
|
||||
// create a unit node
|
||||
NewUnit:=TCodeBrowserUnitList(DestParentList).AddUnit(CurUnit.Filename);
|
||||
NewUnit.CodeBuffer:=CurUnit.CodeBuffer;
|
||||
NewUnit.CodeTool:=CurUnit.CodeTool;
|
||||
end else if NewUnit=nil then begin
|
||||
// create a dummy unit node to add all identifiers
|
||||
NewUnit:=TCodeBrowserUnitList(DestParentList).AddUnit('');
|
||||
if IdentifierFitsFilter(cblUnits,ExtractFileNameOnly(CurUnit.Filename))
|
||||
then begin
|
||||
if DestParentList=nil then begin
|
||||
DestParentList:=TCodeBrowserUnitList.Create(CodeBrowserHidden,nil);
|
||||
end else if not (DestParentList is TCodeBrowserUnitList) then
|
||||
RaiseParentNotUnitList;
|
||||
if ShowUnits then begin
|
||||
// create a unit node
|
||||
NewUnit:=TCodeBrowserUnitList(DestParentList).AddUnit(CurUnit.Filename);
|
||||
NewUnit.CodeBuffer:=CurUnit.CodeBuffer;
|
||||
NewUnit.CodeTool:=CurUnit.CodeTool;
|
||||
end else if NewUnit=nil then begin
|
||||
// create a dummy unit node to add all identifiers
|
||||
NewUnit:=TCodeBrowserUnitList(DestParentList).AddUnit('');
|
||||
end;
|
||||
//DebugLn(['AddUnits AddUnitNodes ',CurUnit.Filename]);
|
||||
AddUnitNodes(CurUnit,NewUnit);
|
||||
if (DestParentList=nil) then
|
||||
DestParentList:=NewUnit;
|
||||
end;
|
||||
//DebugLn(['AddUnits AddUnitNodes ',CurUnit.Filename]);
|
||||
AddUnitNodes(CurUnit,NewUnit);
|
||||
if (DestParentList=nil) then
|
||||
DestParentList:=NewUnit;
|
||||
Node:=SrcList.Units.FindSuccessor(Node);
|
||||
end;
|
||||
end;
|
||||
@ -1613,6 +1724,10 @@ var
|
||||
begin
|
||||
if SrcList=nil then exit;
|
||||
//DebugLn(['AddUnitLists SrcList.Owner="',SrcList.Owner,'"']);
|
||||
|
||||
// check filter
|
||||
if not IdentifierFitsFilter(cblPackages,SrcList.Owner) then exit;
|
||||
|
||||
// create node
|
||||
if ShowPackages then begin
|
||||
if DestParentList=nil then begin
|
||||
@ -1733,12 +1848,20 @@ var
|
||||
|
||||
var
|
||||
RootTVNode: TTreeNode;
|
||||
lvl: TCodeBrowserLevel;
|
||||
begin
|
||||
ShowPackages:=Options.HasLevel(cblPackages);
|
||||
ShowUnits:=Options.HasLevel(cblUnits);
|
||||
ShowIdentifiers:=Options.HasLevel(cblIdentifiers);
|
||||
ShowPrivate:=Options.ShowPrivate;
|
||||
ShowProtected:=Options.ShowProtected;
|
||||
|
||||
for lvl:=Low(TCodeBrowserLevel) to High(TCodeBrowserLevel) do begin
|
||||
LevelFilterText[lvl]:=Options.LevelFilterText[lvl];
|
||||
LevelFilterType[lvl]:=Options.LevelFilterType[lvl];
|
||||
end;
|
||||
DebugLn(['TCodeBrowserView.UpdateTreeView UnitFilter=',LevelFilterText[cblUnits]]);
|
||||
|
||||
DebugLn(['TCodeBrowserView.UpdateTreeView ShowPackages=',ShowPackages,' ShowUnits=',ShowUnits]);
|
||||
|
||||
BrowseTreeView.BeginUpdate;
|
||||
@ -2230,6 +2353,14 @@ begin
|
||||
FChildNodes.Add(Result);
|
||||
end;
|
||||
|
||||
procedure TCodeBrowserUnit.DeleteNode(var Node: TCodeBrowserNode);
|
||||
begin
|
||||
if Node=nil then exit;
|
||||
if ChildNodes<>nil then
|
||||
FChildNodes.RemovePointer(Node);
|
||||
FreeAndNil(Node);
|
||||
end;
|
||||
|
||||
{ TCodeBrowserUnitList }
|
||||
|
||||
procedure TCodeBrowserUnitList.SetOwner(const AValue: string);
|
||||
@ -2437,13 +2568,14 @@ var
|
||||
begin
|
||||
FLevels.Clear;
|
||||
FLevels.Text:=CodeBrowserLevelNames[cblPackages]+#13
|
||||
+CodeBrowserLevelNames[cblUnits];
|
||||
+CodeBrowserLevelNames[cblUnits]+#13
|
||||
+CodeBrowserLevelNames[cblIdentifiers];
|
||||
WithRequiredPackages:=false;
|
||||
ShowPrivate:=false;
|
||||
ShowProtected:=true;
|
||||
Scope:='Project';
|
||||
for l:=Low(TCodeBrowserLevel) to High(TCodeBrowserLevel) do begin
|
||||
FLevelFilterType[l]:=cbtfBegins;
|
||||
FLevelFilterType[l]:=cbtfContains;
|
||||
FLevelFilterText[l]:='';
|
||||
end;
|
||||
Modified:=false;
|
||||
|
@ -3148,6 +3148,7 @@ begin
|
||||
ItemCnt:=CodeToolBoss.IdentifierList.GetFilteredCount;
|
||||
SL:=TStringList.Create;
|
||||
try
|
||||
sl.Capacity:=ItemCnt;
|
||||
for i:=0 to ItemCnt-1 do
|
||||
SL.Add('Dummy'); // these entries are not shown
|
||||
CurCompletionControl.ItemList:=SL;
|
||||
|
Loading…
Reference in New Issue
Block a user