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/)
-   -   Form auf voller Bildschirmbreite anzeigen (https://www.delphipraxis.net/206006-form-auf-voller-bildschirmbreite-anzeigen.html)

Theseus 9. Nov 2020 13:30

Form auf voller Bildschirmbreite anzeigen
 
Hallo,

ich möchte ein Fenster auf voller Bildschirmbreite (aber nicht maximiert) anzeigen. Unter Win7 oder XP ging das mit

with form1 do
begin
top := 0;
left := 0;
width := Screen.Width;
end;

Unter Win10 ist das Fenster aber links uns rechts zu klein, es bleiben Ränder, oben nicht. Wie kann ich das verhindern?

Danke und lieben Gruß,
Theseus

Delphi.Narium 9. Nov 2020 14:25

AW: Form auf voller Bildschirmbreite anzeigen
 
Abschätzen, wie breit die Ränder sind und dann ausprobieren:
Delphi-Quellcode:
with form1 do
begin
top := 0;
left := -GeschätzterRand;
width := Screen.Width + 2 * GeschätzterRand;
end;
Eventuell klappt das ja, ist aber nur geraten.

stahli 9. Nov 2020 14:45

AW: Form auf voller Bildschirmbreite anzeigen
 
Das ist wohl das Win10-Konzept.

Die Fenster werden m.E. etwas kleiner gezeichnet, als sie wirklich sind, so dass um den Rahmen innerhalb der eigentlich Fensterfläche noch ein Schatten gezeichnet werden kann.

Deshalb reagiert der Mauszeiger auch schon neben dem "sichtbaren Rahmen".

Ich finde das ziemlich bescheuert, aber so ist es eben unter Win10 gelöst. :-(

himitsu 9. Nov 2020 14:48

AW: Form auf voller Bildschirmbreite anzeigen
 
Es gibt keinen Rahmen, bzw. es gibt Einen, aber der ist unsichtbar, drum bleibt halt der Rand, und die Maus reagiert darauf.

Blöd daran, wenn man jetzt den unsichtbaren Rand rausrechnet, dass es bestimmt wieder knallt, wenn man im Windows 11 mitbekommt es war scheiße und es wieder anders macht.

Uwe Raabe 9. Nov 2020 14:59

AW: Form auf voller Bildschirmbreite anzeigen
 
Alternativ ClientWidth setzen - da ist der Rahmen dann nicht mit drin (unsichtbar oder nicht).

stahli 9. Nov 2020 15:35

AW: Form auf voller Bildschirmbreite anzeigen
 
... da muss man dann aber auch auf Left achten usw.

Das ganze Konzept gehört m.E. überarbeitet. Aber das müsste natürlich MS machen. So lange kann man das nur irgendwie hinwurschteln, dass es für den eigenen Fall einigermaßen passt.

Theseus 9. Nov 2020 18:35

AW: Form auf voller Bildschirmbreite anzeigen
 
Vielen Dank für die Kommentare!

Ich werde versuchen, mit ClientWidth und Verschiebung zu basteln, nach Prüfung ob Win10 genutzt wird... :|

Michael II 9. Nov 2020 22:33

AW: Form auf voller Bildschirmbreite anzeigen
 
Hilft da nicht GetSystemMetrics(SM_CXSIZEFRAME); also für die Breite etwa so:

Delphi-Quellcode:
    dx := Winapi.Windows.GetSystemMetrics(SM_CXSIZEFRAME);
    left := screen.WorkAreaLeft - dx;
    width := screen.WorkAreaWidth + 2*dx;
oder die Höhe:

Delphi-Quellcode:
    dy := Winapi.Windows.GetSystemMetrics(SM_CYSIZEFRAME);
    top := screen.WorkAreaTop - dy;
    height := screen.WorkAreaHeight + 2*dy;

samso 10. Nov 2020 07:52

AW: Form auf voller Bildschirmbreite anzeigen
 
Probiere es mal so:

Delphi-Quellcode:
  if IsCompositionActive then
  begin
    Form.Left := Form.BoundsRect.Left - Form.ClientOrigin.X;
    Form.ClientWidth := Screen.Width;
  end
  else
  begin
    Form.Left := 0;
    Form.With := Screen.Width;
  end


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