| 8 | 
   | 
   ComCtrls, TypeDefs, VirtualTrees; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 9 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 10 | 
   | 
 type | 
 
 
 
 
 
 
 
 
 | 11 | 
 + | 
   TNewFileSelectingEvent = procedure(FileInfo: TFileInfo; var allowed: Boolean) of object; | 
 
 
 
 
 
 
 
 
 | 12 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 13 | 
   | 
   TForm_TemplateFileList = class(TForm_TemplateFile) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 14 | 
   | 
     panel_files: TPanel; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 15 | 
   | 
     splitter_content: TSplitter; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 63 | 
   | 
     procedure filelist_metaPaintText(Sender: TBaseVirtualTree; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 64 | 
   | 
       const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 65 | 
   | 
       TextType: TVSTTextType); | 
 
 
 
 
 
 
 
 
 | 66 | 
 + | 
     procedure filelist_metaFocusChanging(Sender: TBaseVirtualTree; OldNode, | 
 
 
 
 
 
 
 
 
 | 67 | 
 + | 
       NewNode: PVirtualNode; OldColumn, NewColumn: TColumnIndex; | 
 
 
 
 
 
 
 
 
 | 68 | 
 + | 
       var Allowed: Boolean); | 
 
 
 
 
 
 
 
 
 | 69 | 
 + | 
     procedure filelist_metaFocusChanged(Sender: TBaseVirtualTree; | 
 
 
 
 
 
 
 
 
 | 70 | 
 + | 
       Node: PVirtualNode; Column: TColumnIndex); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 71 | 
   | 
   private | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 72 | 
   | 
     FSortBy: TSortType; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 73 | 
   | 
     FAllowedExts: String; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 74 | 
   | 
     FAllowMultiSelect: Boolean; | 
 
 
 
 
 
 
 
 
 | 75 | 
 + | 
     FOnNewFileSelecting: TNewFileSelectingEvent; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 76 | 
   | 
     procedure SetAllowedExts(exts: String); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 77 | 
   | 
     procedure SetMultiSelect(allow: Boolean); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 78 | 
   | 
   public | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 82 | 
   | 
     procedure SetFileFilters(pattern, extension: String; zerobytes: Boolean); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 83 | 
   | 
     property AllowedExts: String read FAllowedExts write SetAllowedExts; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 84 | 
   | 
     property AllowMultiSelect: Boolean read FAllowMultiSelect write SetMultiSelect; | 
 
 
 
 
 
 
 
 
 | 85 | 
 + | 
     property OnNewFileSelecting: TNewFileSelectingEvent read FOnNewFileSelecting write FOnNewFileSelecting; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 86 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 87 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 88 | 
   | 
 implementation | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 412 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 413 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 414 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 415 | 
 + | 
 procedure TForm_TemplateFileList.filelist_metaFocusChanged( | 
 
 
 
 
 
 
 
 
 | 416 | 
 + | 
   Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex); | 
 
 
 
 
 
 
 
 
 | 417 | 
 + | 
 var | 
 
 
 
 
 
 
 
 
 | 418 | 
 + | 
   data: PNodeData; | 
 
 
 
 
 
 
 
 
 | 419 | 
 + | 
 begin | 
 
 
 
 
 
 
 
 
 | 420 | 
 + | 
   inherited; | 
 
 
 
 
 
 
 
 
 | 421 | 
 + | 
   data := Sender.GetNodeData(Node); | 
 
 
 
 
 
 
 
 
 | 422 | 
 + | 
   if data.Field is TFile then | 
 
 
 
 
 
 
 
 
 | 423 | 
 + | 
   begin | 
 
 
 
 
 
 
 
 
 | 424 | 
 + | 
     if Assigned(FOnNewFileSelected) then | 
 
 
 
 
 
 
 
 
 | 425 | 
 + | 
     begin | 
 
 
 
 
 
 
 
 
 | 426 | 
 + | 
       FOnNewFileSelected(TFile(data.Field).FileInfo); | 
 
 
 
 
 
 
 
 
 | 427 | 
 + | 
     end; | 
 
 
 
 
 
 
 
 
 | 428 | 
 + | 
   end; | 
 
 
 
 
 
 
 
 
 | 429 | 
 + | 
 end; | 
 
 
 
 
 
 
 
 
 | 430 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 431 | 
 + | 
 procedure TForm_TemplateFileList.filelist_metaFocusChanging( | 
 
 
 
 
 
 
 
 
 | 432 | 
 + | 
   Sender: TBaseVirtualTree; OldNode, NewNode: PVirtualNode; OldColumn, | 
 
 
 
 
 
 
 
 
 | 433 | 
 + | 
   NewColumn: TColumnIndex; var Allowed: Boolean); | 
 
 
 
 
 
 
 
 
 | 434 | 
 + | 
 var | 
 
 
 
 
 
 
 
 
 | 435 | 
 + | 
   data: PNodeData; | 
 
 
 
 
 
 
 
 
 | 436 | 
 + | 
 begin | 
 
 
 
 
 
 
 
 
 | 437 | 
 + | 
   inherited; | 
 
 
 
 
 
 
 
 
 | 438 | 
 + | 
   data := Sender.GetNodeData(NewNode); | 
 
 
 
 
 
 
 
 
 | 439 | 
 + | 
   if data.Field is TFile then | 
 
 
 
 
 
 
 
 
 | 440 | 
 + | 
   begin | 
 
 
 
 
 
 
 
 
 | 441 | 
 + | 
     if Assigned(FOnNewFileSelecting) then | 
 
 
 
 
 
 
 
 
 | 442 | 
 + | 
     begin | 
 
 
 
 
 
 
 
 
 | 443 | 
 + | 
       FOnNewFileSelecting(TFile(data.Field).FileInfo, Allowed); | 
 
 
 
 
 
 
 
 
 | 444 | 
 + | 
     end; | 
 
 
 
 
 
 
 
 
 | 445 | 
 + | 
   end; | 
 
 
 
 
 
 
 
 
 | 446 | 
 + | 
 end; | 
 
 
 
 
 
 
 
 
 | 447 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 448 | 
   | 
 procedure TForm_TemplateFileList.filelist_metaGetText(Sender: TBaseVirtualTree; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 449 | 
   | 
   Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 450 | 
   | 
   var CellText: WideString); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 459 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 460 | 
   | 
   if data.Field is TFile then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 461 | 
   | 
   begin | 
 
 
 
 
 
 
 
 
 
 
 
 | 462 | 
 < | 
     if TFile(data.Field).FileName = '' then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 463 | 
 < | 
       CellText := TFile(data.Field).FileExt + ' (unnamed)' | 
 
 
 
 
 
 
 
 
 
 | 462 | 
 > | 
     if TFile(data.Field).FileInfo.Name = '' then | 
 
 
 
 
 
 | 463 | 
 > | 
       CellText := TFile(data.Field).FileInfo.Extension + ' (unnamed)' | 
 
 
 
 
 
 
 
 
 
 
 
 | 464 | 
   | 
     else | 
 
 
 
 
 
 
 
 
 
 
 
 | 465 | 
 < | 
       CellText := TFile(data.Field).FileExt + ': ' + TFile(data.Field).FileName; | 
 
 
 
 
 
 
 
 
 
 | 465 | 
 > | 
       CellText := TFile(data.Field).FileInfo.Extension + ': ' + TFile(data.Field).FileInfo.Name; | 
 
 
 
 
 
 
 
 
 
 
 
 | 466 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 467 | 
   | 
 end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 468 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 520 | 
   | 
   Data     := Sender.GetNodeData(Node); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 521 | 
   | 
   if Data.Field is TFile then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 522 | 
   | 
   begin | 
 
 
 
 
 
 
 
 
 
 
 
 | 523 | 
 < | 
     if Length(TFile(Data.Field).FileName) = 0 then | 
 
 
 
 
 
 
 
 
 
 | 523 | 
 > | 
     if Length(TFile(Data.Field).FileInfo.Name) = 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 | 524 | 
   | 
       TargetCanvas.Font.Color := $C06060; | 
 
 
 
 
 
 
 
 
 
 
 
 | 525 | 
 < | 
     if TFile(Data.Field).FileSize = 0 then | 
 
 
 
 
 
 
 
 
 
 | 525 | 
 > | 
     if TFile(Data.Field).FileInfo.Size = 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 | 526 | 
   | 
       TargetCanvas.Font.Color := $2020A0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 527 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 528 | 
   | 
 end; |