关闭其中一个mdi子窗体,怎样在主窗体显示当前活动子窗体的caption
关闭其中一个mdi子窗体,怎样在主窗体显示当前活动子窗体的caption?
在一个主窗体,打开了很多个子窗体,现在关闭其中一个mdi子窗体,怎样在主窗体的caption显示当前活动子窗体的caption?
不能在子窗体中写代码,只能在主窗体中写代码,也不能在主窗体的button或者菜单中写代码,我是想关闭了一个子窗体,主窗体马上显示当前活动子窗体的caption?可能做到吗?self.ActiveMDIChild.Caption这句该写在哪里?写在OnPaint事件上又没反应
[解决办法]
总得要有个事件来触发给主窗体标题赋值
建议这样,做一个父窗体,所有MDI子窗体继承它,然后在父窗体的Activate事件写代码
FrmMain.Caption:=Self.Caption;
[解决办法]
用消息,参考
type
TMainForm = class(TForm)
mem: TMemo;
procedure FormCreate(Sender: TObject);
private
FDefClientProc: TFarProc;
FClientInstance: TFarProc;
procedure ClientWndProc(var Message: TMessage);
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
FClientInstance := Classes.MakeObjectInstance(ClientWndProc);
FDefClientProc := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC));
SetWindowLong(ClientHandle, GWL_WNDPROC, Longint(FClientInstance));
end;
procedure TMainForm.ClientWndProc(var Message: TMessage);
begin
with Message do
begin
Result := CallWindowProc(FDefClientProc, ClientHandle, Msg, wParam, lParam);
if message.Msg = WM_MDIDESTROY then
mem.Lines.Add('子窗体已销毁');
end;
end;