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 Rahmenlose Form maximieren auf Sreen-WorkArea (https://www.delphipraxis.net/139160-rahmenlose-form-maximieren-auf-sreen-workarea.html)

Guido Eisenbeis 25. Aug 2009 00:40


Rahmenlose Form maximieren auf Sreen-WorkArea
 
Ein rahmenloses Fenster wurde von mir mit eigenen Min-, Max- und Close-Buttons ausgestattet. Beim Maximieren wird das Fenster jedoch nicht auf den Bereich von Screen.WorkArea vergrößert, sondern es verdeckt auch die Taskbar.

Erzeugt wird das rahmenlose Fenster mit:

Delphi-Quellcode:
// Form ohne Titelleiste und mit dünnem Rahmen erzeugen.
procedure TfrmMain.CreateParams(var Params: TCreateParams);
begin
  Inherited Createparams(Params);
  Params.Style := (Params.Style or WS_POPUP) and not WS_DLGFRAME;
end;
Maximier-Befehle:

Delphi-Quellcode:
frmMain.WindowState := wsMaximized;
 oder:
PostMessage(frmMain.Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
Derzeit habe ich das gelöst, indem ich dem Form-BoundsRect das WorkAreaRect zuweise. Um das Form-Rect mit dem WorkArea-Rect zu vergleichen, frage ich Left, Right, Top, Bottom, ... einzeln ab. (Maximized-Zustand kann ich ja nicht abfragen.)

Fragen:

1. Wie kann ich das "echte" Maximieren auf das WorkArea begrenzen?

2. Wie vergleiche ich zwei Strukturen (TRects), ohne jedes einzelne Element zu vergleichen?
(Also eine Lösung ala "if (Rect1 = Rect2) then".) (<- Extra-Thread eröffnen?)

3. Wie erzeuge ich eine rahmenloses Fenster, das den Punkt "Maximieren" im System-Menü hat?

Guido.

Guido Eisenbeis 29. Aug 2009 20:43

Re: Rahmenlose Form maximieren auf Sreen-WorkArea
 
Da das scheinbar keiner beantworten konnte oder wollte, :cry: habe ich mir selbst geholfen.

Zu Frage 1:
Da habe ich dies Beiträge gefunden: Kein Fenstertitel und trotzdem maximiert und BorderStyle=nsNone und WindowState=wsMaximized.
Vielleicht hilfts auch jemand anderem.

Zu Frage 2:
Falls hier niemand was weiß, werde ich dafür einen neuen Thread eröffnen.

Zu Frage 3:
Dito. Ergänzung: Ich suche eine Möglichkeit, das Systemmenü des Taskbareintrags um den Punkt "Maximieren" zu erweitern.

Guido.

SirThornberry 30. Aug 2009 12:50

Re: Rahmenlose Form maximieren auf Sreen-WorkArea
 
Bitte mache für jede Frage ein eigenes Thema auf. Das hat den Vorteil das im Titel sofort erkennbar ist um was es geht (und nicht nur die Kurzfassung zu einer Frage).
Zudem findet man später über die Suche schneller etwas wenn man das gleiche Problem hat.

Um zu verhindern das es hier ein riesen Durcheinander wird und kreuz und quer auf alle Fragen geantwortet wird mache ich hier mal zu.

*** geschlossen ***


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz