Skip to content

Commit fa636b1

Browse files
committed
Add ide component editor
1 parent 1d74f37 commit fa636b1

File tree

4 files changed

+83
-16
lines changed

4 files changed

+83
-16
lines changed

Source/VTIDEEditors.pas

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
unit VTIDEEditors;
2+
3+
{$mode objfpc}{$H+}
4+
5+
interface
6+
7+
uses
8+
ComponentEditors, PropEdits, VirtualTrees;
9+
10+
type
11+
12+
// The usual trick to make a protected property accessible in the ShowCollectionEditor call below.
13+
TVirtualTreeCast = class(TBaseVirtualTree);
14+
15+
{ TVirtualTreeEditor }
16+
17+
TVirtualTreeEditor = class(TComponentEditor)
18+
public
19+
procedure Edit; override;
20+
function GetVerbCount: Integer; override;
21+
function GetVerb(Index: Integer): string; override;
22+
procedure ExecuteVerb(Index: Integer); override;
23+
end;
24+
25+
implementation
26+
27+
{ TVirtualTreeEditor }
28+
29+
procedure TVirtualTreeEditor.Edit;
30+
var
31+
Tree: TVirtualTreeCast;
32+
begin
33+
Tree := TVirtualTreeCast(GetComponent);
34+
TCollectionPropertyEditor.ShowCollectionEditor(Tree.Header.Columns, Tree, 'Columns');
35+
end;
36+
37+
function TVirtualTreeEditor.GetVerbCount: Integer;
38+
begin
39+
Result := 1;
40+
end;
41+
42+
function TVirtualTreeEditor.GetVerb(Index: Integer): string;
43+
begin
44+
case Index of
45+
0: Result := 'Edit Columns...';
46+
end;
47+
end;
48+
49+
procedure TVirtualTreeEditor.ExecuteVerb(Index: Integer);
50+
begin
51+
case Index of
52+
0: Edit;
53+
end;
54+
end;
55+
56+
end.
57+

Source/registervirtualtreeview.pas

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@
44
{$H+}
55

66
interface
7-
8-
uses
9-
Classes, SysUtils, LResources, LazarusPackageIntf,
10-
VirtualTrees, VTHeaderPopup;
117

128
procedure Register;
139

1410
implementation
1511

12+
uses
13+
Classes, SysUtils, LResources, LazarusPackageIntf,
14+
VirtualTrees, VTHeaderPopup, VTIDEEditors, ComponentEditors;
15+
16+
1617
procedure RegisterUnitVirtualTrees;
1718
begin
1819
RegisterComponents('Virtual Controls', [TVirtualDrawTree, TVirtualStringTree]);
@@ -26,9 +27,10 @@ procedure RegisterUnitVTHeaderPopup;
2627
procedure Register;
2728

2829
begin
30+
RegisterComponentEditor([TVirtualDrawTree, TVirtualStringTree], TVirtualTreeEditor);
2931
RegisterUnit('VirtualTrees', @RegisterUnitVirtualTrees);
3032
RegisterUnit('VTHeaderPopup', @RegisterUnitVTHeaderPopup);
31-
end;
33+
end;
3234

3335
initialization
3436
{$i ideicons.lrs}

Source/virtualtreeview_package.lpk

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ end;"/>
4141
<License Value=" Mozilla Public License 1.1 (MPL 1.1) or GNU Lesser General Public License
4242
"/>
4343
<Version Major="5" Minor="3" Release="2" Build="1"/>
44-
<Files Count="7">
44+
<Files Count="8">
4545
<Item1>
4646
<Filename Value="VirtualTrees.pas"/>
4747
<UnitName Value="VirtualTrees"/>
@@ -71,15 +71,22 @@ end;"/>
7171
<Filename Value="VirtualTrees.res"/>
7272
<Type Value="Binary"/>
7373
</Item7>
74+
<Item8>
75+
<Filename Value="VTIDEEditors.pas"/>
76+
<UnitName Value="VTIDEEditors"/>
77+
</Item8>
7478
</Files>
75-
<RequiredPkgs Count="2">
79+
<RequiredPkgs Count="3">
7680
<Item1>
77-
<PackageName Value="lclextensions_package"/>
78-
<MinVersion Minor="5" Valid="True"/>
81+
<PackageName Value="IDEIntf"/>
7982
</Item1>
8083
<Item2>
81-
<PackageName Value="LCL"/>
84+
<PackageName Value="lclextensions_package"/>
85+
<MinVersion Minor="5" Valid="True"/>
8286
</Item2>
87+
<Item3>
88+
<PackageName Value="LCL"/>
89+
</Item3>
8390
</RequiredPkgs>
8491
<UsageOptions>
8592
<UnitPath Value="$(PkgOutDir)"/>

Source/virtualtreeview_package.pas

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,22 @@
22
This source is only used to compile and install the package.
33
}
44

5-
unit virtualtreeview_package;
5+
unit virtualtreeview_package;
66

7+
{$warn 5023 off : no warning about unused units}
78
interface
89

910
uses
1011
VirtualTrees, VTHeaderPopup, registervirtualtreeview, VTGraphics,
11-
LazarusPackageIntf;
12+
VTIDEEditors, LazarusPackageIntf;
1213

1314
implementation
1415

15-
procedure Register;
16+
procedure Register;
1617
begin
17-
RegisterUnit('registervirtualtreeview', @registervirtualtreeview.Register);
18-
end;
18+
RegisterUnit('registervirtualtreeview', @registervirtualtreeview.Register);
19+
end;
1920

2021
initialization
21-
RegisterPackage('virtualtreeview_package', @Register);
22+
RegisterPackage('virtualtreeview_package', @Register);
2223
end.

0 commit comments

Comments
 (0)