子窗体调用主窗体事件的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 胆儿肥
  • 开始时间 开始时间

胆儿肥

Unregistered / Unconfirmed
GUEST, unregistred user!
子窗体用showmodal打开,关闭时(OnDestroy))调用主窗体的事件(不想用消息机制),这个事件涉及到数据操作和显示(ADOQuery和DBGrid),试过自定义过程和Button事件都不行,感觉好象这个事件不操作主窗体才行得通,比如弹出一个消息窗口之类的.请教各位!(分数不多了请见谅)
 
你要这样做,比如:
先定义几个全局变量用于在主窗体和子窗体间传递数据

var
s:string;
... ...

然后在主窗体按钮中:
childform.showmodule=mbok then showmessage(s);
 
全局变量是有的,后面是childform.showmodule=mbcancel then...吗?
 
var
s:string;
... ...

然后在主窗体按钮中:
if childform.showmodule=mbok then showmessage(s) //如果点击了模态窗体的确定
else ......

要注意,子窗口上的确定按钮modalResult属性应该设定为mrOk
 
试了还是不行,不知道怎么回事?
 
假设你的主窗体为Form1,Form2为动态生成的窗体。Form2上面又两个Button,他们的ModalResult属性分别为:mrOK和mrCancel。这样,通过判断Form2的ModalResult属性就可以知道用户点了哪个Button,你就不用在Form2的ButtonClick事件里面写代码判断了。有时候,你都完全不必在Form2单元中写任何代码。
简单的例子:
procedure TForm1.Button1Click(Sender: TObject);
var
Form2: TForm2;
mr: TModalResult;
begin
Form2 := TForm2.Create(Self);
try
mr := Form2.ShowModal;
case mr of
mrOK: ShowMessage('OK');
mrCancel: ShowMessage('Cancel');
end;
finally
FreeAndNil(Form2);
end;
end;
 
我不知道你说的是什么意思,凭感觉好像是主窗体与showmodal子窗体变量传递的问题,
因为这个我以前遇过。我当时是这么写的程序:
procedure TForm1.Button1Click(Sender: TObject);
var
childForm: TForm2;
begin
childForm:= TForm2.create(nil);
try
childForm.MyShowModal(param1)//这是我自己写的ShowMadal函数,靠param1传参数
finally
childForm.free;
end;
end;

procedure TForm1.MyShowModal(param1);
begin
...//注意:我是在这里进行参数的传递的
inherited ShowModal;//然后再调用系统的ShowModal函数,显示子窗体
end;

我想你的问题可能会合我当时的差不多,供参考
 
不是主窗体与showmodal子窗体变量传递的问题.
我用wooiguo的办法解决了.分数少但心里非常谢谢各位!
 
后退
顶部