home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / zkuste / delphi / kolekce / d6 / RX275D6.ZIP / Units / RXDIRFRM.PAS < prev    next >
Pascal/Delphi Source File  |  1999-10-12  |  4KB  |  149 lines

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