Hallo!
Ich habe zwei Fragen:
Wie kann man verhindern, daß die Größe eines Formulars bestimmte Werte von Heigth und Witdh nicht unterschreitet. Der Anwender soll die Maske nicht kleiner als ein bestimmte Größe machen dürfen aber trotzdem auf volle Bildschirmgröße vergrößern können.
Wie kann man außerdem erreichen, daß die Werte einer Form bezüglich Größe und Position beim Schließen der Anwendung gespeichet (z.B. in der Registry) und beim nächsten Programmstart wieder genau die Position und Größe der Maske hergestellt wird.
Vielen Dank für Tipps!
Alle von TControl abgeleiteten Klassen besitzen das Property Constraints, womit du MinHeight, MinWidth, MaxHeight und MaxWidth festlegen kannst.
In der Registry würde ich diese Daten auf keinen Fall speichern. Schreib sie dir lieber in irgendeine Datei und initialisiere deine Fenster dann beim Programmstart.
Du kannst so die Einstellungen sogar Projektspezifisch speichern.
Hallo!
Ich habe zwei Fragen:
Wie kann man verhindern, daß die Größe
eines Formulars bestimmte Werte von
Heigth und Witdh nicht unterschreitet.
Jede Form hat ein OnCanResize-Event da wird das ReSize-Event gequeriert
procedure TNewJobDLG.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
if (NewHeight
das erlaubt eine Mindestgrösse von 50x100 Pixel
Zum Speichern von VCL-Dimensionen mache ich immer eine Struktur:
TPosRec = record
Top,
Left,
Height,
Width: Integer;
end;
Diese Daten speichern und vor dem Anzeigen den enstprechenden Properties zuweisen.
Wie man Daten in der Registry speichert, ist aber wieder eine andere Sache…
In der Registry würde ich diese Daten auf
keinen Fall speichern.
Für was ist die Registry denn deiner meinung nach sonst da ? Genau das war ja die Idee, eine zentrale DB zu erstellen damit ich jedes Programm tonnenweise INIs, CFGs oder sonstwas erstellt und irgendwo ablegt.
Genau. Und so werden tonnenweise irgendwelche Werte in EINE systemweite Datei geschrieben, die dann riesengroß, inkonsistent wird, den Systemstart verlangsamt etc… Dass das Schwachsinn ist, hat ja nun sogar MS schon begriffen…Für Einstellungsdaten, die nur von EINEM Programm benutzt werden (wie Formulargrößen) sind Inidateien im Programmverzeichnis immer noch am sinnvollsten…
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo!
Hi,
wenn du die constrains in d5 vermeiden willst (oder mit einer alten delphi-version arbeitest) gibt es noch diese möglichkeit:
type
TForm1 = class(TForm)
private
// Definition der Methode 'WMGetMinMaxInfo'
procedure WMGetMinMaxInfo (var MSG: TMessage); message WM\_GetMinMaxInfo;
end;
// die Prozedur
procedure TForm1.WMGetMinMaxInfo (var MSG: TMessage);
begin
// Aufruf der Vorgängermethode
inherited;
// Festlegen der Werte
with PMinMaxInfo(MSG.lParam)^ do begin
with ptMinTrackSize do begin
x := 200; // Fenster muß mindestens 200 Pixel breit sein
y := 200; // Fenster muß mindestens 200 Pixel hoch sein
end;
with ptMaxTrackSize do begin
x := 400; // Fenster darf maximal 400 Pixel breit sein
y := 300; // Fenster darf maximal 300 Pixel hoch sein
end;
end;
end;