AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Progr. im Systray wieder aus dem Progr. heraus maximieren
Thema durchsuchen
Ansicht
Themen-Optionen

Progr. im Systray wieder aus dem Progr. heraus maximieren

Ein Thema von edmu · begonnen am 20. Jan 2006 · letzter Beitrag vom 20. Jan 2006
Antwort Antwort
edmu

Registriert seit: 27. Jul 2004
41 Beiträge
 
#1

Progr. im Systray wieder aus dem Progr. heraus maximieren

  Alt 20. Jan 2006, 08:25
hallo zusammen

ich schiebe mein programm beim minimieren in die taskleiste neben der uhr. wie kann ich das fenster von meinem programm wieder normal darstellen. wenn ich auf das icon klicke, wird das fenster wieder normal. aber ich möchte es von meinem programm aus tun.

diese vorlage habe ich benutzt:

Zitat:
Zunächst muss eine sog. benutzerspezifische Botschaft in Form einer globalen Konstante erstellt werden. Als Basis wird dazu die Botschaft WM_USER verwendet:

const
WM_TASKBAREVENT = WM_USER + 1;
Es folgt die Deklaration des Prozedurkopfes dieser Botschaft.

Private
procedure WMTaskbarEvent(var Message: TMessage); message WM_TASKBAREVENT;
Über die folgenden Prozeduren wird das Icon im Systray angezeigt (TaskbarAddIcon) und wieder entfernt (TaskBarRemoveIcon):

procedure TaskBarAddIcon;
var
tnid: TNotifyIconData;
Owner: HWnd;
begin
with tnid do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Form1.Handle;
uID := 1;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := WM_TASKBAREVENT;
hIcon := Application.Icon.Handle;
end;
StrCopy(tnid.szTip, 'Tooltipp');
Shell_NotifyIcon(NIM_ADD, @tnid);

Owner:=GetWindow(Form1.Handle,GW_OWNER);
If Owner<>0 Then
ShowWindow(Owner,SW_HIDE);
end;

procedure TaskBarRemoveIcon;
var
tnid: TNotifyIconData;
Owner: HWnd;
begin
tnid.cbSize := SizeOf(TNotifyIconData);
tnid.Wnd := Form1.Handle;
tnid.uID := 1;
Shell_NotifyIcon(NIM_DELETE, @tnid);
Owner:=GetWindow(Form1.Handle,GW_OWNER);
If Owner<>0 Then Begin
ShowWindow(Owner,SW_Show);
ShowWindow(Owner,SW_Normal);
End;
end;
Nun folgt noch die Implementation unserer oben deklarierten Botschaft:

procedure TForm1.WMTaskbarEvent(var Message: TMessage);
var
Point: TPoint;
begin
case Message.LParamLo of
WM_LBUTTONDOWN: TaskBarRemoveIcon;
WM_RBUTTONDOWN: begin
SetForegroundWindow(Handle);
GetCursorPos(point);
popupmenu1.popup(point.x,point.y);
end;
end;
end;
Klickt man mit der linken Maustaste auf das Icon (WM_LBUTTONDOWN), wird dieses entfernt. Mit einem Rechtsklick wird an der Stelle ein Kontextmenu (Popupmenu1) geöffnet.

Da die Anwendung in diesem Beispiel nur im minimierten Zustand in SysTray erscheinen soll, muss zusätzlich noch folgende Zeile in das Application-Ereignis OnMinimize:

procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
TaskBarAddIcon;
end;
Seit Delphi 5 ist dieses Ereignis in der Komponente TApplicationEvents gekapselt. Arbeitest du mit einer kleineren Version, musst du das Ereignis manuell zuweisen. Im Private-Abschnitt muss dazu zusätzlich noch folgende Procedure deklariert werden:

procedure ApplicationEvents1Minimize(Sender: TObject);
vielen dank
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#2

Re: Progr. im Systray wieder aus dem Progr. heraus maximiere

  Alt 20. Jan 2006, 09:08
Wie wird denn beim Klick auf das Icon das Fenster wieder sichtbar? Doch auch "vom Programm aus" (siehe procedure TaskBarRemoveIcon).
Statt des Aufrufs von ShowWindow geht aber auch
Delphi-Quellcode:
MyForm.Show;
MyForm.BringToFront;
MyForm.WindowState := WSNORMAL;
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz