• 全部
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

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

comecsdn 2003-04-22 09:50:41
怎样自定义 最大化, 最小化,消息?
...全文
8 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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,它们之间没关系
回复
发帖
Delphi
创建于2007-08-02

4868

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2003-04-22 09:50
社区公告
暂无公告