Hirdetés
- Kompakt vízhűtés
- Autós kamerák
- Milyen egeret válasszak?
- Androidos tablet topic
- Gyorsan cáfolta az Xbox hardverek lelövéséről szóló pletykákat a Microsoft
- Milyen házat vegyek?
- Bemutatta a Panther Lake-et az Intel
- Melyik tápegységet vegyem?
- AMD Catalyst™ driverek topikja
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
Hirdetés
(használd a CYBSEC25PH kuponkódot további 20 ezer ft kedvezményért!)
Aktív témák
-
zenit
tag
Nem tippelgetek tovább, valahogy így kellene csinálnod:
(hosszú lesz, de igazából egyszerű. :) )
const
WM_NOTIFY_ICON = WM_USER;
type
TMainForm = class(TForm)
PopupMenu: TPopupMenu;
MenuShow: TMenuItem;
MenuExit: TMenuItem;
HideButton: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure MenuShowClick(Sender: TObject);
procedure MenuExitClick(Sender: TObject);
procedure HideButtonClick(Sender: TObject);
private
procedure AddNotifyIcon;
procedure DeleteNotifyIcon;
procedure WMNotifyIcon(var Msg: TMessage); message WM_NOTIFY_ICON;
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.AddNotifyIcon;
var
NotifyIconData: TNotifyIconData;
begin
FillChar(NotifyIconData, SizeOf(NotifyIconData), 0);
with NotifyIconData do
begin
cbSize := SizeOf(NotifyIconData);
Wnd := Handle;
uID := 0;
uFlags := NIF_ICON or NIF_MESSAGE;
uCallbackMessage := WM_NOTIFY_ICON;
hIcon := Icon.Handle;
end;
Shell_NotifyIcon(NIM_ADD, Addr(NotifyIconData));
end;
procedure TMainForm.DeleteNotifyIcon;
var
NotifyIconData: TNotifyIconData;
begin
FillChar(NotifyIconData, SizeOf(NotifyIconData), 0);
with NotifyIconData do
begin
cbSize := SizeOf(NotifyIconData);
Wnd := Handle;
uID := 0;
end;
Shell_NotifyIcon(NIM_DELETE, Addr(NotifyIconData));
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
AddNotifyIcon;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
DeleteNotifyIcon;
end;
procedure TMainForm.WMNotifyIcon(var Msg: TMessage);
var
P: TPoint;
begin
case Msg.lParam of
WM_LBUTTONDOWN,
WM_LBUTTONDBLCLK:
Show;
WM_RBUTTONDOWN:
begin
GetCursorPos(P);
PopupMenu.Popup(P.X, P.Y);
end;
end;
end;
procedure TMainForm.MenuShowClick(Sender: TObject);
begin
Show;
end;
procedure TMainForm.MenuExitClick(Sender: TObject);
begin
Close; // Elég a Close, mert ez a főform.
end;
procedure TMainForm.HideButtonClick(Sender: TObject);
begin
Hide;
end;
------------
Na, ez így működik.
[Szerkesztve] -
zenit
tag
Mindegy, mit írsz az Msg.Result-ba, mert az inherited miatt a TCustomForm.WMQueryEndSession-je úgyis felülírja neked.
A WM_QUERYENDSESSION-ben elvileg semmilyen Close meg egyéb műveletet nem kellene végrehajtanod, mert utána még úgyis jön egy WM_ENDSESSION, amire az alkalmazás magától kilép.
Ez a Delphi-ben már meg van írva, neked nem is kell vele foglalkoznod.
(Ha van a Formnak CloseQuery-je, akkor ott True-val kell visszatérned, hogy a QueryEndSession is True-val térhessen vissza.)
A DeleteTrayIcon meg egyéb dolgokat a TForm.OnDestroy eseményébe kell raknod.
Aktív témák
- iPhone 16 128GB fekete 1 hónspos! Makulátlan! KÁRTYAFÜGGETLEN! 2026 szeptember 4-ig Apple garancia!
- AMD Ryzen 9 7950X3D/RTX 5090 32GB/64GB DDR5 RAM/1TB SSD HIGH-END konfig eladó
- Lenovo Yoga Slim 7 Pro 14IAP7 i7-1260p (12 mag!)/16GB DDR5/512SSD/400nit
- Apple iPhone 11 64GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 14 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- 13-14" Új és használt laptopok , üzletitől a gamerig , kedvező áron. Garanciával !
- iPhone 12 Pro 128GB Pacific Blue - 1 ÉV GARANCIA - Kártyafüggetlen, MS3259,100% Akkumulátor
- AKCIÓ! MSI MAG 325CQRXF QHD VA 240Hz 1ms monitor garanciával hibátlan működéssel
- Dell Latitude E7440 - i5, 8GB RAM, HDMI, eu bill - számla, 6 hó garancia
- Microsoft Surface Pro 6 fekete
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest