导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
wufen (wufen)
★☆☆☆☆
-
盒子活跃会员
2003/5/19 10:35:27
标题:
加入我的收藏
楼主:
如何实现在窗体上添加三个按钮,分别实现最小化,最大化,关闭
----------------------------------------------
delphi菜鸟
作者:
wufen (wufen)
★☆☆☆☆
-
盒子活跃会员
2003/5/19 11:41:48
1楼:
这是个简单地问题,但我就是不会,大家帮帮忙啊
----------------------------------------------
delphi菜鸟
作者:
2003/5/19 11:47:32
2楼:
WindowState:=wsMinimized WindowState:=wsMaximized self.close
----------------------------------------------
链接:https://pan.baidu.com/s/12jzmECYKhGCsHBxz8tmB6w 提取码:pelr --来自百度网盘超级会员V9的分享
作者:
wufen (wufen)
★☆☆☆☆
-
盒子活跃会员
2003/5/19 19:32:53
3楼:
WindowState:=wsMinimized 只能使窗口最小化左边,怎样才能实现最小化按钮的功能呢?就是最小化到任务栏??
----------------------------------------------
delphi菜鸟
作者:
boy (阿門)
★☆☆☆☆
-
盒子活跃会员
2003/5/19 20:24:22
4楼:
程序縮小為任務條右下角的小圖標(轉載) 某些程序運行啟動後並不出現在任務條中,而是縮小為任務條右下角的一 個小圖標,當鼠標移到這個小圖標上時會出現一些提示信息、單擊該小圖標會 執行一些特定的操作。便如任務條右下角的小喇叭圖標,單擊它會彈出一個簡 單的音量控制條,雙擊會啟動另一個更大的音量控制程序。 在Shell32.DLL動態鏈接庫中包括一個函數Shell_NotifyIconA()可通知 Windows在任務條右下角加入一個小圖標,可惜該函數的詳細說明未收入Delphi 的幫助文檔中,下面以一個簡單的實例來說明如果使用該函數。 unit Unit1; interface { 記住在uses部分中包括 ShellAPI} uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, StdCtrls; {自定義消息,當小圖標捕捉到鼠標事件時Windows向回調函數發送此消息} {自定義消息,當小圖標捕捉到鼠標事件時Windows向回調函數發送此消息} const MY_MESSAGE = WM_USER + 100; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormPaint(Sender: TObject); private procedure OnIconNotify(var Message: TMessage); message MY_MESSAGE; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} {當小圖標捕捉到鼠標事件時進入此過程} {當小圖標捕捉到鼠標事件時進入此過程} procedure TForm1.OnIconNotify(var Message: TMessage); const Busy: Boolean = false; begin if not Busy then begin Busy := true; if Message.LParam=WM_LBUTTONDOWN then if Application.MessageBox('Are you sure', 'Exit', MB_YESNO)=IDYES then Close; Busy := false; end; end; {當主Form建立時通知Windows加入小圖標} procedure TForm1.FormCreate(Sender: TObject); var nid: TNotifyIconData; begin nid.cbSize := sizeof(nid); // nid變量的字節數 nid.Wnd := Handle; // 主窗口句柄 nid.uID := -1; // 內部標識,可設為任意數 nid.hIcon := Application.Icon.Handle; // 要加入的圖標句柄,可任意指 nid.hIcon := Application.Icon.Handle; // 要加入的圖標句柄,可任意指 nid.szTip := 'This is a test application'; // 提示字符串 nid.uCallbackMessage := MY_MESSAGE; // 回調函數消息 nid.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE; // 指明哪些字段有 if not Shell_NotifyIcon(NIM_ADD, @nid) then begin ShowMessage('Failed!'); Application.Terminate; end; {將程序的窗口樣式設為TOOL窗口,可避免在任務條上出現} SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); end; {程序被關閉時通知Windows去掉小圖標} procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var nid: TNotifyIconData; begin nid.cbSize := sizeof(nid); // nid變量的字節數 nid.cbSize := sizeof(nid); // nid變量的字節數 nid.uID := -1; //內部標識,與加入小圖標時的數一致 nid.Wnd := Handle; //主窗口句柄 Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小圖標 Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小圖標 end; {主窗口初始化完畢並顯示時將激活Paint重畫事件,此時將主窗口隱藏} procedure TForm1.FormPaint(Sender: TObject); begin Hide; end; end. 上例中將程序的圖標放在任務條右下角,然後隱藏自身,當用戶移動鼠標 至該圖標上時會看到提示字符串,如果單擊該圖標會出現一個對話框,選擇Yes 退出程序並清除小圖標。
----------------------------------------------
Delphi開發◆伺服器架設◆免安裝APACHE,PHP,CGI Perl, MYSQL ★
作者:
2003/5/19 20:44:17
5楼:
谢谢 boy 不过我大概读了程序 好像不是实现窗口最小化功能的 我们的疑问是:点窗口中的最小化按钮(自制的按钮)后,如何使程序最小化到任务栏. (由于没有正式调试过,以上见解是我一时的想法)
----------------------------------------------
-/\ /\---->(个人之愚见,敬请大家指教!) ( ~_~ ) (?) (?)
作者:
boy (阿門)
★☆☆☆☆
-
盒子活跃会员
2003/5/19 22:32:55
6楼:
(轉載) unit Unit1; interface { 記住在uses部分中包括 ShellAPI} uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, StdCtrls, Menus; {自定義消息,當小圖標捕捉到鼠標事件時Windows向回調函數發送此消息} const MY_MESSAGE = WM_USER + 100; type TForm1 = class(TForm) PopupMenu1: TPopupMenu; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormPaint(Sender: TObject); private procedure OnIconNotify(var Message: TMessage); message MY_MESSAGE; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} {當小圖標捕捉到鼠標事件時進入此過程} procedure TForm1.OnIconNotify(var Message: TMessage); const Busy: Boolean = false; begin if not Busy then begin Busy := true; if Message.LParam=WM_LBUTTONDOWN then if Application.MessageBox('Are you sure','Exit', MB_YESNO)=IDYES then Close; Busy := false end; end; {當主Form建立時通知Windows加入小圖標} procedure TForm1.FormCreate(Sender: TObject); var nid: TNotifyIconData; begin nid.cbSize := sizeof(nid); // nid變量的字節數 nid.Wnd := Handle; // 主窗口句柄 nid.uID := 1; // 內部標識,可設為任意數 nid.hIcon := Application.Icon.Handle; // 要加入的圖標句柄,可任意指定 nid.szTip := 'This is a test application'; // 提示字符串 nid.uCallbackMessage := MY_MESSAGE; // 回調函數消息 nid.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE; // 指明哪些字段有效 if not Shell_NotifyIcon(NIM_ADD, @nid) then begin ShowMessage('Failed!'); Application.Terminate; end; {將程序的窗口樣式設為TOOL窗口,可避免在任務條上出現} SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); Hide; end; {程序被關閉時通知Windows去掉小圖標} procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var nid: TNotifyIconData; begin nid.cbSize := sizeof(nid); // nid變量的字節數 nid.uID := 1; //內部標識,與加入小圖標時的數一致 nid.Wnd := Handle; //主窗口句柄 Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小圖標 end; {主窗口初始化完畢並顯示時將激活Paint重畫事件,此時將主窗口隱藏} procedure TForm1.FormPaint(Sender: TObject); begin Hide end; end. ============================== object Form1: TForm1 Left = 192 Top = 107 Width = 544 Height = 375 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False OnClose = FormClose OnCreate = FormCreate OnPaint = FormPaint PixelsPerInch = 96 TextHeight = 13 object PopupMenu1: TPopupMenu Left = 142 Top = 74 end end
----------------------------------------------
Delphi開發◆伺服器架設◆免安裝APACHE,PHP,CGI Perl, MYSQL ★
作者:
2003/5/20 9:02:12
7楼:
试试吧! DefWindowProc(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0); DefWindowProc(Handle, WM_SYSCOMMAND, SC_CLOSE, 0); DefWindowProc(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
----------------------------------------------
作者:
fidido (swGuitar)
★☆☆☆☆
-
盒子活跃会员
2003/5/20 9:44:17
8楼:
长知识呀~~~~~~~~~~~
----------------------------------------------
我我,我是一只菜鸟,菜菜菜菜菜菜,菜菜菜菜菜菜菜菜菜菜菜菜~~~~~~~~~
作者:
wufen (wufen)
★☆☆☆☆
-
盒子活跃会员
2003/5/20 14:42:26
9楼:
真是。。长知识啊!!好好研究!!
----------------------------------------------
delphi菜鸟