Form1和Form2都可以调用Form3,Form3关闭时如何给调用它的窗体中的文本赋值?
如题。
[解决办法]
把Form3的OnFormClose事件的代码写在Form1/Form2当中。当Form1调用Form3时,设置Form3.OnClose:=Form3Close;
unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm2 = class(TForm) Label1: TLabel; btnCreateForm3: TButton; procedure btnCreateForm3Click(Sender: TObject); private { Private declarations } procedure Form3Close(Sender: TObject; var Action: TCloseAction); public { Public declarations } end;var Form2: TForm2;implementationusesUnit3;{$R *.dfm}var LocalForm3:TForm3;procedure TForm2.btnCreateForm3Click(Sender: TObject);begin LocalForm3:=TForm3.Create(Application); LocalForm3.OnClose := Form3Close; LocalForm3.Show;end;procedure TForm2.Form3Close(Sender: TObject; var Action: TCloseAction);begin Label1.Caption := 'Form3Close is Called!';end;end.
[解决办法]
很简单啊,先在form3设一个变量frmname,在创建form3时,如果form1调用
Application.CreateForm(TForm3,Form3);
Form3.frmname:='form1';
Form3.ShowModal;
如果是form2调用
Application.CreateForm(TForm3,Form3);
Form3.frmname:='form2';
Form3.ShowModal;
在form3的close事件写
if frmname='form1' then Form1.edit1:=XX;
if frmname='form2' then Form2.edit1:=XX;
[解决办法]
在Form3中定义一个用于选择学历的函数,并返回其值。
public function GetEducationLevel: String;
[解决办法]
上面的方法需要在TForm3之外负责创建和释放Form3实体对象。
如果Form3仅做单一用途,即只返回学历,建议在Form3中写个类方法
public class function GetEducationLevel: String;class function GetEducationLevel: String;begin with TForm3.Create(Nil) do try //将学历待选项添加到Form3上的Combobox控件中 if Form.ShowModal = mrOk then Result := Combobox1.Text //返回选择的学历 else Result := EmptyStr; finally Free; end;end;
[解决办法]
很简单啊,先在form3设一个变量frmname,在创建form3时,如果form1调用
Application.CreateForm(TForm3,Form3);
Form3.frmname:='form1';
Form3.ShowModal;
如果是form2调用
Application.CreateForm(TForm3,Form3);
Form3.frmname:='form2';
Form3.ShowModal;
在form3的close事件写
if frmname='form1' then Form1.edit1:=XX;
if frmname='form2' then Form2.edit1:=XX;
----------------------------
同意,我都是这样做的