home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 June / Chip_2002-06_cd1.bin / zkuste / delphi / kolekce / d6 / rxlibsetup.exe / {app} / units / RXDIRFRM.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  2002-02-19  |  3.9 KB  |  152 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {         Delphi VCL Extensions (RX)                    }
  4. {                                                       }
  5. {         Copyright (c) 2001,2002 SGB Software          }
  6. {         Copyright (c) 1997, 1998 Fedor Koshevnikov,   }
  7. {                        Igor Pavluk and Serge Korolev  }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11.  
  12. unit RxDirFrm;
  13.  
  14. interface
  15.  
  16. uses {$IFDEF WIN32} Windows, {$ELSE} WinTypes, WinProcs, {$ENDIF} Messages,
  17.   SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, RXCtrls,
  18.   Placemnt;
  19.  
  20. type
  21.   TDirectoryListDialog = class(TForm)
  22.     DirectoryList: TTextListBox;
  23.     AddBtn: TButton;
  24.     RemoveBtn: TButton;
  25.     ModifyBtn: TButton;
  26.     OKBtn: TButton;
  27.     CancelBtn: TButton;
  28.     Storage: TFormStorage;
  29.     procedure AddBtnClick(Sender: TObject);
  30.     procedure ModifyBtnClick(Sender: TObject);
  31.     procedure RemoveBtnClick(Sender: TObject);
  32.     procedure DirectoryListClick(Sender: TObject);
  33.     procedure FormShow(Sender: TObject);
  34.     procedure DirectoryListDragDrop(Sender, Source: TObject; X,
  35.       Y: Integer);
  36.     procedure DirectoryListDragOver(Sender, Source: TObject; X, Y: Integer;
  37.       State: TDragState; var Accept: Boolean);
  38.     procedure FormCreate(Sender: TObject);
  39.   private
  40.     { Private declarations }
  41.     procedure CheckButtons;
  42.   public
  43.     { Public declarations }
  44.   end;
  45.  
  46. function EditFolderList(Folders: TStrings): Boolean;
  47.  
  48. implementation
  49.  
  50. uses FileUtil, BoxProcs, RxConst;
  51.  
  52. {$R *.DFM}
  53.  
  54. function EditFolderList(Folders: TStrings): Boolean;
  55. begin
  56.   with TDirectoryListDialog.Create(Application) do
  57.   try
  58.     if Assigned(Folders) then
  59.       DirectoryList.Items.Assign(Folders);
  60.     Result := ShowModal = mrOk;
  61.     if Result and Assigned(Folders) then
  62.       Folders.Assign(DirectoryList.Items);
  63.   finally
  64.     Free;
  65.   end;
  66. end;
  67.  
  68. { TDirectoryListDialog }
  69.  
  70. procedure TDirectoryListDialog.CheckButtons;
  71. begin
  72.   ModifyBtn.Enabled := (DirectoryList.Items.Count > 0) and
  73.     (DirectoryList.ItemIndex >= 0);
  74.   RemoveBtn.Enabled := ModifyBtn.Enabled;
  75. end;
  76.  
  77. procedure TDirectoryListDialog.AddBtnClick(Sender: TObject);
  78. var
  79.   I: Integer;
  80.   S: string;
  81. begin
  82.   S := '';
  83.   if BrowseDirectory(S, '', 0) then begin
  84.     I := DirectoryList.Items.Add(S);
  85.     DirectoryList.ItemIndex := I;
  86.     CheckButtons;
  87.   end;
  88. end;
  89.  
  90. procedure TDirectoryListDialog.ModifyBtnClick(Sender: TObject);
  91. var
  92.   I: Integer;
  93.   S: string;
  94. begin
  95.   I := DirectoryList.ItemIndex;
  96.   if I >= 0 then begin
  97.     S := DirectoryList.Items[I];
  98.     if BrowseDirectory(S, '', 0) then begin
  99.       DirectoryList.Items[I] := S;
  100.     end;
  101.   end;
  102. end;
  103.  
  104. procedure TDirectoryListDialog.RemoveBtnClick(Sender: TObject);
  105. var
  106.   I: Integer;
  107. begin
  108.   I := DirectoryList.ItemIndex;
  109.   if I >= 0 then begin
  110.     DirectoryList.Items.Delete(I);
  111.     CheckButtons;
  112.   end;
  113. end;
  114.  
  115. procedure TDirectoryListDialog.DirectoryListClick(Sender: TObject);
  116. begin
  117.   CheckButtons;
  118. end;
  119.  
  120. procedure TDirectoryListDialog.FormShow(Sender: TObject);
  121. begin
  122.   CheckButtons;
  123. end;
  124.  
  125. procedure TDirectoryListDialog.DirectoryListDragDrop(Sender,
  126.   Source: TObject; X, Y: Integer);
  127. begin
  128.   BoxMoveFocusedItem(DirectoryList, DirectoryList.ItemAtPos(Point(X, Y), True));
  129.   CheckButtons;
  130. end;
  131.  
  132. procedure TDirectoryListDialog.DirectoryListDragOver(Sender,
  133.   Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
  134. begin
  135.   BoxDragOver(DirectoryList, Source, X, Y, State, Accept, DirectoryList.Sorted);
  136.   CheckButtons;
  137. end;
  138.  
  139. procedure TDirectoryListDialog.FormCreate(Sender: TObject);
  140. begin
  141. {$IFDEF WIN32}
  142.   with Storage do begin
  143.     UseRegistry := True;
  144.     IniFileName := SDelphiKey;
  145.   end;
  146. {$ELSE}
  147.   if not NewStyleControls then Font.Style := [fsBold];
  148. {$ENDIF}
  149. end;
  150.  
  151. end.
  152.