首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关闭其中一个mdi子窗体,怎样在主窗体显示当前活动子窗体的caption解决方案

2012-09-18 
关闭其中一个mdi子窗体,怎样在主窗体显示当前活动子窗体的caption关闭其中一个mdi子窗体,怎样在主窗体显示

关闭其中一个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;

热点排行