| 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; |