建议动态创建button: var SearchRec:TSearchRec; found,i:integer; button:array[0..10]of TButton; path:string; begin path:='c:\windows\'; i:=0; found:=FindFirst(path+'*.exe',faAnyFile,SearchRec); while found=0 do begin if (SearchRec.Name<>'.')and(SearchRec.Name<>'..')and(SearchRec.Attr<>faDirectory)//判断是否为文件 then with button[i].Create(self) do begin caption:=SearchRec.name; Visible:=true; end; found:=FindNext(SearchRec); end;
//一种方法:动态取得WIN目录下所有文件创建BUTTON,每行三个 procedure TForm1.CreateWinDirExeList; var SRec: TSearchRec; Path,Fn,Fx,TitleStr:string; retval:integer; Button:TButton; Dir,Mask:String; X,Y,Number:Integer; WinDir:Array[0..125] of Char; begin GetWindowsDirectory(WinDir,125); //搜索路径 Path :=StrPas(WinDir); Mask :='\*.*'; X:=0; Y :=0; Number :=0; retval := FindFirst( Path+Mask,faAnyFile,SRec); //开始 While retval=0 Do Begin If (SRec.Attr and (faDirectory or faVolumeID)) = 0 Then //是文件 begin Application.ProcessMessages; Fn:=SRec.Name; //取文件名 TitleStr :=Fn; Fx :=UpperCase(ExtractFileExt(Fn)); //取扩展名 Delete(TitleStr,Length(TitleStr)-3,4); //取文件前名称 if (Fx ='.EXE') then Begin Button :=TButton.Create(Self); Button.Parent :=Form1; Button.Caption :=TitleStr; Button.Hint :=Fn; Button.Top :=Y; Button.Left :=X; Button.ShowHint :=True; Number :=Number +1; X :=X+100; if X >(100 *2) then Begin Y :=Y+40; X :=0; end; end; end; retval := FindNext(SRec); //找下一个 End; SysUtils.FindClose(SRec); end;
var
SearchRec:TSearchRec;
found,i:integer;
button:array[0..10]of TButton;
path:string;
begin
path:='c:\windows\';
i:=0;
found:=FindFirst(path+'*.exe',faAnyFile,SearchRec);
while found=0 do
begin
if (SearchRec.Name<>'.')and(SearchRec.Name<>'..')and(SearchRec.Attr<>faDirectory)//判断是否为文件
then
with button[i].Create(self) do
begin
caption:=SearchRec.name;
Visible:=true;
end;
found:=FindNext(SearchRec);
end;
procedure TForm1.CreateWinDirExeList;
var
SRec: TSearchRec;
Path,Fn,Fx,TitleStr:string;
retval:integer;
Button:TButton;
Dir,Mask:String;
X,Y,Number:Integer;
WinDir:Array[0..125] of Char;
begin
GetWindowsDirectory(WinDir,125); //搜索路径
Path :=StrPas(WinDir);
Mask :='\*.*';
X:=0;
Y :=0;
Number :=0;
retval := FindFirst( Path+Mask,faAnyFile,SRec); //开始
While retval=0 Do
Begin
If (SRec.Attr and (faDirectory or faVolumeID)) = 0 Then //是文件
begin
Application.ProcessMessages;
Fn:=SRec.Name; //取文件名
TitleStr :=Fn;
Fx :=UpperCase(ExtractFileExt(Fn)); //取扩展名
Delete(TitleStr,Length(TitleStr)-3,4); //取文件前名称
if (Fx ='.EXE') then
Begin
Button :=TButton.Create(Self);
Button.Parent :=Form1;
Button.Caption :=TitleStr;
Button.Hint :=Fn;
Button.Top :=Y;
Button.Left :=X;
Button.ShowHint :=True;
Number :=Number +1;
X :=X+100;
if X >(100 *2) then
Begin
Y :=Y+40;
X :=0;
end;
end;
end;
retval := FindNext(SRec); //找下一个
End;
SysUtils.FindClose(SRec);
end;