CtMain.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:9k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit CtMain;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs,
  5.   StdCtrls, ExtCtrls, Menus, ImgList, CoolTrayIcon;
  6. type
  7.   TMainForm = class(TForm)
  8.     Button1: TButton;
  9.     Button2: TButton;
  10.     Button3: TButton;
  11.     PopupMenu1: TPopupMenu;
  12.     ShowWindow1: TMenuItem;
  13.     HideWindow1: TMenuItem;
  14.     N1: TMenuItem;
  15.     Exit1: TMenuItem;
  16.     ImageList1: TImageList;
  17.     rdoCycle: TRadioGroup;
  18.     GroupBox1: TGroupBox;
  19.     Label1: TLabel;
  20.     Label2: TLabel;
  21.     GroupBox2: TGroupBox;
  22.     Label3: TLabel;
  23.     Edit1: TEdit;
  24.     CheckBox1: TCheckBox;
  25.     CheckBox2: TCheckBox;
  26.     CheckBox3: TCheckBox;
  27.     CheckBox4: TCheckBox;
  28.     CheckBox5: TCheckBox;
  29.     CheckBox6: TCheckBox;
  30.     Label7: TLabel;
  31.     ComboBox1: TComboBox;
  32.     TrayIcon1: TCoolTrayIcon;
  33.     Edit2: TEdit;
  34.     Label4: TLabel;
  35.     ImageList2: TImageList;
  36.     ImageList3: TImageList;
  37.     ImageList4: TImageList;
  38.     ImageList5: TImageList;
  39.     ImageList6: TImageList;
  40.     Button4: TButton;
  41.     N2: TMenuItem;
  42.     BalloonHint1: TMenuItem;
  43.     GroupBox3: TGroupBox;
  44.     Label5: TLabel;
  45.     Label6: TLabel;
  46.     Button5: TButton;
  47.     Button6: TButton;
  48.     ImageList7: TImageList;
  49.     procedure FormCreate(Sender: TObject);
  50.     procedure ShowWindow1Click(Sender: TObject);
  51.     procedure HideWindow1Click(Sender: TObject);
  52.     procedure Exit1Click(Sender: TObject);
  53.     procedure Button1Click(Sender: TObject);
  54.     procedure Button2Click(Sender: TObject);
  55.     procedure Edit1Change(Sender: TObject);
  56.     procedure CheckBox1Click(Sender: TObject);
  57.     procedure CheckBox2Click(Sender: TObject);
  58.     procedure TrayIcon1MouseDown(Sender: TObject; Button: TMouseButton;
  59.       Shift: TShiftState; X, Y: Integer);
  60.     procedure TrayIcon1MouseMove(Sender: TObject; Shift: TShiftState;
  61.       X, Y: Integer);
  62.     procedure CheckBox3Click(Sender: TObject);
  63.     procedure CheckBox4Click(Sender: TObject);
  64.     procedure CheckBox5Click(Sender: TObject);
  65.     procedure ComboBox1Change(Sender: TObject);
  66.     procedure rdoCycleClick(Sender: TObject);
  67.     procedure TrayIcon1Cycle(Sender: TObject; NextIndex: Integer);
  68.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  69.     procedure Button4Click(Sender: TObject);
  70.     procedure TrayIcon1MouseExit(Sender: TObject);
  71.     procedure TrayIcon1MouseEnter(Sender: TObject);
  72.     procedure TrayIcon1Startup(Sender: TObject; var ShowMainForm: Boolean);
  73.     procedure TrayIcon1BalloonHintClick(Sender: TObject);
  74.     procedure Button5Click(Sender: TObject);
  75.     procedure Button6Click(Sender: TObject);
  76.   private
  77.     // Some extra stuff necessary for the "Close to tray" option:
  78.     SessionEnding: Boolean;
  79.     procedure WMQueryEndSession(var Message: TMessage); message WM_QUERYENDSESSION;
  80.   end;
  81. var
  82.   MainForm: TMainForm;
  83. implementation
  84. {$R *.DFM}
  85. procedure TMainForm.FormCreate(Sender: TObject);
  86. begin
  87.   Edit1Change(Self);
  88.   CheckBox1Click(Self);
  89.   CheckBox2Click(Self);
  90.   CheckBox3Click(Self);
  91.   CheckBox4Click(Self);
  92.   CheckBox5Click(Self);
  93.   rdoCycleClick(Self);
  94.   ComboBox1.ItemIndex := 0;
  95. end;
  96. procedure TMainForm.ShowWindow1Click(Sender: TObject);
  97. begin
  98.   TrayIcon1.ShowMainForm;    // ALWAYS use this method!!!
  99. end;
  100. procedure TMainForm.HideWindow1Click(Sender: TObject);
  101. begin
  102.   Application.Minimize;      // Will hide dialogs and popup windows as well (this demo has none)
  103.   TrayIcon1.HideMainForm;
  104. end;
  105. procedure TMainForm.Exit1Click(Sender: TObject);
  106. begin
  107.   // We kill the "Close to tray" feature to be able to exit.
  108.   if CheckBox6.Checked then
  109.     CheckBox6.Checked := False;
  110.   Close;
  111. end;
  112. procedure TMainForm.Button1Click(Sender: TObject);
  113. begin
  114.   HideWindow1Click(Self);
  115. end;
  116. procedure TMainForm.Button2Click(Sender: TObject);
  117. begin
  118.   TrayIcon1.IconVisible := not TrayIcon1.IconVisible;
  119. end;
  120. procedure TMainForm.Button6Click(Sender: TObject);
  121. begin
  122.   if IsWindowVisible(Application.Handle) then
  123.     TrayIcon1.HideTaskbarIcon
  124.   else
  125.     TrayIcon1.ShowTaskbarIcon;
  126. end;
  127. procedure TMainForm.Button4Click(Sender: TObject);
  128. begin
  129.   TrayIcon1.ShowBalloonHint('Balloon hint',
  130.         'Use the balloon hint to display important information.' + #13 +
  131.         'The text can be max. 255 chars. and the title max. 64 chars.',
  132.         bitInfo, 10);
  133. end;
  134. procedure TMainForm.Button5Click(Sender: TObject);
  135. begin
  136.   TrayIcon1.HideBalloonHint;
  137. end;
  138. procedure TMainForm.Edit1Change(Sender: TObject);
  139. begin
  140.   TrayIcon1.Hint := Edit1.Text;
  141. end;
  142. procedure TMainForm.CheckBox1Click(Sender: TObject);
  143. begin
  144.   TrayIcon1.ShowHint := CheckBox1.Checked;
  145. end;
  146. procedure TMainForm.CheckBox2Click(Sender: TObject);
  147. begin
  148.   if Assigned(PopupMenu1) then
  149.     PopupMenu1.AutoPopup := CheckBox2.Checked;
  150. end;
  151. procedure TMainForm.CheckBox3Click(Sender: TObject);
  152. begin
  153.   TrayIcon1.LeftPopup := CheckBox3.Checked;
  154. end;
  155. procedure TMainForm.CheckBox4Click(Sender: TObject);
  156. begin
  157.   TrayIcon1.Enabled := CheckBox4.Checked;
  158. end;
  159. procedure TMainForm.CheckBox5Click(Sender: TObject);
  160. begin
  161.   TrayIcon1.MinimizeToTray := CheckBox5.Checked;
  162. end;
  163. procedure TMainForm.ComboBox1Change(Sender: TObject);
  164. begin
  165.   TrayIcon1.Behavior := TBehavior(ComboBox1.ItemIndex);
  166. end;
  167. procedure TMainForm.TrayIcon1MouseDown(Sender: TObject;
  168.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  169. begin
  170.   if Assigned(PopupMenu1) then
  171.     if not PopupMenu1.AutoPopup then
  172.     begin
  173.       SetForegroundWindow(Application.Handle);  // Move focus from tray icon to this form
  174.       MessageDlg('The popup menu is disabled.', mtInformation, [mbOk], 0);
  175.     end;
  176. end;
  177. procedure TMainForm.TrayIcon1MouseMove(Sender: TObject; Shift: TShiftState;
  178.   X, Y: Integer);
  179. var
  180.   Pt: TPoint;
  181. begin
  182.   Label1.Caption := 'Mouse pos.: ' + IntToStr(X) + ',' + IntToStr(Y);
  183.   Label2.Caption := 'Key status: ';
  184.   if ssCtrl in Shift then
  185.     Label2.Caption := Label2.Caption + ' Ctrl ';
  186.   if ssAlt in Shift then
  187.     Label2.Caption := Label2.Caption + ' Alt ';
  188.   if ssShift in Shift then
  189.     Label2.Caption := Label2.Caption + ' Shift ';
  190.   // Get client coords.
  191.   Pt := TrayIcon1.GetClientIconPos(X, Y);
  192.   Label6.Caption := 'Client pos.: ' + IntToStr(Pt.X) + ',' + IntToStr(Pt.Y);
  193. end;
  194. procedure TMainForm.rdoCycleClick(Sender: TObject);
  195. begin
  196.   case rdoCycle.ItemIndex of
  197.     0: begin
  198.       TrayIcon1.CycleIcons := False;
  199.       TrayIcon1.IconList := nil;
  200.       ImageList1.GetIcon(0, TrayIcon1.Icon);
  201.       Edit2.Text := IntToStr(TrayIcon1.IconIndex);
  202.     end;
  203.     1: begin
  204.       TrayIcon1.IconList := ImageList1;
  205.       TrayIcon1.CycleInterval := 400;
  206.       TrayIcon1.CycleIcons := True;
  207.     end;
  208.     2: begin
  209.       TrayIcon1.IconList := ImageList2;
  210.       TrayIcon1.CycleInterval := 400;
  211.       TrayIcon1.CycleIcons := True;
  212.     end;
  213.     3: begin
  214.       TrayIcon1.IconList := ImageList3;
  215.       TrayIcon1.CycleInterval := 300;
  216.       TrayIcon1.CycleIcons := True;
  217.     end;
  218.     4: begin
  219.       TrayIcon1.IconList := ImageList4;
  220.       TrayIcon1.CycleInterval := 100;
  221.       TrayIcon1.CycleIcons := True;
  222.     end;
  223.     5: begin
  224.       TrayIcon1.IconList := ImageList5;
  225.       TrayIcon1.CycleInterval := 400;
  226.       TrayIcon1.CycleIcons := True;
  227.     end;
  228.     6: begin
  229.       TrayIcon1.IconList := ImageList6;
  230.       TrayIcon1.CycleInterval := 100;
  231.       TrayIcon1.CycleIcons := True;
  232.     end;
  233.     7: begin
  234.       TrayIcon1.IconList := ImageList7;
  235.       TrayIcon1.CycleInterval := 150;
  236.       TrayIcon1.CycleIcons := True;
  237.     end;
  238.   end;
  239. end;
  240. procedure TMainForm.TrayIcon1Cycle(Sender: TObject; NextIndex: Integer);
  241. begin
  242.   Edit2.Text := IntToStr(TrayIcon1.IconIndex);
  243. end;
  244. procedure TMainForm.WMQueryEndSession(var Message: TMessage);
  245. { This method is a hack. It intercepts the WM_QUERYENDSESSION message.
  246.   This way we can decide if we want to ignore the "Close to tray" option.
  247.   Otherwise, when selected, the option would make Windows unable to shut down. }
  248. begin
  249.   SessionEnding := True;
  250.   Message.Result := 1;
  251. end;
  252. procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  253. begin
  254.   CanClose := ((not CheckBox6.Checked) or SessionEnding);
  255.   if not CanClose then
  256.   begin
  257.     TrayIcon1.HideMainForm;
  258.     TrayIcon1.IconVisible := True;
  259.   end;
  260. end;
  261. procedure TMainForm.TrayIcon1MouseEnter(Sender: TObject);
  262. begin
  263.   Label5.Caption := 'ENTER';
  264. end;
  265. procedure TMainForm.TrayIcon1MouseExit(Sender: TObject);
  266. begin
  267.   Label5.Caption := 'EXIT';
  268. end;
  269. procedure TMainForm.TrayIcon1Startup(Sender: TObject; var ShowMainForm: Boolean);
  270. begin
  271. //  ShowMainForm := False;
  272. end;
  273. procedure TMainForm.TrayIcon1BalloonHintClick(Sender: TObject);
  274. begin
  275.   SetForegroundWindow(Application.Handle);  // Move focus from tray icon to this form
  276.   ShowMessage('POP!');
  277. end;
  278. end.