/
VSTPopup.pas
95 lines (82 loc) · 2.53 KB
/
VSTPopup.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
unit VSTPopup;
interface
uses
Menus, VirtualTrees, Classes, iniFiles, SysUtils;
{type
TVSTPopUpMenu = class(TPopUpMenu)
private
procedure MenuPopup(Sender: TObject);
procedure MenuItemClick(Sender: TObject);
public
VST: TVirtualStringTree;
constructor Create(AOwner: TComponent);
end;}
procedure LoadVSTHeaders(VST: TVirtualStringTree; ini: TIniFile;
Section: String);
procedure SaveVSTHeaders(VST: TVirtualStringTree; ini: TIniFile;
Section: String);
implementation
{constructor TVSTPopUpMenu.Create(AOwner: TComponent);
begin
inherited;
OnPopup := MenuPopup;
end;
procedure TVSTPopUpMenu.MenuPopup(Sender: TObject);
var i: integer;
item: TMenuItem;
begin
Items.Clear;
//--- erstelle popup für headers ---------------------------------------------
for i := 1 to VST.Header.Columns.Count-1 do //weil erste spalte weglassen!
begin
item := TMenuItem.Create(Self);
item.Caption := VST.Header.Columns[i].Text;
item.Tag := i;
item.Checked := (coVisible in VST.Header.Columns[i].Options);
item.OnClick := MenuItemClick;
Items.Add(item);
end;
//--- erstelle popup für headers - fertig ------------------------------------
end;
procedure TVSTPopUpMenu.MenuItemClick(Sender: TObject);
var opt: TVTColumnOptions;
begin
with Sender as TMenuItem do
begin
Checked := not Checked;
opt := VST.Header.Columns[tag].Options;
if Checked then Include(opt,coVisible)
else Exclude(opt,coVisible);
VST.Header.Columns[tag].Options := opt;
end;
end; }
procedure LoadVSTHeaders(VST: TVirtualStringTree; ini: TIniFile;
Section: String);
var i: Integer;
opt: TVTColumnOptions;
b: Boolean;
begin
for i := 0 to VST.Header.Columns.Count-1 do
with VST.Header.Columns[i] do
begin
Width := ini.ReadInteger(Section,'SpW_'+IntToStr(i),Width);
Position := ini.ReadInteger(Section,'SpP_'+IntToStr(i),Position);
opt := Options;
b := ini.ReadBool(Section,'SpV_'+IntToStr(i),coVisible in Options);
if b then Include(opt,coVisible) else Exclude(opt,coVisible);
Options := Opt;
end;
end;
procedure SaveVSTHeaders(VST: TVirtualStringTree; ini: TIniFile;
Section: String);
var i: Integer;
begin
for i := 0 to VST.Header.Columns.Count-1 do
with VST.Header.Columns[i] do
begin
ini.WriteInteger(Section,'SpW_'+IntToStr(i),Width);
ini.WriteInteger(Section,'SpP_'+IntToStr(i),Position);
ini.WriteBool(Section,'SpV_'+IntToStr(i),coVisible in Options);
end;
end;
end.