如何在按下一个Form右上角的最小化按钮后执行一些代码?(50分)

  • 主题发起人 主题发起人 phenix3344
  • 开始时间 开始时间
P

phenix3344

Unregistered / Unconfirmed
GUEST, unregistred user!
用OnMinimize,帮助里有例子。
Application.OnMinimize
 
在OnResize里用
if WindowState=wsMinimized then
就可以判断出最小化事件了.
 
这是完美的代码,不论是主窗体,还是子窗体,都适用。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure WMSysCommand(var Msg: TWMSysCommand)
message WM_SYSCOMMAND;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }


{ TForm1 }

procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
{ 如果想在按下最小化按钮后,只做你想做的事情,而不想让窗口最小化 }
if Msg.CmdType = SC_MINIMIZE then
ShowMessage('wo shi xiaobenben');
else
inherited;

{ 如果想在按下最小化按钮后,先做你想做的事情,再让窗口最小化 }
if Msg.CmdType = SC_MINIMIZE then
ShowMessage('wo shi xiaobenben');
inherited;

{ 如果想在按下最小化按钮后,先让窗口最小化,再做你想做的事情 }
inherited;
if Msg.CmdType = SC_MINIMIZE then
ShowMessage('wo shi xiaobenben');
end;

end.
 
procedure AppMessage(var Msg:TWMSYSCOMMAND);message WM_SYSCOMMAND;
procedure tform1.AppMessage(var Msg:TWMSYSCOMMAND);
begin
if msg.CmdType=sc_minimize then
showmessage('最小化')
else if Msg.CmdType = SC_Maximize then
showmessage('最大化');
inherited;
end;
 
代码:
 if form1.WindowState=wsMinimized then form1.Close;
 
都说了,我还能说什么呢!
 
什么也不用说
 
截取sc_minimize消息
 
多人接受答案了。
 
后退
顶部