我有2个form:MainForm和SelectDIRForm
MainForm是主界面,SelectDIRForm是一个选择目录的界面,就像flashget中选择下载文件存放目录的那种界面。
MainForm有2个Edit和2个SpeedButton,两个SpeedButton的click事件都是创建SelectDIRForm,在选择目录后销毁SelectDIRForm,并返回选择的目录路径到和SpeedButton对应的Edit中问题是这样的,我想让按SpeedButton1后返回的值赋到Edit1中,按SpeedButton2后返回的值赋到Edit2中,我想请问该怎么确定是哪个SpeedButton被按下了,即返回的路径应该赋到Edit1还是Edit2代码:=======MainForm的========
procedure TMainForm.SpdBtn_1Click(Sender: TObject);
begin
Application.CreateForm(TSelectDir, SelectDir);
SelectDir.ShowModal;
end;procedure TMainForm.SpdBtn_2Click(Sender: TObject);
begin
Application.CreateForm(TSelectDir, SelectDir);
SelectDir.ShowModal;
end;
============SelectDIRForm的================
procedure TSelectDir.Button1Click(Sender: TObject);
var
str: String;
begin
str:= ShellTreeView1.SelectedFolder.PathName;
if copy(str,pos(':',str)+1,1) <> '\' then str:=str + '\';
//就是这里,我想应该有个判断,来分别应该把值赋到哪个Edit中
MainForm.Edit1.Text:= str
MainForm.Edit2.Text:= str;
Close;
end;
MainForm是主界面,SelectDIRForm是一个选择目录的界面,就像flashget中选择下载文件存放目录的那种界面。
MainForm有2个Edit和2个SpeedButton,两个SpeedButton的click事件都是创建SelectDIRForm,在选择目录后销毁SelectDIRForm,并返回选择的目录路径到和SpeedButton对应的Edit中问题是这样的,我想让按SpeedButton1后返回的值赋到Edit1中,按SpeedButton2后返回的值赋到Edit2中,我想请问该怎么确定是哪个SpeedButton被按下了,即返回的路径应该赋到Edit1还是Edit2代码:=======MainForm的========
procedure TMainForm.SpdBtn_1Click(Sender: TObject);
begin
Application.CreateForm(TSelectDir, SelectDir);
SelectDir.ShowModal;
end;procedure TMainForm.SpdBtn_2Click(Sender: TObject);
begin
Application.CreateForm(TSelectDir, SelectDir);
SelectDir.ShowModal;
end;
============SelectDIRForm的================
procedure TSelectDir.Button1Click(Sender: TObject);
var
str: String;
begin
str:= ShellTreeView1.SelectedFolder.PathName;
if copy(str,pos(':',str)+1,1) <> '\' then str:=str + '\';
//就是这里,我想应该有个判断,来分别应该把值赋到哪个Edit中
MainForm.Edit1.Text:= str
MainForm.Edit2.Text:= str;
Close;
end;
procedure TSelectDir.Button1Click(Sender: TObject);
var
str: String;
begin
str:= ShellTreeView1.SelectedFolder.PathName;
if copy(str,pos(':',str)+1,1) <> '\' then str:=str + '\';
MainForm.Path:= str;
Close;
end;==============================
procedure TMainForm.SpdBtn_1Click(Sender: TObject);
begin
Application.CreateForm(TSelectDir, SelectDir);
SelectDir.ShowModal;
Edit1.Text := Path;
end;procedure TMainForm.SpdBtn_2Click(Sender: TObject);
begin
Application.CreateForm(TSelectDir, SelectDir);
SelectDir.ShowModal;
Edit2.Text := Path;
end;PS:但是我不赞成这样的方法,因为如果你可能弹出了SelectDir这个Form,但是没有选择路径,那么Edit里面得到的就是错误的路径。
1、定义一个函数用来现在这个SelectDir窗口。
function TMainForm.showSelectDir(var Path: String): Boolean;
begin
SelectDir := TSelectDir.Create(nil);
Result := SelectDir.ShowModal = mrOK;
Path := SelectDir.filedir;
SelectDir.Free;
end;2、在SelectDir中定义一个public变量filedir(String),再加两个按钮Btn1和Btn2,分别是‘选择路径’和‘退出’。
其中‘选择路径’:
procedure TSelectDir.Btn1Click(Sender: TObject);
begin
filedir := self.DirectoryListBox1.Directory;
self.ModalResult := mrOK;
end;‘退出’:
procedure TSaveDirF.Btn2Click(Sender: TObject);
begin
ModalResult := mrCancel;
end;调用的时候:
if not showSelectDir(Edit1.Text) then Edit1.Text := '';
或者:
if not showSelectDir(Edit2.Text) then Edit2.Text := '';
^_^
然后根据showmodal的返回值来判断,你按得是确定,还是取消,比如在SelectDIRForm窗体中,
你点击的是确定,可以在这个按钮的点击事件里写
ModalResult:=ID_OK;如果点击的时取消按钮的话,就是ModalResult:=ID_CANCEL;然后在你的MainForm窗体中,
procedure TMainForm.SpdBtn_1Click(Sender: TObject);
begin
Application.CreateForm(TSelectDir, SelectDir);
if SelectDir.ShowModal=ID_YES then
Edit1.Text := Path;
end;procedure TMainForm.SpdBtn_2Click(Sender: TObject);
begin
Application.CreateForm(TSelectDir, SelectDir);
if SelectDir.ShowModal=ID_YES then
Edit2.Text := Path;
end;