Delphi - 窗体最大化事件

3
我希望在表单最大化或恢复后调用一个函数。 我知道我可以像这样做:
procedure TfrmMain.WMSysCommand;
begin
   if (Msg.CmdType = SC_MAXIMIZE) OR (Msg.CmdType = SC_RESTORE) then
   begin
     Showmessage(IntToStr(frmMain.Height));
   end;
   DefaultHandler(Msg) ;
end;

但问题是:这个事件在表单实际调整大小之前就被触发了 - 所以当表单被最大化时,我得到的是表单在被最大化之前的高度(但我想要在它被最大化后的宽度)。

如何解决这个问题?谢谢!

2个回答

10

以下链接可能对您有帮助:

http://www.tek-tips.com/viewthread.cfm?qid=809465&page=176

在该单元的接口部分声明此内容。

Procedure sizeMove (var msg: TWMSize); message WM_SIZE; 

并实施此过程:

Procedure TfrmMain.sizeMove (var msg: TWMSize);
begin 
 inherited; 
 if (msg.SizeType = SIZE_MAXIMIZED) OR (msg.SizeType = SIZE_RESTORED)then   
  resizeQlikViewReports(); 
end;

2
如果您发布文章链接,能否请在链接后面附上一些关于该文章的信息,至少包括文章的标题? - Marjan Venema
@Marjan:我时间很紧,这就是只放链接的原因......下次我会更明确的 :) - RBA

0

你可以使用OnResize并检查WindowState。这是更简单的方法。


1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接