unit FileDlg;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, FileCtrl;
type
TFileDlgForm = class(TForm)
DirectoryListBox: TDirectoryListBox;
DriveComboBox: TDriveComboBox;
BtnDisplay: TButton;
ListBox: TListBox;
FilterTypeBox: TComboBox;
procedure DriveComboBoxChange(Sender: TObject);
procedure BtnDisplayClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FileDlgForm: TFileDlgForm;
StrPath: String;
implementation
{$R *.dfm}
//驱动盘改变事件
procedure TFileDlgForm.DriveComboBoxChange(Sender: TObject);
begin
DirectoryListBox.Drive:= DriveComboBox.Drive;
end;
//枚举事件
procedure TFileDlgForm.BtnDisplayClick(Sender: TObject);
var
SearchRec: TSearchRec;
found: integer;
i, MaxWidth: integer;
StrFilterType: String;
begin
ListBox.Clear;
StrPath:= DirectoryListBox.Directory;
StrFilterType:= FilterTypeBox.Text;
if(StrFilterType<>'') then
StrFilterType:= '\*.' + StrFilterType
else
StrFilterType:= '\*.*';
found:= FindFirst(StrPath + StrFilterType, faAnyFile, SearchRec);
while found=0 do
begin
if(SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
ListBox.Items.Add(SearchRec.Name);
found:= FindNext(SearchRec);
end;
FindClose(SearchRec);
//横向滚动条的添加
MaxWidth:= 0;
for i:= 0 to ListBox.Items.Count - 1 do
if MaxWidth < ListBox.Canvas.TextWidth(ListBox.Items.Strings[i]) then
MaxWidth := ListBox.Canvas.TextWidth(ListBox.Items.Strings[i]);
SendMessage(ListBox.Handle, LB_SETHORIZONTALEXTENT, MaxWidth + 50, 0);
end;
end.