如题。

解决方案 »

  1.   

    Form3.Owner.Name这句可以查到是哪个窗体调用的Form3
    Form3中选中学历后关闭,如果是Form1调用的,则给Form1中的Edit1赋值;如果是Form2调用的,则给Form2中的Edit1赋值。
      

  2.   

    把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;implementation
    uses
    Unit3;
    {$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.
      

  3.   

    很简单啊,先在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;
      

  4.   


      在Form3中定义一个用于选择学历的函数,并返回其值。
      public
        function GetEducationLevel: String;
      Form1和Form2中做如下调用:
      Self.edtEducationLevel.Text := form3.GetEducationLevel;
      

  5.   

    上面的方法需要在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;在Form1和Form2中只需如下调用即可:
    Self.Edit1.Text := TForm3.GetEducationLevel;
      

  6.   

    //多个窗体访问一个窗体的时候可以这么指定:
    //在调用的窗体里设定一个全局变量 ParentTxt:string;        //子窗体的调用
             Application.CreateForm(TForm3,Form3); 
            Form3.Parent:=self; 
            Form3.ShowModal; 
    在form3的close事件写 
       self.parent.ParentTxt:=self.edit1.text;
    //这样做比较通用一些  安全性比较高  (我认为)   也可以利用消息机制来解决这个问题  
      

  7.   

    ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('Select * from spec');
      ADOQuery1.SQL.Add(' where spec like '+'''%'+Edit1.Text+'%''');
      ADOQuery1.Open;
    这是查询学历的语句,这句能放在函数中吗?
      

  8.   

    很简单啊,先在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; 
    ----------------------------------------------------------------同意,我都是这样做的