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

封闭其中一个mdi子窗体,怎样在主窗体显示当前活动子窗体的caption

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

热点排行