效果图
opendialog、savedialog组件
对于类似TOpenDialog和TSaveDialog的功能,在Delphi 5中,你可能需要这样做:
- 查找或创建:首先,在Delphi 5的组件面板中查找是否有现成的文件对话框组件(拖拉组件下来到form那)。如果没有,你可能需要查看Delphi的文档或搜索在线资源以了解如何调用Windows API来实现这一点。
- 配置对话框:无论你是通过组件还是代码来创建对话框,你都需要配置它的属性,如过滤器(filter,这样可以设定显示文件的后缀名)、标题等。
- 显示对话框:调用对话框的显示方法(如Execute),让用户选择文件。
- 处理结果:根据用户的选择(如选择的文件名),执行相应的操作(如打开或保存文件)。
配置对话框属性
procedure TForm1.FormCreate(Sender: TObject);
begin
dlgOpen1.Filter:='文本文档(*.txt)|*.TXT';
dlgSave1.Filter:='文本文档(*.txt)|*.TXT';
end;
点击“打开”按钮
opendialog组件能打开文件对话框,并把选中文件的文件名返回。不能加载文件。
procedure TForm1.btn1Click(Sender: TObject);
begin
if dlgOpen1.Execute then //打开文档选择
begin
edt1.Text:=dlgOpen1.FileName; //将选中的文档名赋值到输入框
end;
end;
点击“复制”按钮
savedialog组件也能打开文件对话框,并把要保存的文件名返回。但是不能执行保存操作。
总体的算法逻辑:
- 打开文件对话框,把要读取的文件名返回。
- 打开文件对话框,把要保存的文件名返回。
- 打开要读的文件。
- 打开要写的文件。
- 读(read)文件的一个字符到ch,然后再把ch写(write)进去。
- 读完写完,关闭两个文件。
procedure TForm1.btn2Click(Sender: TObject);
var
Sfilename,Dfilename:string; //源文件名、目标文件名
F1,F2:TextFile;
ch:Char;
begin
if dlgSave1.Execute then //打开保存文件对话框
begin
edt2.Text:=dlgSave1.FileName; //目标文件名
Sfilename:=edt1.Text;//源文件名
Dfilename:=edt2.Text+'.txt'; //目标文件名
if Length(Sfilename) <> 0 then //源文件名不能为空
begin
AssignFile(F1,Sfilename);//将源文件和F1文件型变量联系到一起
Reset(F1); //读打开文件
if Length(Dfilename)<>0 then
begin
AssignFile(F2,Dfilename);
Rewrite(F2);
while not Eof(F1) do // 当未到文件末尾时循环
begin
read(F1,ch);
write(F2,ch);
end;
CloseFile(F2);
end
else
ShowMessage('目标文件名必须输入');
CloseFile(F1); //关闭文件
showmessage('复制完成');
end
else
ShowMessage('源文件名必须输入');
end;
end;
完整代码
unit Unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Dialogs, Forms,Form, Formprpt, StdCtrls;
type
TForm1 = class(MForm)
lbl1: TLabel;
lbl2: TLabel;
edt1: TEdit;
edt2: TEdit;
btn1: TButton;
btn2: TButton;
dlgOpen1: TOpenDialog;
dlgSave1: TSaveDialog;
procedure btn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{点击 打开 按钮}
procedure TForm1.btn1Click(Sender: TObject);
begin
if dlgOpen1.Execute then //打开文档选择
begin
edt1.Text:=dlgOpen1.FileName; //将选中的文档名赋值到输入框
end;
end;
{点击 复制 按钮}
procedure TForm1.btn2Click(Sender: TObject);
var
Sfilename,Dfilename:string; //源文件名、目标文件名
F1,F2:TextFile;
ch:Char;
begin
if dlgSave1.Execute then //打开保存文件对话框
begin
edt2.Text:=dlgSave1.FileName; //目标文件名
Sfilename:=edt1.Text;//源文件名
Dfilename:=edt2.Text+'.txt'; //目标文件名
if Length(Sfilename) <> 0 then //源文件名不能为空
begin
AssignFile(F1,Sfilename);//将源文件和F1文件型变量联系到一起
Reset(F1); //读打开文件
if Length(Dfilename)<>0 then
begin
AssignFile(F2,Dfilename);
Rewrite(F2);
while not Eof(F1) do // 当未到文件末尾时循环
begin
read(F1,ch);
write(F2,ch);
end;
CloseFile(F2);
end
else
ShowMessage('目标文件名必须输入');
CloseFile(F1); //关闭文件
showmessage('复制完成');
end
else
ShowMessage('源文件名必须输入');
end;
end;
{窗体初始化}
procedure TForm1.FormCreate(Sender: TObject);
begin
dlgOpen1.Filter:='文本文档(*.txt)|*.TXT';
dlgSave1.Filter:='文本文档(*.txt)|*.TXT';
end;
end.