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 Gibt es eine maximale Formgröße in Delphi ? (https://www.delphipraxis.net/125210-gibt-es-eine-maximale-formgroesse-delphi.html)

hurzli 2. Dez 2008 14:26


Gibt es eine maximale Formgröße in Delphi ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen !
Da wäre mir eine ganz banale Frage untergekommen, die ich selber nicht beantworten kann:

Gibt es eine maximale Formgröße in Delphi ? (D5/Vista)


Die Aufgabenstellung ist: diverse Fenstereinstellungen bei Änderung zu speichern und bei Programmstart wieder herzustellen. Eigentlich ganz einfach. Nur bei der Formgröße beiße ich mir die Zähne aus. Es gibt die Anforderung, das Fenster auf max. (2 * Screen.DesktopWidth) bzw. (2 * Screen.DesktopHeight) in einem Multi-Monitor System zu begrenzen. Aktuell: bei zwei Monitoren nebeneinander liegt der Desktop in einer Größe von 2624x1200 Pixeln vor.

Will ich einer TForm.Width einen Wert größer als 2636 Pixel zuweisen, bleibt er bei 2636 stehen.
Sichtbar im Debugger (siehe Anhang). Bis zu diesem Wert klappt die Zuweisung, darüber hinaus nicht mehr.
In der Höhe ist es ähnlich. Da liegt die Grenze bei 1212 Pixeln.

Erst hatte ich den Fehler auf meiner Seite gesucht, aber dann doch noch ein Testprogramm geschrieben.
Das verhält sich genauso!



Schon mal vielen Dank im Voraus !
Ich freue mich schon auf Antworten.

Gruß
hurzli


Hier noch ein Stück aus dem Testprogramm als Beispiel:

Delphi-Quellcode:
procedure TForm1.btnWidthMaxClick(Sender: TObject);

var
   OldVal        : integer;
   Terminate     : boolean;

begin
   Terminate := FALSE;
   OldVal := Self.Width -1;
   while( not ( Terminate )) do
      begin
         if(( OldVal = Self.Width ) or ( Self.Width > 6000 )) then
            Terminate := TRUE // OldVal = Self.Width, Bedingung erfüllt bei 2636 ==> AUSSTIEG !
         else
            begin
               OldVal := Self.Width;
               Self.Width := Self.Width + 1;
            end;
      end;
end;
Analog dazu die Höhenänderung:

Delphi-Quellcode:
procedure TForm1.btnHeightMaxClick(Sender: TObject);

var
   OldVal        : integer;
   Terminate     : boolean;

begin
   Terminate := FALSE;
   OldVal := Self.Height -1;
   while( not ( Terminate )) do
      begin
         if(( OldVal = Self.Height ) or ( Self.Height > 6000 )) then
            Terminate := TRUE  // OldVal = Self.Width, Bedingung erfüllt bei 1212 ==> AUSSTIEG !
         else
            begin
               OldVal := Self.Height;
               Self.Height := Self.Height + 1;
            end;
      end;
end;

OregonGhost 2. Dez 2008 14:34

Re: Gibt es eine maximale Formgröße in Delphi ?
 
Ich kann mich dunkel daran erinnern, dass es dieses Verhalten schon vor Urzeiten bei Nicht-Delphi-Programmen gab. Möglicherweise ist die Begrenzung der Fenstergröße von Windows vorgegeben, nämlich als Gesamt-Desktopgröße zuzüglich Fensterrahmen (so dass man den Fensterinhalt auf den gesamten Desktop legen kann und der Rahmen drumherum läuft). Warum sollte man ein Fenster größer machen?

hurzli 2. Dez 2008 14:48

Re: Gibt es eine maximale Formgröße in Delphi ?
 
Hi !
Das ging aber schnell!
Ich denke du könntest Recht haben!
Natürlich war ich inzwischen nicht untätig und habe mir einen weiteren Monitor geschnappt. Dadurch hat sich eine neue Desktopgröße ergeben. Und siehe da: der Maximalwert liegt immer bei DesktopHeight + 12 Pixeln. bzw. DesktopWidth + 12 Pixeln.

Da hätte ich auch allein drauf kommen können :wall:.

Grüßle
hurzli

himitsu 2. Dez 2008 15:14

Re: Gibt es eine maximale Formgröße in Delphi ?
 
Jupp, OregonGhost hat Recht.

Das hatten wir vor 'ner Weile mal, da wurde ein Programm unter großer Auflösung erstellt und auf einem anderem Rechner mit kleiner Auflösung, als die Formgröße beim Programmierer, wurde alles verzerrt,
da Windows die Größe begrenzte und Delphi dieses leider ignoriert und nicht mit einrechnet (beim erstellen der Komponenten auf der Form)

hurzli 2. Dez 2008 16:09

Re: Gibt es eine maximale Formgröße in Delphi ?
 
Liegt das dann nicht am TForm.Scaled := TRUE und unterschiedlichen Pixeln pro inch der PCs ?
Da hab' ich mir nämlich auch schon mal einen abgepfriemelt.

Danke für eure Hilfe
hurzli

himitsu 2. Dez 2008 16:43

Re: Gibt es eine maximale Formgröße in Delphi ?
 
Wenn Delphi versucht ein größeres Formular (größer als der Desktop) zu erstellen, dann übergibt es Windows diese Größe und Windows selber kürzt dann entsprechend, das Selbe passiert dann auch noch bei der Fensterposition (viele Controls, wie z.B. Edit, Memo usw., sind auch nur "Fenster") ... außerhalb des Desktops gibt's nicht.

Wann jetzt genau Scaled eingerechnet wird, weiß ich allerdings nicht (also ob erstmal das Formular erstellt und dann scaliert, oder erst die Maße/Positionen scalliert und dann alles erstellt wird)


Damals war es halt so, daß das Programmfenster größer als 1024x768 war (beim Compilieren) und es somit nich auf den knuffigen 15-Zoller drauf paßte (beim Ausführen).

Medium 2. Dez 2008 17:09

Re: Gibt es eine maximale Formgröße in Delphi ?
 
Wir hatten das Problem umgekehrt: Eine SW von uns sollte beim Kunden auf 22" Widescreens laufen, und der Entwicklungsrechner hatte einen älteren 19" 4:3 TFT. Keine Chance, wir mussten einen entsprechenden Monitor für die Entwicklung anschaffen. Es ist natürlich komfortabler, aber für diesen bislang einmaligen Fall dann doch erstmal recht ärgerlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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-2025 by Thomas Breitkreuz