delphi 关闭时缩小到托盘_最小化Delphi窗体到系统托盘

I am a Delphi learner. I am looking for solutions so that Delphi MainForm should be minimized to the System Tray instead of Taskbar. On Right Click on the System Tray Icon there should be some menus like "Restore" and "About" and "Help" etc. System Tray Icons will be loaded from Imagelis1 and it will animate. On Clicking on "Restore" the MainForm will be restored, on clicking on "About" "Form2" will be restored and on clicking on "Help" "Foprm3" will be restored. I have found so many solutions on internet like :

but every solutions have some drawbacks. Some can be done once ony. Some have blurred icon in Windows7. Someone may tell that there is no one to write codes for me and I have to show my codes. Plaese forgive me for this regards. Please give me concrete solution sot that it can be implemented universely without version dependency of windows. It will help every one. Please help me.

解决方案

This should get you going. Drop a TTrayIcon and a TApplicationEvents on your form. THe following code is from the TTrayIcon - Delphi Example from the docwiki. Use the IDE main menu, and choose Project->View Source, and the line that reads Application.ShowMainFormOnTaskbar := True; to `Application.ShowMainFormOnTaskbar := False;' to keep the application's button from appearing on the Windows Taskbar.

This example uses a tray icon and an application events component on a form. When the application runs, it loads the tray icon, the icons displayed when it is animated, and it also sets up a hint balloon. When you minimize the window, the form is hidden, a hint balloon shows up, and the tray icon is displayed and animated. Double-clicking the system tray icon restores the window.

// Add this to the `TApplicationEvents.OnMinimize` event handler

procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);

begin

{ Hide the window and set its state variable to wsMinimized. }

Hide();

WindowState := wsMinimized;

{ Show the animated tray icon and also a hint balloon. }

TrayIcon1.Visible := True;

TrayIcon1.Animate := True;

TrayIcon1.ShowBalloonHint;

end;

// Add this to the `TForm.OnCreate` event handler

procedure TForm1.FormCreate(Sender: TObject);

var

MyIcon : TIcon;

begin

{ Load the tray icons. }

TrayIcon1.Icons := TImageList.Create(Self);

MyIcon := TIcon.Create;

MyIcon.LoadFromFile('icons/earth1.ico');

TrayIcon1.Icon.Assign(MyIcon);

TrayIcon1.Icons.AddIcon(MyIcon);

MyIcon.LoadFromFile('icons/earth2.ico');

TrayIcon1.Icons.AddIcon(MyIcon);

MyIcon.LoadFromFile('icons/earth3.ico');

TrayIcon1.Icons.AddIcon(MyIcon);

MyIcon.LoadFromFile('icons/earth4.ico');

TrayIcon1.Icons.AddIcon(MyIcon);

{ Set up a hint message and the animation interval. }

TrayIcon1.Hint := 'Hello World!';

TrayIcon1.AnimateInterval := 200;

{ Set up a hint balloon. }

TrayIcon1.BalloonTitle := 'Restoring the window.';

TrayIcon1.BalloonHint :=

'Double click the system tray icon to restore the window.';

TrayIcon1.BalloonFlags := bfInfo;

end;

// Add this to the `TTrayIcon.OnDoubleClick` event handler

procedure TForm1.TrayIcon1DblClick(Sender: TObject);

begin

{ Hide the tray icon and show the window,

setting its state property to wsNormal. }

TrayIcon1.Visible := False;

Show();

WindowState := wsNormal;

Application.BringToFront();

end;

For the menu you get on right-click, add a TPopupMenu to your form, add the items you want on it, write the event handlers for those items as usual, and then assign the PopupMenu to the TrayIcon.PopupMenu property.

The "blurred icons" are caused by you not using the proper icon sizes and Windows being forced to scale (stretch) them. Use an icon editor to create multiple size images for each icon (there can be multiple sizes in one icon file).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值