Einzelnen Beitrag anzeigen

hurzli

Registriert seit: 29. Okt 2004
6 Beiträge
 
Delphi 2007 Professional
 
#1

Gibt es eine maximale Formgröße in Delphi ?

  Alt 2. Dez 2008, 15:26
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;
Miniaturansicht angehängter Grafiken
unbenannt001_002_144.jpg  
  Mit Zitat antworten Zitat