Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Maximal / Minimalgröße einer TForm


Hagbard Celine - Di 16.07.02 12:54
Titel: Maximal / Minimalgröße einer TForm
Ich möchte die Größe meiner Form beschränken!

Zu diesem Zweck habe ich folgenden Code in das onResize-Event der Form geschrieben!


Quelltext
1:
2:
if width < 580 then width := 580;
if height < 270 then height := 270;


Leider hat das den kleinen Nebeneffekt das die Darstellung flimmert, da das System erst verkleinert und dann meine Korrektur übernimmt!

Gibt es eine Möglichkeit das Event vor dem verkleinern abzufangen und nur dann eine Änderung vorzunehmen wenn der neue Wert im Rahmen liegt! Es schein ja als würde er das Event für jeden "Pixel" den sich die Form ändert aufrufen!


wwerner - Di 16.07.02 13:38

In den interfaceteil deiner Form


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
TfrmMain = class(TForm)
  ......
  private
    procedure wmGetMinMaxInfo(var Msg : TMessage); Message wm_GetMinMaxInfo;
.....

procedure TfrmMain.wmGetMinMaxInfo(var Msg : TMessage); {begenzt die erlaubte Formulargröße}

begin
  PMinMaxInfo(Msg.lParam)^.ptMinTrackSize := Point(640 ,480);
  PMinMaxInfo(Msg.lParam)^.ptMaxTrackSize := Point(1024,768);
end;


Hagbard Celine - Di 16.07.02 13:49

wwerner hat folgendes geschrieben:
In den interfaceteil deiner Form


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
TfrmMain = class(TForm)
  ......
  private
    procedure wmGetMinMaxInfo(var Msg : TMessage); Message wm_GetMinMaxInfo;
.....

procedure TfrmMain.wmGetMinMaxInfo(var Msg : TMessage); {begenzt die erlaubte Formulargröße}

begin
  PMinMaxInfo(Msg.lParam)^.ptMinTrackSize := Point(640 ,480);
  PMinMaxInfo(Msg.lParam)^.ptMaxTrackSize := Point(1024,768);
end;


Ist das eine Erweiterung der bestehenden Form oder ist der Code schon enthalten?

Kann ich das zur Laufzeit ändern? Oder wenn ich eine Form erzeuge?


Tino - Di 16.07.02 14:14

Welche Delphi-Version benutzt Du? Ich habe Delphi 5 und da gibt es bei den Forms die Eigenschaft Constraints. Schau Dir die Unter-Eigenschaften mal an. Die sollten helfen.

Diese Eigenschaft ist glaube ich aber Delphi 4 oder 5 vorhanden!

Gruß


Hagbard Celine - Di 16.07.02 14:23

Tino hat folgendes geschrieben:
Welche Delphi-Version benutzt Du? Ich habe Delphi 5 und da gibt es bei den Forms die Eigenschaft Constraints. Schau Dir die Unter-Eigenschaften mal an. Die sollten helfen.

Diese Eigenschaft ist glaube ich aber Delphi 4 oder 5 vorhanden!

Gruß

Habe Delphi 6!

Und ja! Vorhanden!
Manchmal ist man so blind das man den Wald vor lauter Bäumen nicht sieht!

Danke!


b.brecht - Di 16.07.02 14:52

du kannst die form auch einfach "Single" machen und nicht "Resizeable"


Tino - Di 16.07.02 14:55

Aber dann kann man das Fenster ja nicht mehr in seiner Größe ändern!