Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
...eine Form *visuell* in den TNA Bereich verschieben
spacer
Autor Nachricht
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star

Beiträge: 1066
Dabei seit: 13.06.2005


Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 27.09.07 15:28  Antworten mit Zitat Beitrag melden
Oft liest man in den unterschiedlichen Foren die Frage wie man seine Anwendung dazu bekommt sich beim Minimieren in den TNA Bereich zu verschieben. Unter anderem findet man hier in der Delphi Library einen ausführlicher Beitrag über dieses Thema: ...Icons in die TNA hinzufügen, ändern und löschen?

Das normale Minimieren einer Anwendung zur Taskbar wird von Windows visuell dargestellt. Man sieht also optisch das das Fenster der Anwendung zur Taskbar verschoben wird. Implementiert man nun aber die Funktion, dass die Anwendung nicht zur Taskbar sondern in den TNA Bereich verschoben wird, geht diese Effekt nach hinten los da es optisch aussieht als würde die Anwendung zur Taskbar verschoben wird.

Die folgende Funktion zeigt wie man diesen optischen "Minimieren-Effekt" nicht zur Taskbar sondern in den TNA Bereich programmiert.

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
type
  TTrayAnimationType = (tatMinimize, tatMaximize);

function TrayAnimation (AForm: TForm; AType: TTrayAnimationType): Boolean;
var
  HandleTray: HWND;
  RectForm,
  RectTray: TRect;
begin
  result := False;

  // TNA Handle erfragen
  HandleTray := FindWindowEx (FindWindow ('Shell_TrayWnd'nil), 0'TrayNotifyWnd'nil);
  if (HandleTray <> 0then
    // Positionen und Größen der Form ...
    if GetWindowRect (AForm.Handle, RectForm) then
      // ... und des TNA Bereichs erfragen
      if GetWindowRect (HandleTray, RectTray) then
        // Animation durchführen
        case AType of
          tatMinimize:
            if DrawAnimatedRects (AForm.Handle, IDANI_CAPTION, RectForm, RectTray) then
              result := True;
          tatMaximize:
            if DrawAnimatedRects (AForm.Handle, IDANI_CAPTION, RectTray, RectForm) then
              result := True;
          end;
end;


Wichtig dabei ist vor allem die Windows Funktion Suche im MSDN DRAWANIMATEDRECTS. Diese sorgt für den optischen Effekt.

Der Aufruf dieser Funktion ist simpel:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
begin
  TrayAnimation (Self, tatMinimize);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  TrayAnimation (Self, tatMaximize);
end;


Moderiert von Narses: Beitrag geprüft und einsortiert am 21.04.2008

_________________
Ein Nutzer der Ecke ;-)
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home