30 |
|
VTHPopup: TVTHeaderPopupMenu; |
31 |
|
btn_export: TButton; |
32 |
|
btn_import: TButton; |
33 |
+ |
vst_popup: TPopupMenu; |
34 |
+ |
vst_newRoot: TMenuItem; |
35 |
+ |
vst_setRoot: TMenuItem; |
36 |
|
procedure FormCreate(Sender: TObject); |
37 |
|
procedure VSTInitChildren(Sender: TBaseVirtualTree; Node: PVirtualNode; |
38 |
|
var ChildCount: Cardinal); |
47 |
|
procedure VSTPaintText(Sender: TBaseVirtualTree; |
48 |
|
const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; |
49 |
|
TextType: TVSTTextType); |
50 |
+ |
procedure VSTGetPopupMenu(Sender: TBaseVirtualTree; Node: PVirtualNode; |
51 |
+ |
Column: TColumnIndex; const P: TPoint; var AskParent: Boolean; |
52 |
+ |
var PopupMenu: TPopupMenu); |
53 |
+ |
procedure vst_setRootClick(Sender: TObject); |
54 |
|
private |
55 |
|
root: TTreeElement; |
56 |
|
procedure NewCon(ID: Integer); |
57 |
|
public |
58 |
+ |
procedure SetRoot(TreeElem: TTreeElement); |
59 |
|
end; |
60 |
|
|
61 |
|
|
83 |
|
|
84 |
|
|
85 |
|
procedure TForm_Meta.NewCon(ID: Integer); |
86 |
+ |
begin |
87 |
+ |
if ID >= 0 then |
88 |
+ |
SetRoot(ConManager.Connection[FConnectionID].MetaData.Root); |
89 |
+ |
end; |
90 |
+ |
|
91 |
+ |
|
92 |
+ |
procedure TForm_Meta.SetRoot(TreeElem: TTreeElement); |
93 |
|
var |
94 |
|
i: Integer; |
95 |
|
data: TNodeData; |
96 |
|
node: PVirtualNode; |
82 |
– |
Meta: TMetaManager; |
83 |
– |
root: TTreeElement; |
97 |
|
begin |
98 |
< |
if ID >= 0 then |
99 |
< |
begin |
100 |
< |
//VST |
101 |
< |
VST.Clear; |
102 |
< |
VST.BeginUpdate; |
103 |
< |
// root := ConManager.Connection[FConnectionID].MetaData.Root; |
104 |
< |
root := ConManager.Connection[FConnectionID].MetaData.FileById[454]; |
105 |
< |
for i := 0 to root.ChildCount - 1 do |
106 |
< |
begin |
107 |
< |
data.Field := root.Child[i]; |
95 |
< |
node := AddVSTEntry(VST, nil, data); |
98 |
> |
if FConnectionID <> TreeElem.ConnectionID then |
99 |
> |
SelectConnection(TreeElem.ConnectionID); |
100 |
> |
root := TreeElem; |
101 |
> |
VST.Clear; |
102 |
> |
VST.BeginUpdate; |
103 |
> |
for i := 0 to root.ChildCount - 1 do |
104 |
> |
begin |
105 |
> |
data.Field := root.Child[i]; |
106 |
> |
node := AddVSTEntry(VST, nil, data); |
107 |
> |
if data.Field.ChildCount > 0 then |
108 |
|
VST.HasChildren[node] := True; |
97 |
– |
end; |
98 |
– |
VST.EndUpdate; |
109 |
|
end; |
110 |
+ |
VST.EndUpdate; |
111 |
|
end; |
112 |
|
|
102 |
– |
|
113 |
|
procedure TForm_Meta.VSTInitChildren(Sender: TBaseVirtualTree; |
114 |
|
Node: PVirtualNode; var ChildCount: Cardinal); |
115 |
|
var |
248 |
|
|
249 |
|
|
250 |
|
|
251 |
+ |
procedure TForm_Meta.VSTGetPopupMenu(Sender: TBaseVirtualTree; |
252 |
+ |
Node: PVirtualNode; Column: TColumnIndex; const P: TPoint; |
253 |
+ |
var AskParent: Boolean; var PopupMenu: TPopupMenu); |
254 |
+ |
var |
255 |
+ |
data: PNodeData; |
256 |
+ |
begin |
257 |
+ |
inherited; |
258 |
+ |
AskParent := False; |
259 |
+ |
if Assigned(Node) then |
260 |
+ |
begin |
261 |
+ |
Sender.Selected[Node] := True; |
262 |
+ |
Sender.FocusedNode := Node; |
263 |
+ |
data := Sender.GetNodeData(Node); |
264 |
+ |
if Column = 0 then |
265 |
+ |
begin |
266 |
+ |
if TTreeElement(data.Field).GetChildCount > 0 then |
267 |
+ |
PopupMenu := vst_popup |
268 |
+ |
else |
269 |
+ |
PopupMenu := nil; |
270 |
+ |
end; |
271 |
+ |
end; |
272 |
+ |
end; |
273 |
+ |
|
274 |
+ |
procedure TForm_Meta.vst_setRootClick(Sender: TObject); |
275 |
+ |
var |
276 |
+ |
data: PNodeData; |
277 |
+ |
begin |
278 |
+ |
inherited; |
279 |
+ |
data := VST.GetNodeData(VST.FocusedNode); |
280 |
+ |
SetRoot(data.Field); |
281 |
+ |
end; |
282 |
+ |
|
283 |
|
procedure TForm_Meta.FormClose(Sender: TObject; var Action: TCloseAction); |
284 |
|
begin |
285 |
|
// Meta.Free; |