当我按下最大化,最小化按钮时,事件是在哪个类里处理的?

comecsdn 2003-04-22 09:50:41
怎样自定义 最大化, 最小化,消息?
...全文
43 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
blueshu 2003-04-22
  • 打赏
  • 举报
回复
同意楼上
u2m 2003-04-22
  • 打赏
  • 举报
回复
处理WMSysCommand 消息
gwsr 2003-04-22
  • 打赏
  • 举报
回复
ApplicationEvents控件就有最小化事件,是OnMinimize,不过楼上的办法最好!
sysu 2003-04-22
  • 打赏
  • 举报
回复
unit Unit1;

interface

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

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

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
case Message.CmdType of
SC_MAXIMIZE: ShowMessage('最大化');
SC_MINIMIZE: ShowMessage('最小化');
end;
inherited;
end;

end.
FrameSniper 2003-04-22
  • 打赏
  • 举报
回复
Application的方法Minimize才和最小化有关系,OnMinimize是在最小化这个动作发生的时候触发的一个事件而已!!!!
火龙岛主 2003-04-22
  • 打赏
  • 举报
回复
又学了一招!长见识了,:P
ehom 2003-04-22
  • 打赏
  • 举报
回复
Application.OnMinimize是什么?它和窗体的最小化其实没关系,只有主窗体的最小化才会触发该事件,其中机妙,从VCL中可得到答案

procedure TCustomForm.WMSysCommand(var Message: TWMSysCommand);
begin
with Message do
begin
if (CmdType and $FFF0 = SC_MINIMIZE) and (Application.MainForm = Self) then
Application.WndProc(TMessage(Message))//就是这里,明白?
else if (CmdType and $FFF0 <> SC_MOVE) or (csDesigning in ComponentState) or
(Align = alNone) or (WindowState = wsMinimized) then
inherited;
if ((CmdType and $FFF0 = SC_MINIMIZE) or (CmdType and $FFF0 = SC_RESTORE)) and
not (csDesigning in ComponentState) and (Align <> alNone) then
RequestAlign;
end;
end;

如果不是MainForm,它们之间没关系

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧