請問我該如何把tray顯示右鍵選單,在任何位置按左鍵關閉它 |
答題得分者是:pcernet
|
17kobe
初階會員 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
http://bp3.blogger.com/_RE7dYdcDtCM/RtmtaWL3BrI/AAAAAAAAAKs/MVGLoOakgAc/s1600-h/trayicon.JPG
http://bp2.blogger.com/_RE7dYdcDtCM/Rtmr6GL3BoI/AAAAAAAAAKU/CqswoNBEnFY/s1600-h/trayicon2.JPG 以上為圖示 請問我該如何把tray顯示右鍵選單,在任何位置按左鍵關閉它,改到現在不知道如何來再下手。 <textarea class="delphi" rows="10" cols="60" name="code">unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellAPI, Menus; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Button2: TButton; PopupMenu1: TPopupMenu; asdf1: TMenuItem; N2342341: TMenuItem; N1: TMenuItem; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public procedure WndProc(var Msg: TMessage); override; // tray icon 的 call back function { Public declarations } end; const WM_MYTRAYNOTIFY=WM_USER 1; //定義 wm message var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var tray_nid: TNotifyIconData; tray_icon: TIcon; begin tray_icon:= TIcon.Create; tray_icon.LoadFromFile('COLOR_BL.ICO'); tray_nid.cbSize := sizeof(tray_nid); tray_nid.Wnd := self.Handle; // blueicon 設定uID為 200 tray_nid.uID := 200; tray_nid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; // NIF_MESSAGE 設定 message wm_xxx // NIF_ICON 設定 ICON // NIF_TIP 設定 提示訊息 tray_nid.hIcon := tray_icon.Handle; tray_nid.uCallbackMessage := WM_MYTRAYNOTIFY; StrPCopy(tray_nid.szTip, '工具任按鈕提示'); Shell_NotifyIcon(NIM_ADD, @tray_nid); tray_icon.Free; end; procedure TForm1.Button2Click(Sender: TObject); var tray_nid: TNotifyIconData; begin tray_nid.cbSize := sizeof(tray_nid); tray_nid.Wnd := self.Handle; // blueicon 設定為 200 tray_nid.uID := 200; Shell_NotifyIcon(NIM_DELETE, @tray_nid); end; procedure TForm1.WndProc(var Msg: TMessage); var pt: TPOINT; curpos, curaction, curicon: string; begin if Msg.Msg = WM_MYTRAYNOTIFY then begin // ICON 的 uID case Msg.WParam of 200: curicon := 'blue icon mouse action: '; 300: curicon := 'green icon mouse action: '; end; GetCursorPos(pt); curpos := 'X: ' IntToStr(pt.X) ', Y: ' IntToStr(pt.Y); // 滑鼠的按鍵動作 case Msg.LParam of WM_LBUTTONDOWN: curaction := 'Left Button Down '; WM_RBUTTONDOWN: curaction := 'Right Button Down '; WM_LBUTTONUP: curaction := 'Left Button Up '; WM_RBUTTONUP: begin curaction := 'Right Button up '; popupmenu1.popup(pt.X,pt.Y ); end; WM_MOUSEMOVE: curaction := 'Mouse Move '; WM_LBUTTONDBLCLK: curaction := 'Left Button DoubleClick '; WM_RBUTTONDBLCLK: curaction := 'Right Button DoubleClick '; end; Memo1.Lines.Add(curicon ' ' curaction ' ' curpos); //訊息由目前的圖示,滑鼠位置及滑鼠按鍵 組成 end; inherited; end; end.</textarea> |
pcernet
初階會員 發表:69 回覆:113 積分:41 註冊:2002-11-29 發送簡訊給我 |
|
17kobe
初階會員 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |