全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1872
推到 Plurk!
推到 Facebook!

如何點擊「關閉」缺實現「最小化」

尚未結案
ffprince
初階會員


發表:66
回覆:62
積分:25
註冊:2003-08-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-04 16:26:53 IP:218.85.xxx.xxx 未訂閱
如何實現:點擊界面右上角的「×(關閉)」,卻實現的是最小化的功能?並且在屏幕右下角的任務欄中顯示為小圖標?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-04 17:06:09 IP:202.39.xxx.xxx 未訂閱
1.可在 Form 的 OnClose Event 中設定 CloseAction 參數為 caHide 2.螢幕右下方的小 icon 部份以 TrayIcon 做搜尋即可得到範例
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-05 03:41:36 IP:61.222.xxx.xxx 未訂閱
補充:    >點擊界面右上角的「×(關閉)」,卻實現的是最小化的功能?    
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure ONSYSCOMMAND(Var Msg:TMessage);Message WM_SYSCOMMAND;
  public
  { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}    procedure TForm1.ONSYSCOMMAND(Var Msg:TMessage);
begin
  { 按下關閉按鈕等於按下最小化 }
  Case MSg.WParam of
    SC_CLOSE : MSg.WParam := SC_MINIMIZE;
  end;
  inherited;
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  CLOSE; {才可以關掉!}
end;    
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-05 10:31:48 IP:222.35.xxx.xxx 未訂閱
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } PROCEDURE WMCLOSE(var Msg:TMessage); Message WM_CLOSE; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMCLOSE(var Msg:TMessage); begin APPLICATION.Minimize; end; end.
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-05 10:42:18 IP:222.35.xxx.xxx 未訂閱
//重新補充一下 //先將FORM1的ICO屬性加一個ICO圖標,它將在最小化時在右下角顯示。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, SHELLAPI; CONST WM_BARICON=WM_USER 200; type TForm1 = class(TForm) private { Private declarations } PROCEDURE WMCLOSE(var Msg:TMessage); Message WM_CLOSE; procedure WMSysCommand(var LMessage: TMessage); message WM_SYSCOMMAND; procedure WMBarIcon(var LMessage:TMessage);message WM_BARICON; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMCLOSE(var Msg:TMessage); begin MSG.WParam := SC_ICON; WMSysCommand( MSG); end; procedure TForm1.WMSysCommand(var LMessage:TMessage); var lpData:PNotifyIconData; // TP: array [0..63] of AnsiChar; begin if LMessage.WParam = SC_ICON then begin //如果用户最小化窗口则将窗口 隐藏并在任务栏上添加图标 lpData := new(PNotifyIconDataA); lpData.cbSize := 88; //SizeOf(PNotifyIconDataA); lpData.Wnd := Form1.Handle; lpData.hIcon := Form1.Icon.Handle; lpData.uCallbackMessage := WM_BARICON; lpData.uID :=0; lpData.szTip := '我的應用程序'; lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; Shell_NotifyIcon(NIM_ADD,lpData); dispose(lpData); Form1.Visible := False; end else begin //如果是其它的SystemCommand 消息则调用系统缺省处理函数处理之。 DefWindowProc(Form1.Handle,LMessage.Msg,LMessage.WParam,LMessage.LParam); end; end; procedure TForm1.WMBarIcon(var LMessage:TMessage); var lpData:PNotifyIconData; X, Y:INTEGER; // A, B:TAGMOUSEMOVEPOINT; , Z begin if (LMessage.LParam = WM_LBUTTONDOWN) then begin //如果用户点击任务栏图标则将图标删除并回复窗口。 lpData := new(PNotifyIconDataA); lpData.cbSize := 88; //SizeOf(PNotifyIconDataA); lpData.Wnd := Form1.Handle; lpData.hIcon := Form1.Icon.Handle; lpData.uCallbackMessage := WM_BARICON; lpData.uID :=0; // lpData.szTip := 'Samples'; lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; Shell_NotifyIcon(NIM_DELETE,lpData); dispose(lpData); Form1.Visible := True; END; end; end.
ffprince
初階會員


發表:66
回覆:62
積分:25
註冊:2003-08-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-08 11:40:26 IP:220.160.xxx.xxx 未訂閱
在Window 2000 Professional下运行cxg大侠的程序,应该说相当完美。 但在Window 2000 Server下运行,一打开程序(并为让其最小化)软件却自动最小化,而且是像普通的最小化那样最小化到正下方的工具栏,而不是右下角的任务栏,且无法“还原”为原始界面,右键点击只有“关闭”项可选,请问如何解决?
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-09 10:33:10 IP:211.74.xxx.xxx 未訂閱
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin   Action:=caNone;   WindowState:=wsMinimized; end;    
系統時間:2024-05-08 14:07:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!