我要写个小的程序,一个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;
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;
先把form2创建并隐藏,form1的EDIT1内容change事件里判断输入内容,直接调用form1的方法即可。
begin
if not assigned(Form2) then
Form2 := TForm2.create(Application);
postmessage(form2.Handle,wm_user1,0,0); Form2.showmodal;
form2.free;
form2 := nil;
end;