PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Delphi – Minimale Fenstergröße einstellen


aths
2004-12-12, 00:19:21
Ich habe die Elemente zwar alle schön mit Ankern versehen, aber unterhalb einer bestimmten Fenstergröße finden nicht alle Elemente Platz.

Wie setzt man Mindestgrößen für ein Fenster fest?

mapel110
2004-12-12, 00:23:51
http://www.rudolf-software.de/delphitips.html
Mindestgroesse fuer Fenster

Die meisten Fenster benoetigen eine Mindestgroesse, die nicht unterschritten werden darf. Ebenso kann es sinnvoll sein, deren maximalgroesse einzuschraenken. Anstatt nun immer im Ereignis "OnResize" die Eigenschaften "Width" und "Height" zu ueberpruefen und gegebenenfalls anzupassen, ist die folgende Methode sehr viel eleganter.
Immer wenn ein Fenster vom Benutzer vergroessert oder verkleinert wird, wird die Windows-Meldung "WM_GETMINMAXINFO" gesendet. Faengt man diese Meldung ab und setzt die minimalen und maximalen Werte auf die gewuenschte Groesse, kann der Benutzer zur Laufzeit, das Fenster weder verkleinern noch vergroessern.
Zunaechst wird im Abschnitt "Private" der Fenster-Typendeklaration eine Routine deklariert, die auf dieses Ereignis reagiert:

Procedure WMGetMinMaxInfo(Var Msg: TMessage); Message WM_GETMINMAXINFO;





Der Code fuer ein Fenster das die Mindestgroesse von 640x480 Pixeln und einer Maximalgroesse von 600x800 Pixeln betragen soll wuerde dann wie folgt aussehen.

Procedure TForm1.WMGetMinMaxInfo(Var Msg: TMessage);
Begin
PMinMaxInfo(Msg.lParam)^.ptMinTrackSize:= Point(640, 480);
PMinMaxInfo(Msg.lParam)^.ptMaxTrackSize:= Point(800, 600);
End;

googlen will gelernt sein. :D

Darkstar
2004-12-12, 14:14:23
Wie setzt man Mindestgrößen für ein Fenster fest?Wenn mich nicht alles täuscht, unter „Constraints“ im Objektinspektor.

aths
2004-12-12, 15:34:32
Wenn mich nicht alles täuscht, unter „Constraints“ im Objektinspektor.Tnx. Dass man es auch irgendwie via WM_MESSAGEs machen kann, hatte ich mir schon gedacht, aber ich hoffte auf eine einfachere Lösung.