如何在Delphi中选择文件

3

我需要制作“图形用户界面”,并且需要一些VCL组件来选择文件。

这个组件必须选择文件,但是用户不需要输入文件名。

我正在寻找信息,但是没有什么帮助我。


2
哎?谷歌[delphi选择文件]或[delphi打开文件],您就能找到答案。虽然您也可以在这里询问,但如果搜索会更快。 - Jan Doggen
3
感谢提问,Google帮我找到了这里!为邪恶的Jan Doggen打个-1。 - Liviu
2个回答

16

Vcl.Dialogs.TOpenDialog可以用于此目的。

另请参阅UsingDialogs

procedure TForm1.Button1Click(Sender: TObject);
var
  selectedFile: string;
  dlg: TOpenDialog;
begin
  selectedFile := '';
  dlg := TOpenDialog.Create(nil);
  try
    dlg.InitialDir := 'C:\';
    dlg.Filter := 'All files (*.*)|*.*';
    if dlg.Execute(Handle) then
      selectedFile := dlg.FileName;
  finally
    dlg.Free;
  end;

  if selectedFile <> '' then
    <your code here to handle the selected file>
end;

请注意此示例假设在表单上放置了名为 Button1TButton,并且将 TForm1.Button1Click(Sender: TObject) 过程分配给按钮的 OnClick 事件。


可以通过使用 |(管道)字符将多个文件扩展名连接在一起来在 TOpenDialog.Filter 属性中使用多个文件扩展名,如下所示:

'AutoCAD drawing|*.dwg|Drawing Exchange Format|*.dxf'

-1
我找到了我的问题。 我的问题是我没有制作任何按钮来打开对话框。 我制作了一个TEdit。这个TEdit有一个过程(Onlclik),像这样:
procedure TForm1.SelectFile(Sender: TObject);
begin

  openDialog := TOpenDialog.Create(self);
  openDialog.InitialDir := 'C:\';
  openDialog.Options := [ofFileMustExist];

  // Allow only .dpr and .pas files to be selected
  openDialog.Filter :=
    'All files (*.*)|*.*';
  // Display the open file dialog
  if openDialog.Execute
  then ShowMessage('File : '+openDialog.FileName)
  else ShowMessage('Open file was cancelled');

  // Free up the dialog
  openDialog.Free;

end; 

1
请在处理对象时使用try/finally子句,如@fantaghirocco的优秀答案所示。 - whosrdaddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接