| 52 |  | var PopupMenu: TPopupMenu); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 53 |  | procedure vst_setRootClick(Sender: TObject); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 54 |  | procedure vst_newRootClick(Sender: TObject); | 
 
 
 
 
 
 
 
 | 55 | + | procedure VSTGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode; | 
 
 
 
 
 
 
 
 | 56 | + | Column: TColumnIndex; var LineBreakStyle: TVTTooltipLineBreakStyle; | 
 
 
 
 
 
 
 
 | 57 | + | var HintText: WideString); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 58 |  | private | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 59 |  | root: TTreeElement; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 60 |  | procedure NewCon(ID: Integer); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 65 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 66 |  | implementation | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 67 |  | {$R *.dfm} | 
 
 
 
 
 
 
 
 
 
 
 | 68 | < | uses _MetaManager, _MetaTypes, ConnectionManager, Data, _FileTypes, Main; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 68 | > | uses _MetaManager, _MetaTypes, ConnectionManager, Data, _FileTypes, Main, | 
 
 
 
 
 | 69 | > | TypeDefs; | 
 
 
 
 
 
 
 
 
 
 
 | 70 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 71 |  | type | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 72 |  | PNodeData = ^TNodeData; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 91 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 92 |  | if ID >= 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 93 |  | SetRoot(ConManager.Connection[FConnectionID].MetaData.Root); | 
 
 
 
 
 
 
 
 | 94 | + | //SetRoot(ConManager.Connection[FConnectionID].MetaData.FileById[454]); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 95 |  | end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 96 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 97 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 123 |  | newdata: TNodeData; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 124 |  | newnode: PVirtualNode; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 125 |  | i: Integer; | 
 
 
 
 
 
 
 
 
 | 121 | – | Meta: TMetaManager; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 126 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 127 |  | data := Sender.GetNodeData(node); | 
 
 
 
 
 
 
 
 
 | 124 | – | Meta := ConManager.Connection[ConnectionID].MetaData; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 128 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 129 |  | if data.Field.ChildCount > 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 130 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 154 |  | ffile := nil; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 155 |  | if data.Field is TFile then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 156 |  | ffile := TFile(data.Field); | 
 
 
 
 
 
 
 
 
 
 
 | 157 | < | if data.Field is TDatLink then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 158 | < | if Assigned(TDatLink(data.Field).TargetFile) then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 159 | < | ffile := TFile(TDatLink(data.Field).TargetFile); | 
 
 
 
 
 
 
 
 
 | 157 | > | if data.Field is _MetaTypes.TDatLink then | 
 
 
 
 
 | 158 | > | if Assigned(_MetaTypes.TDatLink(data.Field).TargetFile) then | 
 
 
 
 
 | 159 | > | ffile := TFile(_MetaTypes.TDatLink(data.Field).TargetFile); | 
 
 
 
 
 
 
 
 
 
 
 | 160 |  | if Assigned(ffile) then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 161 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 162 |  | if Assigned(ffile.Editor) then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 216 |  | if TextType = ttNormal then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 217 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 218 |  | case Column of | 
 
 
 
 
 
 
 
 
 
 
 | 219 | < | 0: | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 220 | < | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 218 | < | CellText := Data.Field.GetCaption; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 219 | < | end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 220 | < | 1: | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 221 | < | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 222 | < | if Data.Field is TFile then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 223 | < | CellText := TFile(Data.Field).FileInfo.Extension; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 224 | < | end; | 
 
 
 
 
 
 
 
 
 | 219 | > | 0: CellText := Data.Field.Caption; | 
 
 
 
 
 | 220 | > | 1: CellText := data.Field.VType; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 221 |  | 2: | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 222 |  | begin | 
 
 
 
 
 
 
 
 
 | 227 | – | if Data.Field is TFile then | 
 
 
 
 
 
 
 
 
 | 228 | – | CellText := IntToStr(TFile(Data.Field).FileInfo.ID); | 
 
 
 
 
 
 
 
 
 | 229 | – | end; | 
 
 
 
 
 
 
 
 
 | 230 | – | 3: | 
 
 
 
 
 
 
 
 
 | 231 | – | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 223 |  | if Data.Field is TDataField then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 224 |  | CellText := TDataField(Data.Field).ValueAsString; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 225 |  | end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 254 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 255 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 256 |  |  | 
 
 
 
 
 
 
 
 | 257 | + | procedure TForm_Meta.VSTGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode; | 
 
 
 
 
 
 
 
 | 258 | + | Column: TColumnIndex; var LineBreakStyle: TVTTooltipLineBreakStyle; | 
 
 
 
 
 
 
 
 | 259 | + | var HintText: WideString); | 
 
 
 
 
 
 
 
 | 260 | + | var | 
 
 
 
 
 
 
 
 | 261 | + | data: PNodeData; | 
 
 
 
 
 
 
 
 | 262 | + | CellText: WideString; | 
 
 
 
 
 
 
 
 | 263 | + |  | 
 
 
 
 
 
 
 
 | 264 | + | i: Integer; | 
 
 
 
 
 
 
 
 | 265 | + | links: TStrings; | 
 
 
 
 
 
 
 
 | 266 | + | begin | 
 
 
 
 
 
 
 
 | 267 | + | inherited; | 
 
 
 
 
 
 
 
 | 268 | + | if Assigned(Node) then | 
 
 
 
 
 
 
 
 | 269 | + | begin | 
 
 
 
 
 
 
 
 | 270 | + | VSTGetText(Sender, Node, Column, ttNormal, CellText); | 
 
 
 
 
 
 
 
 | 271 | + | if Length(CellText) > 0 then | 
 
 
 
 
 
 
 
 | 272 | + | begin | 
 
 
 
 
 
 
 
 | 273 | + | data := Sender.GetNodeData(Node); | 
 
 
 
 
 
 
 
 | 274 | + | if data.Field is TDataField then | 
 
 
 
 
 
 
 
 | 275 | + | begin | 
 
 
 
 
 
 
 
 | 276 | + | case Column of | 
 
 
 
 
 
 
 
 | 277 | + | 0,1: HintText := TDataField(data.Field).Description; | 
 
 
 
 
 
 
 
 | 278 | + | 2: HintText := ''; | 
 
 
 
 
 
 
 
 | 279 | + | end; | 
 
 
 
 
 
 
 
 | 280 | + | end; | 
 
 
 
 
 
 
 
 | 281 | + | if (data.Field is _MetaTypes.TDatLink) and (Column = 2) then | 
 
 
 
 
 
 
 
 | 282 | + | begin | 
 
 
 
 
 
 
 
 | 283 | + | links := nil; | 
 
 
 
 
 
 
 
 | 284 | + | links := ConManager.Connection[FConnectionID].GetFilesList(_MetaTypes.TDatLink(data.Field).PosExts, '', False, ST_NameAsc); | 
 
 
 
 
 
 
 
 | 285 | + | HintText := IntToStr(links.Count); | 
 
 
 
 
 
 
 
 | 286 | + | for i := 0 to Min(links.Count - 1, 99) do | 
 
 
 
 
 
 
 
 | 287 | + | begin | 
 
 
 
 
 
 
 
 | 288 | + | if (i mod 5) = 0 then | 
 
 
 
 
 
 
 
 | 289 | + | HintText := HintText + #13+#10; | 
 
 
 
 
 
 
 
 | 290 | + | HintText := HintText + links.Strings[i] + '       '; | 
 
 
 
 
 
 
 
 | 291 | + | end; | 
 
 
 
 
 
 
 
 | 292 | + | end; | 
 
 
 
 
 
 
 
 | 293 | + | end; | 
 
 
 
 
 
 
 
 | 294 | + | end | 
 
 
 
 
 
 
 
 | 295 | + | else | 
 
 
 
 
 
 
 
 | 296 | + | HintText := ''; | 
 
 
 
 
 
 
 
 | 297 | + | end; | 
 
 
 
 
 
 
 
 | 298 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 299 |  | procedure TForm_Meta.VSTGetPopupMenu(Sender: TBaseVirtualTree; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 300 |  | Node: PVirtualNode; Column: TColumnIndex; const P: TPoint; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 301 |  | var AskParent: Boolean; var PopupMenu: TPopupMenu); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 311 |  | data := Sender.GetNodeData(Node); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 312 |  | if Column = 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 313 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 | 314 | < | if TTreeElement(data.Field).GetChildCount > 0 then | 
 
 
 
 
 
 
 
 
 | 314 | > | if TTreeElement(data.Field).ChildCount > 0 then | 
 
 
 
 
 
 
 
 
 
 
 | 315 |  | PopupMenu := vst_popup | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 316 |  | else | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 317 |  | PopupMenu := nil; |