home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 June / Chip_2002-06_cd1.bin / zkuste / delphi / kompon / d3456 / FILEEXPL.ZIP / Demo1 / FileExpl2873_Demo1Main.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2002-03-08  |  22.0 KB  |  760 lines

  1. {=============================================================================}
  2. {  LsFileExplorer28 Demo1 (version 2.872)                                      }
  3. {=============================================================================}
  4. {
  5. This Demo was compiled by Delphi 6.  DFM files (ie. FileExpl28_Demo1Main.dfm,
  6. About.dfm and FileDate.dfm) are saved in binary format, instead of its default
  7. TextFormat,  thus they will be bachwards compatible with previous versions of
  8. Delphi.
  9.  
  10. If you want to re-compile it under Delphi 5, 4 or 3, just load all files (including
  11. FileExpl28_Demo1.dpr, FileExpl28_Demo1Main.pas, About.pas and FileDate.pas) into
  12. Delphi's IDE befor rebuilding it. However, under D3 you'll encounter many error
  13. messages, because some properties on MainForm, AboutForm and FileDateForm are
  14. not available in D3.  But don't worry, just ignore all error messages, then
  15. proceed.
  16.  
  17. Binary DFM files created by D5 or D6 can be converted to default text format
  18. by using 'textDFM' option in D5/D6's context menu.
  19.  
  20. {=============================================================================}
  21.  
  22.  
  23. unit FileExpl2873_Demo1Main;
  24.  
  25. interface
  26.  
  27. {$IFDEF VER140}
  28.   {$WARN UNIT_PLATFORM OFF}
  29. {$ENDIF}
  30.  
  31. uses
  32.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  33.   StdCtrls, ExtCtrls, ComCtrls, LsFileExplorer28, ToolWin, Menus, FileCtrl,
  34.   Buttons
  35.   {$IFNDEF VER100},
  36.   ImgList
  37.   {$ENDIF};
  38.  
  39.  
  40. type
  41.   TMainForm1 = class(TForm)
  42.     MainMenu1: TMainMenu;
  43.     File1: TMenuItem;
  44.     Open1: TMenuItem;
  45.     QuickView1: TMenuItem;
  46.     N1: TMenuItem;
  47.     DeleteFiles1: TMenuItem;
  48.     RenameFile1: TMenuItem;
  49.     N2: TMenuItem;
  50.     NewFolder1: TMenuItem;
  51.     DeleteFolder1: TMenuItem;
  52.     RenameFolder1: TMenuItem;
  53.     N3: TMenuItem;
  54.     N4: TMenuItem;
  55.     Exit1: TMenuItem;
  56.     Edit1: TMenuItem;
  57.     Cut1: TMenuItem;
  58.     Copy1: TMenuItem;
  59.     Paste1: TMenuItem;
  60.     N5: TMenuItem;
  61.     SelectAll1: TMenuItem;
  62.     View1: TMenuItem;
  63.     LargeIcon1: TMenuItem;
  64.     SmallIcon1: TMenuItem;
  65.     List1: TMenuItem;
  66.     Detail1: TMenuItem;
  67.     N6: TMenuItem;
  68.     Refresh1: TMenuItem;
  69.     Network1: TMenuItem;
  70.     ConnecttoNetwork1: TMenuItem;
  71.     DisconnectFromNetwork1: TMenuItem;
  72.     Tools1: TMenuItem;
  73.     FindFolderorFiles1: TMenuItem;
  74.     Goto1: TMenuItem;
  75.     N7: TMenuItem;
  76.     CalculateTreeSize1: TMenuItem;
  77.     N8: TMenuItem;
  78.     RewriteFileDateTime1: TMenuItem;
  79.     Help1: TMenuItem;
  80.     LsDirTree21ShortCuts1: TMenuItem;
  81.     LsFileListView28ShortCuts1: TMenuItem;
  82.     N9: TMenuItem;
  83.     AboutLsFileExplorer281: TMenuItem;
  84.     StatusBar1: TStatusBar;
  85.     Panel1: TPanel;
  86.     Splitter1: TSplitter;
  87.     EditPath: TEdit;
  88.     Label1: TLabel;
  89.     CbxMask: TComboBox;
  90.     Label2: TLabel;
  91.     N10: TMenuItem;
  92.     HideFileExtensions1: TMenuItem;
  93.     ShowFolders1: TMenuItem;
  94.     PopupMenu1: TPopupMenu;
  95.     LargeIcons1: TMenuItem;
  96.     SmallIcons1: TMenuItem;
  97.     List2: TMenuItem;
  98.     Delail1: TMenuItem;
  99.     ImageList_N: TImageList;
  100.     Properties1: TMenuItem;
  101.     Language1: TMenuItem;
  102.     English1: TMenuItem;
  103.     French1: TMenuItem;
  104.     German1: TMenuItem;
  105.     Spanish1: TMenuItem;
  106.     SystemDefault1: TMenuItem;
  107.     ToolBar1: TToolBar;
  108.     BtnPrevLevel: TToolButton;
  109.     ToolButton4: TToolButton;
  110.     BtnFolderTree: TToolButton;
  111.     BtnShowFolder: TToolButton;
  112.     BtnViewStyle: TToolButton;
  113.     ToolButton8: TToolButton;
  114.     BtnCut: TToolButton;
  115.     BtnCopy: TToolButton;
  116.     BtnPaste: TToolButton;
  117.     ToolButton12: TToolButton;
  118.     LsDirTree211: TLsDirTree21;
  119.     LsFilelistView281: TLsFilelistView28;
  120.     BtnRefresh: TToolButton;
  121.     Portuguese1: TMenuItem;
  122.     BtnBack: TToolButton;
  123.     procedure BtnShowFolderClick(Sender: TObject);
  124.     procedure FormCreate(Sender: TObject);
  125.     procedure SetBtnMenuState(Sender: TObject);
  126.     procedure GetStatistics(Sender: TObject);
  127.     procedure BtnRefreshClick(Sender: TObject);
  128.     procedure BtnPrevLevelClick(Sender: TObject);
  129.     procedure BtnCutClick(Sender: TObject);
  130.     procedure BtnCopyClick(Sender: TObject);
  131.     procedure BtnPasteClick(Sender: TObject);
  132.     procedure Open1Click(Sender: TObject);
  133.     procedure QuickView1Click(Sender: TObject);
  134.     procedure DeleteFiles1Click(Sender: TObject);
  135.     procedure RenameFile1Click(Sender: TObject);
  136.     procedure Properties1Click(Sender: TObject);
  137.     procedure SelectAll1Click(Sender: TObject);
  138.     procedure Goto1Click(Sender: TObject);
  139.     procedure LsDirTree21ShortCuts1Click(Sender: TObject);
  140.     procedure LsFileListView28ShortCuts1Click(Sender: TObject);
  141.     procedure AboutLsFileExplorer281Click(Sender: TObject);
  142.     procedure LsFilelistView281Change(Sender: TObject; Item: TListItem;
  143.       Change: TItemChange);
  144.     procedure LsFilelistView281Click(Sender: TObject);
  145.     procedure LsFilelistView281DblClick(Sender: TObject);
  146.     procedure LsFilelistView281KeyUp(Sender: TObject; var Key: Word;
  147.       Shift: TShiftState);
  148.     procedure LsFilelistView281MouseUp(Sender: TObject;
  149.       Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  150.     procedure CbxMaskClick(Sender: TObject);
  151.     procedure LsDirTree211MouseUp(Sender: TObject; Button: TMouseButton;
  152.       Shift: TShiftState; X, Y: Integer);
  153.     procedure LsDirTree211KeyUp(Sender: TObject; var Key: Word;
  154.       Shift: TShiftState);
  155.     procedure LsDirTree211DirChange(Sender: TObject; SelectedPath: String);
  156.     procedure BtnFolderContentsClick(Sender: TObject);
  157.     procedure FindFolderorFiles1Click(Sender: TObject);
  158.     procedure Exit1Click(Sender: TObject);
  159.     procedure SelectViewStyle(Sender: TObject);
  160.     procedure LanguageClick(Sender: TObject);
  161.     procedure BtnFolderTreeClick(Sender: TObject);
  162.     procedure BtnViewStyleClick(Sender: TObject);
  163.     procedure NewFolder1Click(Sender: TObject);
  164.     procedure DeleteFolder1Click(Sender: TObject);
  165.     procedure RenameFolder1Click(Sender: TObject);
  166.     procedure CalculateTreeSize1Click(Sender: TObject);
  167.     procedure ConnecttoNetwork1Click(Sender: TObject);
  168.     procedure DisconnectFromNetwork1Click(Sender: TObject);
  169.     procedure RewriteFileDateTime1Click(Sender: TObject);
  170.     procedure HideFileExtensions1Click(Sender: TObject);
  171.     procedure BtnBackClick(Sender: TObject);
  172.     procedure LsDirTree211MouseDown(Sender: TObject; Button: TMouseButton;
  173.       Shift: TShiftState; X, Y: Integer);
  174.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  175.  
  176.   private
  177.     { Private declarations }
  178.   public
  179.     { Public declarations }
  180.     CanPaste: Boolean;
  181.     BackFwdLst: TStringList;
  182. //    BflCount: integer;
  183.     idx: integer;
  184.   end;
  185.  
  186. var
  187.   MainForm1: TMainForm1;
  188.  
  189. implementation
  190.  
  191. uses FileDate, About;
  192.  
  193. {$R *.DFM}
  194.  
  195.  
  196. procedure TMainForm1.FormCreate(Sender: TObject);
  197. var
  198.   CurDir: string;
  199. begin
  200.   SetBtnMenuState(Sender);
  201.   LsFilelistView281.ShowFolders := True;
  202.   BtnShowFolder.Down := True;
  203.   ShowFolders1.Checked := True;
  204.   BackFwdLst := TStringList.Create;
  205.   CurDir := GetCurrentDir;
  206.   if DirectoryExists(CurDir) then
  207.   begin
  208.     if CurDir[Length(CurDir)] <> '\' then
  209.        CurDir := CurDir + '\';
  210.     LsFilelistView281.Directory := CurDir;
  211.     LsFilelistView281.UpdateFileList;
  212.     LsDirTree211.InitialDir := CurDir;
  213.   end;
  214.   BackFwdLst.Clear;
  215. //  BflCount := BackFwdLst.Count;
  216.   idx := BackFwdLst.Count;
  217. end;  //FormCreate
  218.  
  219. procedure TMainForm1.SetBtnMenuState(Sender: TObject);
  220. begin
  221.   BtnCut.Enabled := Assigned(LsFilelistView281.Selected);
  222.   BtnCopy.Enabled := Assigned(LsFilelistView281.Selected);
  223.   BtnPaste.Enabled := (CanPaste = True);
  224.   Cut1.Enabled := Assigned(LsFilelistView281.Selected);
  225.   Copy1.Enabled := Assigned(LsFilelistView281.Selected);
  226.   Paste1.Enabled := CanPaste = True;
  227.   Open1.Enabled := Assigned(LsFilelistView281.Selected);
  228.   QuickView1.Enabled := Assigned(LsFilelistView281.Selected);
  229.   DeleteFiles1.Enabled := Assigned(LsFilelistView281.Selected);
  230.   RenameFile1.Enabled := Assigned(LsFilelistView281.Selected);
  231.   Properties1.Enabled := Assigned(LsFilelistView281.Selected);
  232. end; //SetBtnMenuState
  233.  
  234. procedure TMainForm1.GetStatistics(Sender: TObject);
  235. begin
  236.   StatusBar1.Panels[0].Text := '';
  237.   StatusBar1.Panels[1].Text := '';
  238.   with LsFilelistView281 do
  239.   begin
  240.     if Selected <> nil then
  241.     begin
  242.       StatusBar1.Panels[0].Text := IntToStr(Items.Count) + ' object(s)  --  ' +
  243.         IntToStr(SelectedNumber) + '  selected ';
  244.       StatusBar1.Panels[1].Text := ' Selected Size = ' +
  245.         FormatFloat('###,##0.00 KB', (SelectedSize / 1024)) +
  246.         '( Disk free space: ' +
  247.         FormatFloat('###,### MB', (DriveFreeSpace)) + ' )';
  248.     end
  249.     else begin
  250.       StatusBar1.Panels[0].Text := IntToStr(Items.Count) + ' object(s)';
  251.       StatusBar1.Panels[1].Text := ' Selected Size = 0 KB' +
  252.         '  ( Disk free space: ' +
  253.         FormatFloat('###,### MB', (DriveFreeSpace)) + ' )';
  254.     end;
  255.   end;
  256.   EditPath.Text := MinimizeName(LsDirTree211.SelectedPath, Canvas, 340);;
  257. end; //GetStatistics
  258.  
  259. procedure TMainForm1.BtnRefreshClick(Sender: TObject);
  260. var
  261.   TreePath: string;
  262. begin
  263.   TreePath := '';
  264.   with LsDirTree211 do
  265.   begin
  266.     if (Selected <> nil) and (Assigned(Selected)) then
  267.       TreePath := SelectedPath;
  268.     ReLoad;
  269.     OpenPath(TreePath);
  270.   end;
  271.   BtnShowFolder.Down := True;
  272.   LsFilelistView281.ShowFolders := True;
  273.   LsFilelistView281.Directory := TreePath;
  274.   LsFilelistView281.UpdateFileList;
  275. end; //BtnRefreshClick
  276.  
  277. procedure TMainForm1.BtnShowFolderClick(Sender: TObject);
  278. begin
  279.   if LsFilelistView281.ShowFolders = True then
  280.   begin
  281.     LsFilelistView281.ShowFolders := False;
  282.     BtnShowFolder.Down := False;
  283.     ShowFolders1.Checked := False;
  284.   end
  285.   else begin
  286.     LsFilelistView281.ShowFolders := True;
  287.     BtnShowFolder.Down := True;
  288.     ShowFolders1.Checked := True;
  289.   end;
  290. end;  //BtnShowFolderClick
  291.  
  292.  
  293. procedure TMainForm1.BtnCutClick(Sender: TObject);
  294. begin
  295.   if LsDirTree211.Focused then
  296.   begin
  297.     if (LsDirTree211.Selected.Level <= 1) or (LsDirTree211.Selected = nil) then
  298.       exit;
  299.     LsDirTree211.CutOrCopyNode(2);
  300.   end
  301.   else if LsFileListView281.Focused then
  302.     LsFilelistView281.CutCopy(2);
  303.   Cut1.Enabled := False;
  304.   CanPaste := True;
  305.   SetBtnMenuState(Sender);
  306. end; //BtnCutClick
  307.  
  308. procedure TMainForm1.BtnCopyClick(Sender: TObject);
  309. begin
  310.   if LsDirTree211.Focused then
  311.   begin
  312.     if (LsDirTree211.Selected.Level <= 1) or (LsDirTree211.Selected = nil) then
  313.       exit;
  314.     LsDirTree211.CutOrCopyNode(0);
  315.   end
  316.   else if LsFileListView281.Focused then
  317.     LsFilelistView281.CutCopy(0);
  318.   Copy1.Enabled := False;
  319.   CanPaste := True;
  320.   SetBtnMenuState(Sender);
  321. end; //BtnCopyClick
  322.  
  323. procedure TMainForm1.BtnPasteClick(Sender: TObject);
  324. begin
  325.   if LsDirTree211.Focused then
  326.     LsDirTree211.PasteNode
  327.   else if LsFileListView281.Focused then
  328.     LsFilelistView281.Paste;
  329.   CanPaste := False;
  330.   Cut1.Enabled := True;
  331.   Copy1.Enabled := True;
  332.   SetBtnMenuState(Sender);
  333. end; //BtnPasteClick
  334.  
  335. procedure TMainForm1.Open1Click(Sender: TObject);
  336. begin
  337.   LsFilelistView281.OpenItem;
  338. end;  //Open1Click
  339.  
  340. procedure TMainForm1.QuickView1Click(Sender: TObject);
  341. begin
  342.   if Assigned(LsFilelistView281) then
  343.     if LsFilelistView281.Selected <> nil then
  344.       LsFilelistView281.ViewFile;
  345. end; //QuickView1Click
  346.  
  347. procedure TMainForm1.DeleteFiles1Click(Sender: TObject);
  348. begin
  349.   LsFilelistView281.DeleteItems;
  350. end; //DeleteFiles1Click
  351.  
  352. procedure TMainForm1.RenameFile1Click(Sender: TObject);
  353. begin
  354.   LsFilelistView281.RenameFile;
  355. end; //RenameFile1Click
  356.  
  357. procedure TMainForm1.Properties1Click(Sender: TObject);
  358. begin
  359.   if Assigned(LsFilelistView281) then
  360.     if LsFilelistView281.Selected <> nil then
  361.     {$IFDEF VER100}
  362.       LsFilelistView281.FileAttr;  //861
  363.     {$ELSE}
  364.       LsFilelistView281.ShowFileProperties;  //FileAttr;  //861
  365.     {$ENDIF}
  366. end; //Properties1Click
  367.  
  368. procedure TMainForm1.SelectAll1Click(Sender: TObject);
  369. var
  370.   i: integer;
  371. begin
  372.   if not Assigned(LsFilelistView281) then exit;
  373.   with LsFilelistView281 do
  374.   begin
  375.     if Items.Count = 0 then exit;
  376.     for i := 0 to Items.Count - 1 do
  377.       Selected := Items[i];
  378.   end;
  379. end; //SelectAll1Click
  380.  
  381. procedure TMainForm1.Goto1Click(Sender: TObject);
  382. var
  383.   PathName: string;
  384. begin
  385.   InputQuery('Go to Folder', 'Enter the name and path of the folder to open',
  386.     PathName);
  387.   if (PathName = '') or (Length(PathName) = 1) then exit;
  388.   if PathName[Length(PathName)] <> '\' then
  389.     PathName := PathName + '\';
  390.   if DirectoryExists(PathName) then
  391.   begin
  392.     LsFilelistView281.Directory := PathName;
  393.     LsDirTree211.OpenPath(PathName);
  394.   end
  395.   else begin
  396.     if (Length(PathName) <= 3) and (PathName[2] = ':') then
  397.       MessageDlg(UpperCase(PathName) + '  not ready', mtError, [mbOK], 0)
  398.     else
  399.       MessageDlg(PathName + '  not found', mtError, [mbOK], 0);
  400.     exit;
  401.   end;
  402. end; //Goto1Click
  403.  
  404. procedure TMainForm1.LsDirTree21ShortCuts1Click(Sender: TObject);
  405. begin
  406.   AboutForm.PageControl1.ActivePage := AboutForm.TabSheet1;
  407.   AboutForm.ShowModal;
  408. end; //LsDirTree21ShortCuts1Click
  409.  
  410. procedure TMainForm1.LsFileListView28ShortCuts1Click(Sender: TObject);
  411. begin
  412.   AboutForm.PageControl1.ActivePage := AboutForm.TabSheet2;
  413.   AboutForm.ShowModal;
  414. end; //LsFilelistView28ShortCuts1Click
  415.  
  416. procedure TMainForm1.AboutLsFileExplorer281Click(Sender: TObject);
  417. begin
  418.   AboutForm.PageControl1.ActivePage := AboutForm.TabSheet3;
  419.   AboutForm.ShowModal;
  420. end; //AboutLsFileExplorer261Click
  421.  
  422. procedure TMainForm1.LsFilelistView281Change(Sender: TObject;
  423.   Item: TListItem; Change: TItemChange);
  424. begin
  425.   SetBtnMenuState(Sender);
  426. end; //LsFilelistView281Change
  427.  
  428. procedure TMainForm1.LsFilelistView281Click(Sender: TObject);
  429. begin
  430.   SetBtnMenuState(Sender);
  431. //  ShowMessage(LsFileListView281.SelectedItem);  //85
  432. end; //LsFilelistView281Click
  433.  
  434. procedure TMainForm1.LsFilelistView281DblClick(Sender: TObject);
  435. begin
  436.   LsFilelistView281.OpenItem;
  437. end; //LsFilelistView281DblClick
  438.  
  439. procedure TMainForm1.LsFilelistView281KeyUp(Sender: TObject; var Key: Word;
  440.   Shift: TShiftState);
  441. begin
  442.   if (Key = VK_Return) or (key = VK_Space) or (Key = VK_BACK) or
  443.     (Key = VK_Up) or (Key = VK_Down) or (Key = VK_Prior) or
  444.     (Key = VK_Next) then
  445.     GetStatistics(Sender);
  446. end; //LsFilelistView281KeyUp
  447.  
  448. procedure TMainForm1.LsDirTree211KeyUp(Sender: TObject; var Key: Word;
  449.   Shift: TShiftState);
  450. begin
  451.   if (Key = VK_Return) then
  452.     GetStatistics(Sender);
  453. end;  //LsDirTree211KeyUp
  454.  
  455. procedure TMainForm1.LsFilelistView281MouseUp(Sender: TObject;
  456.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  457. begin
  458.   if Button = mbLeft then
  459.     GetStatistics(Sender);
  460. end; //LsFilelistView281MouseUp
  461.  
  462. procedure TMainForm1.LsDirTree211MouseUp(Sender: TObject;
  463.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  464. begin
  465.   if (Button = mbLeft) then
  466.     GetStatistics(Sender);
  467. end;  //LsDirTree211MouseUp
  468.  
  469. procedure TMainForm1.CbxMaskClick(Sender: TObject);
  470. begin
  471.   LsFilelistView281.Mask := CbxMask.Text;
  472. end;  //CbxMaskClick
  473.  
  474. procedure TMainForm1.LsDirTree211DirChange(Sender: TObject;
  475.   SelectedPath: String);
  476. begin
  477.   EditPath.Text := MinimizeName(LsDirTree211.SelectedPath, Canvas, 340);;
  478. end;  //LsDirTree211DirChange
  479.  
  480. {*
  481. procedure TMainForm.LsDirTree211FileChange(Sender: TObject;
  482.   SelectedFile: String);
  483. begin
  484.   with LsDirTree211 do
  485.   begin
  486.     if SelectedFile <> '' then
  487.       ShowMessage(SelectedFile);
  488.   end;
  489. end;
  490. *}
  491.  
  492. procedure TMainForm1.BtnFolderContentsClick(Sender: TObject);
  493. begin
  494.   if LsDirTree211.Selected <> nil then
  495.     LsDirTree211.SHowFolderContents;
  496. end;  //BtnFolderContentsClick
  497.  
  498. procedure TMainForm1.SelectViewStyle(Sender: TObject);
  499. begin
  500.   with (Sender as TMenuItem) do
  501.   begin
  502.     Case Tag of
  503.       0: LsFilelistView281.ViewStyle := vsIcon;
  504.       1: LsFilelistView281.ViewStyle := vsSmallIcon;
  505.       2: LsFilelistView281.ViewStyle := vsList;
  506.       3: LsFilelistView281.ViewStyle := vsReport;
  507.     end;
  508.   end;
  509. end;  //SelectViewStyle
  510.  
  511. procedure TMainForm1.FindFolderorFiles1Click(Sender: TObject);
  512. begin
  513.   LsFilelistView281.SetFocus;
  514.   LsFilelistView281.FindFile;
  515. end;  //FindFolderorFiles1Click
  516.  
  517. procedure TMainForm1.Exit1Click(Sender: TObject);
  518. begin
  519.   BackFwdLst.Free;
  520.   Close;
  521. end;
  522.  
  523. procedure TMainForm1.LanguageClick(Sender: TObject);
  524. var
  525.   CurDir: String;
  526. begin
  527.   CurDir := GetCurrentDir;
  528.   with Sender as TMenuItem do
  529.   begin
  530.     case Tag of
  531.       0: begin
  532.            LsFileListView281.Language := lnEnglish;
  533.            LsDirTree211.Language := lnEnglish;
  534.          end;
  535.       1: begin
  536.            LsFileListView281.Language := lnFrench;
  537.            LsDirTree211.Language := lnFrench;
  538.          end;
  539.       2: begin
  540.            LsFileListView281.Language := lnGerman;
  541.            LsDirTree211.Language := lnGerman;
  542.          end;
  543.       3: begin
  544.            LsFileListView281.Language := lnSpanish;
  545.            LsDirTree211.Language := lnSpanish;
  546.          end;
  547.       4: begin
  548.            LsFileListView281.Language := lnPortuguese;
  549.            LsDirTree211.Language := lnPortuguese;
  550.          end;
  551.       5: begin
  552.            LsFileListView281.Language := lnSysDefault;
  553.            LsDirTree211.Language := lnSysDefault;
  554.          end;
  555.     end;
  556.   end;
  557.   LsDirTree211.OpenPath(CurDir);
  558.   LsFileListView281.Directory := CurDir;
  559.   LsFileListView281.UpdateFileList;
  560. end;
  561.  
  562. procedure TMainForm1.BtnFolderTreeClick(Sender: TObject);
  563. begin
  564.   if LsDirTree211.Align = alLeft then
  565.   begin
  566.     LsDirTree211.Align := alNone;
  567.     BtnFolderTree.Down := False;
  568.   end
  569.   else if LsDirTree211.Align = alNone then
  570.   begin
  571.     LsDirTree211.Align := alLeft;
  572.     BtnFolderTree.Down := True;
  573.   end;
  574. end;
  575.  
  576. procedure TMainForm1.BtnViewStyleClick(Sender: TObject);
  577. begin
  578.   with LsFilelistView281 do
  579.   begin
  580.     if ViewStyle = vsIcon then
  581.       ViewStyle := vsSmallIcon
  582.     else if ViewStyle = vsSmallIcon then
  583.       ViewStyle := vsList
  584.     else if ViewStyle = vsList then
  585.       ViewStyle := vsReport
  586.     else if ViewStyle = vsReport then
  587.       ViewStyle := vsIcon;
  588.   end;
  589. end;
  590.  
  591. procedure TMainForm1.NewFolder1Click(Sender: TObject);
  592. var
  593.   PNode: TTreeNode;
  594.   NewFolder: string;
  595. begin
  596.   with LsDirTree211 do
  597.   begin
  598.     NewFolder := '';
  599.     PNode := Selected;
  600.     if Assigned(Selected) then
  601.     begin
  602.       LsDirTree211.AddNewNode(PNode, '');
  603.     end;
  604.   end;
  605. end; //NewFolder1Click
  606.  
  607. procedure TMainForm1.DeleteFolder1Click(Sender: TObject);
  608. begin
  609.   with LsDirTree211 do
  610.   begin
  611.     if (Selected <> nil) and (Assigned(Selected)) then
  612.       DeleteNode(Selected);
  613.   end;
  614. end;  //DeleteFolder1Click
  615.  
  616. procedure TMainForm1.RenameFolder1Click(Sender: TObject);
  617. begin
  618.   with LsDirTree211 do
  619.   begin
  620.     if (Selected <> nil) and (Assigned(Selected)) then
  621.       Selected.EditText;
  622.   end;
  623. end;  //RenameFolder1Click
  624.  
  625. procedure TMainForm1.CalculateTreeSize1Click(Sender: TObject);
  626. begin
  627.   if LsDirTree211.Selected <> nil then
  628.     LsDirTree211.GetTreeSize;
  629. end;  //CalculateTreeSize1Click
  630.  
  631. procedure TMainForm1.ConnecttoNetwork1Click(Sender: TObject);
  632. begin
  633.   LsDirTree211.ConnectNetResource(Sender);
  634. end;  //ConnecttoNetwork1Click
  635.  
  636. procedure TMainForm1.DisconnectFromNetwork1Click(Sender: TObject);
  637. begin
  638.   LsDirTree211.DisConnectNetResource(Sender);
  639. end;  //DisconnectFromNetwork1Click
  640.  
  641. procedure TMainForm1.RewriteFileDateTime1Click(Sender: TObject);
  642. var
  643.   i: integer;
  644.   FDate: Longint;
  645.   NewDateTime: TDateTime;
  646.   SelFileName: string;
  647.   SelFile: File;
  648.   OldCur: TCursor;
  649. begin
  650.   NewDateTime := Now;
  651.   with LsFilelistView281 do
  652.   begin
  653.     if Selected = nil then
  654.     begin
  655.       ShowMessage('No file selected');
  656.       exit;
  657.     end;
  658.  
  659.     if FileDateForm.ShowModal = mrOK then
  660.       NewDateTime := FileDateForm.SelectedDateTime;
  661.     FDate := DateTimeToFileDate(NewDateTime);
  662.  
  663.     Items.BeginUpdate;
  664.     OldCur := Screen.Cursor;
  665.     Screen.Cursor := crHourGlass;
  666.     for i := 0 to Items.Count - 1 do
  667.     begin
  668.       if Items[i].Selected then
  669.       begin
  670.         System.FileMode := fmOpenWrite;
  671.         SelFileName := Items[i].SubItems[4];
  672.         AssignFile(SelFile, SelFileName );
  673.         {$I-}
  674.         Reset(SelFile);
  675.         {$I+}
  676.         if IOResult <> 0 then
  677.         begin
  678.           ShowMessage('Could not open ' + ExtractFileName(SelFileName));
  679.           exit;
  680.         end;
  681.         FileSetDate(TFileRec(SelFile).Handle, FDate);
  682.         System.CloseFile(SelFile);
  683.       end;
  684.     end;
  685.     Items.EndUpdate;
  686.     Screen.Cursor := OldCur;
  687.     BtnRefreshClick(Sender);
  688.   end;
  689. end;  //RewriteFileDateTime1Click
  690.  
  691. procedure TMainForm1.HideFileExtensions1Click(Sender: TObject);
  692. begin
  693.   with LsFileListView281 do
  694.   begin
  695.     if HideFileExt = True then
  696.     begin
  697.       HideFileExt := False;
  698.       HideFileExtensions1.Checked := False;
  699.     end
  700.     else begin
  701.       HideFileExt := True;
  702.       HideFileExtensions1.Checked := True;
  703.     end;
  704.     UpdateFileList;
  705.   end;
  706. end;  //HideFileExtensions1Click
  707.  
  708. procedure TMainForm1.BtnPrevLevelClick(Sender: TObject);
  709. begin
  710.   BackFwdLst.Add(LsDirTree211.SelectedPath);
  711.   idx := BackFwdLst.Count; //idx + 1;
  712.   LsFilelistView281.OneLevelUp;
  713.   BtnBack.Enabled := BackFwdLst.Count >= 1;
  714.   SetBtnMenuState(Sender);
  715. end; //BtnPrevLevelClick
  716.  
  717. procedure TMainForm1.LsDirTree211MouseDown(Sender: TObject;
  718.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  719. var
  720.   HitTest: THitTests;
  721. begin
  722.   inherited;
  723.   HitTest := LsDirTree211.GetHitTestInfoAt(X, Y);
  724.   if (htOnItem in HitTest) {or (htOnButton in HitTest)}  then
  725.   begin
  726.     BackFwdLst.Add(LsDirTree211.SelectedPath);
  727.     idx := BackFwdLst.Count; //idx + 1;
  728. //    ShowMessage('BflCount = ' + IntToStr(BackFwdLst.Count)+ ',   ' + #13 +
  729. //                'idx      = ' + IntToStr(idx));
  730.     BtnBack.Enabled := BackFwdLst.Count >= 1;
  731.   end;
  732. end;
  733.  
  734. procedure TMainForm1.BtnBackClick(Sender: TObject);
  735. var
  736.   Path: string;
  737. begin
  738.   if BtnBack.Enabled = False then exit;
  739.   Path := BackFwdLst.Strings[idx - 1];
  740.   LsDirTree211.OpenPath(Path);
  741.   LsFileListView281.Directory := Path;
  742.   LsFileListView281.UpdateFileList;
  743.   idx := idx - 1;
  744.   if idx < 1 then
  745.   begin
  746.     idx := 0;
  747.     BtnBack.Enabled := False;
  748.     BackFwdLst.Clear;
  749.     exit;
  750.   end;
  751. end;
  752.  
  753. procedure TMainForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  754. begin
  755.   BackFwdLst.Free;
  756. end;
  757.  
  758. end.
  759.  
  760.