Hallo,
ich habe eine TrayIcon-Komponente, in der ich die Application-Mainform anzeigen lasse oder verstecke.
Beim
Anzeigen soll die Form 1. angezeigt werden und 2. gleich in den Vordergrund kommen.
Beim
Verstecken soll die Form 1. versteckt werden und 2. auch aus der Taskleiste verschwinden.
Ich hab das mal so gelöst:
Delphi-Quellcode:
procedure TTrayIcon.ShowMainForm;
begin
with Application
do
begin
ShowWindow(
Handle, SW_SHOW);
//maximieren
Restore;
//Haupt-Form anzeigen
MainForm.Show;
//in den Vordergrund bringen
BringToFront;
end;
end;
procedure TTrayIcon.HideMainForm;
var
hwndOwner: HWnd;
begin
with Application
do
begin
//minimieren
Minimize;
//Haupt-Form verstecken
MainForm.Hide;
ShowWindow(
Handle, SW_HIDE);
//Icon aus der Taskleiste verstecken
hwndOwner := GetWindow(
Handle, GW_OWNER);
ShowWindow(hwndOwner, SW_HIDE);
//für Windows 2000
ShowWindowAsync(hwndOwner, SW_HIDE);
ShowWindowAsync(
Handle, SW_HIDE);
end;
end;
Was mich an diesem Code stört, dass ich "
VCL-Code" mit "
API-Code" vermische.
Gibt es eine andere,
VCL-basierende Lösung?
oder grundsätzlich einen anderen Lösungsweg?
mfg
Helmi
>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<