我要写个小的程序,一个appliaciton有2个FORM,FORM1上有个EDTI1,它的默认值是‘111’,FORM2上什么都没有,我要实现的功能是,在FORM1上的EDIT1内输入非111的值,会发送个消息到FORM2上,并给出提示,但是下面碰到了问题,主要是在FORM1形成中,FORM2的句柄HANDLE报错,因为那时候FORM2还没形成,不知道怎么解决,请教。代码如下:
procedure TForm1.Edit1Change(Sender: TObject);
begin
if  (form2.Handle=null)  then form2:=tform2.Create(self); //这里出错了,提示无法访问,估计是在application.run的时候,FORM2还没有形成,不知道怎么解决。其中,消息wm_user1是定义在form2里的。对消息的处理也写在form2里。 
     postmessage(form2.Handle,wm_user1,0,0); 
     
end;

解决方案 »

  1.   

    没必要有消息的,
    先把form2创建并隐藏,form1的EDIT1内容change事件里判断输入内容,直接调用form1的方法即可。
      

  2.   

    判断是否创建用if not assigned(form2) then  form2:=tform2.Create(self)记得form2.free后再加一句form2:=nil;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if not assigned(Form2) then
        Form2 := TForm2.create(Application);
      postmessage(form2.Handle,wm_user1,0,0);  Form2.showmodal;
      form2.free;
      form2 := nil;
    end;