Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Andocken wie z.B. bei Miranda/ICQ (https://www.delphipraxis.net/103717-andocken-wie-z-b-bei-miranda-icq.html)

Legnad 20. Nov 2007 16:52


Andocken wie z.B. bei Miranda/ICQ
 
Hallo ihr Delphi-Praxis-Menschen, :-D

ich bin gerade dabei eine Art Systemleiste zu erstellen, in die Symbole wie bei der Windows-Taskbar (Quickstart) eingefügt werden können, die Lautstärke verändert werden kann, und bei der die Prozessortemperatur und -auslastung usw. angezeigt wird.

Das Andocken an die Windows Startleiste ist kein Problem, nur frage ich mich, wie ich verhindern kann, dass meine Leiste die anderen Programme verdeckt. So wie es z.B. bei Miranda ist. Wenn man Miranda aus der Tray holt, dann verkleinert sich praktisch der Workspace(?), also die anderen Programme docken sozusagen an Miranda an, wenn man sie maximiert o. Ä.

Ich habe keine Ahnung, wie diesen Effekt erreichen kann. :gruebel:

Danke schonmal im Voraus für eure Hilfe und ich hoffe ich habe es Verständlich geschrieben. :thumb:

Popov 20. Nov 2007 17:39

Re: Andocken wie z.B. bei Miranda/ICQ
 
Liste der Anhänge anzeigen (Anzahl: 1)
Versuche es damit (siehe Anhang). Irgendwo hab ich noch ein Beispielcode. Schwer ist es nicht, hab es sogar selbst entwickelt. Aber diese fremde Komponente hab ich auf meinem Rechner zuerst gefunden ;) Die ist sogar gut, also wozu weiter suchen?

Es ist eine Komponente, bzw. Unit für Delphi 3, allerdings mit Sourcecode. Du brauchst sie nicht erst installieren, du kannst das Beispiel so testen. Pack dann das kleine Fenster und schiebe es an den oberen, linken oder rechten Bildschirmrand. Es wird andocken und der Arbeitsbildschirm wird verkleinert.

Legnad 21. Nov 2007 11:04

Re: Andocken wie z.B. bei Miranda/ICQ
 
Hallo, danke für deine Hilfe! Ist ja echt ne super Komponente.

-Problem gelöst-

Legnad 22. Nov 2007 20:09

Re: Andocken wie z.B. bei Miranda/ICQ
 
Aber mich würde trotzdem interessieren, wie man den Arbeitsbereich einschränken könnte (Ansatzweise). Ich werd aus der Unit (appbar.pas) nicht sonderlich schlau. :coder2: Ich meine, es könnte bestimmt auch andere interessieren.

Sofern es nicht gerade wahnsinnig kompliziert ist, weil ich bald erst 1 1/2 Jahre Informatik hab (MSS12). Dennoch weiß ich oftmals mehr als mein Lehrer.

Achja: Die mir empfohlene Komponente kann ich nur weiterempfehlen.

lbccaleb 22. Nov 2007 20:13

Re: Andocken wie z.B. bei Miranda/ICQ
 
Zitat:

Zitat von Legnad
Dennoch weiß ich oftmals mehr als mein Lehrer.

ohh man was hast du für lehrer, typisch dt. aber echt ey...

mfg

Popov 22. Nov 2007 21:55

Re: Andocken wie z.B. bei Miranda/ICQ
 
Zitat:

Zitat von Legnad
Aber mich würde trotzdem interessieren, wie man den Arbeitsbereich einschränken könnte (Ansatzweise). Ich werd aus der Unit (appbar.pas) nicht sonderlich schlau. :coder2: Ich meine, es könnte bestimmt auch andere interessieren.

Hier ein Beispiel aus meinem Beispiele-Ordner. Nur komm nicht gleich mit Detailfragen. Das Beispiel habe ich so 2002 geschrieben.

Natürlich kann das Beispiel nicht das was die Komponente kann, aber es zeigt den wichtigsten Punkt.

Delphi-Quellcode:
function TForm1.TaskHoehe: Integer;
var
  hWnd: Longint; rRect: TRect;
begin
  {berechnen der Taskleistenhöhe}
  hWnd := FindWindow(PCHAR('Shell_TrayWnd'),PCHAR(''));
  if hWnd <> 0 then begin
    GetWindowRect( hWnd, rRect );
    TaskHoehe := rRect.Bottom - rRect.Top;
  end else TaskHoehe := 0; {keine Taskleiste gefunden (Oder alternativ 28 Pixel/ Win98)}
end;

procedure TForm1.SetNewScreenArea(OnOff: Boolean);
var
  rTemp, rDef: TRect;
begin
  if OnOff then begin
    SystemParametersInfo(SPI_GetWorkArea, 0, Pointer(@rDef), 0);
    Top := 0;
    Left := 0;
    Height := Screen.Height - TaskHoehe + 3;

    rTemp := rDef;
    rTemp.Left := Width + 3;
    SystemParametersInfo(SPI_SetWorkArea, 0, Pointer(@rTemp), 0);
  end else begin
    //{als Rettungsanker:} rDef := Rect(0, 0, Screen.Width, Screen.Height);
    SystemParametersInfo(SPI_SetWorkArea, 0, Pointer(@rDef), 0);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetNewScreenArea(True);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetNewScreenArea(False);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 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