delphi中form1中的一个edit后面有个按钮,点击按钮弹出窗口form2,在弹出窗口form2中,根据选择条件查询出来的结果选中一条记录,点击确定按钮,使选中的值显示在form1中的那个edit框中,请问在form1的那个button事件中怎么写才能调用到form2中的确定按钮事件,请大家帮帮,急急急。。谢谢

解决方案 »

  1.   

    procedure buttononclick( sender );
    var
      form2: TForm2;
    begin
      form2 := TForm2.create(nil);
      try
        if form2.showmodal = mrok then
          edt1.text := form2.xxx; //使用属性或方法
      finally
        form2.free;
      end;
    end;
      

  2.   

    在form2的单元文件中,form2的类前面定义如下:
    type TFOnMessagBack = procedure(psMessage: string) of object;
    在form2的类中申明一个私有成员:
    private:
       FOnMessagBack: TFOnMessagBack;
    声明一个公共成员:
    public:
       property OnMessagBack: FOnMessagBack read FOnMessagBack write FOnMessagBack;
    然后在form1中创建完form2后,给form2的OnMessagBack属性赋值:OnMessagBack = FOperateMessag;这个FOperateMessag是你在form1中定义的处理form2中传回来的消息的函数,它的定义必须和form2中的TFOnMessagBack一样,即:procedure FOperateMessag(psMessage: string);至于实现就你自己写了,按你的意思就是把psMessage赋值给button的caption。接下来,在form2的按钮点击事件中调用FOnMessagBack,如下:
    if assigned(FOnMessagBack) then
     FOnMessagBack('我要回传的字符串');
    这样,form1中的FOperateMessag就能被触发,接到form2中按钮点击后传回来的字符串了。 
    上面的代码都是在这里敲的,可能会有个别错误的,请楼主自己核实下!希望能报道LZ!
      

  3.   

    2楼的方法貌似需要等待form2关闭后才能返回...