Einzelnen Beitrag anzeigen

messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Steuerelement im OnShow verschieben

  Alt 16. Feb 2009, 14:14
Zitat von DeddyH:
Zeig doch mal den Quältext.
Das Problem tritt in Zeile 2122 auf
Ich habe den Auslöser, nicht aber die Ursache: ich arbeite mit skalierten Forms und benutze dazu eine Kompo (TFormresizer), die ich mal bekommen und für meine Zwecke angepasst habe. Die verursacht das Problem. Warum, habe ich noch nicht verstanden.
Zitat:
VCL Komponente dynForm (TFormResizer) Delphi 7
-------------------------------------------------

Version 1.0 von Michael Kaliga, kaliga@freenet.de
nach einer Idee von David A. Price, dprice@erols.com (1999)

Eigenschaften:
dynForm passt alle Komponenten eines Formulares in der
Grösse und Position an, wenn die Formulargrösse verändert wird.

FormResizer1.InitializeForm scannt das Formular, legt in einer StringList
die Startwerte ab und erstellt Sicherungen von vorhandenen Grafiken:
Metafile's + Bitmap's, wobei Metafile's in Bitmaps konvertiert werden.

FormResizer1.InitializeForm berechnet die neuen Größen und Positionen der
einzelnen Komponenten aus den Startwerten (!!!) und passt die Form-Komponenten
dann an.
Da die Startwerte und nicht die aktuellen Größen verwendet werden, behält
das Formular immer sein Aussehen;
ein Zerreissen/Zerfleddern wie bei den Delphi-Funktionen ChangeScale und ScaleBy
entfällt also.


Anwendung:

1. dynForm auf dem Formular platzieren.
2. Im OnCreate-Ereignis des Form's die Initialisierung
aufrufen, z.B. FormResizer1.InitializeForm;
3. Im OnResize-Ereignis des Form's die Grössenanpassung
aufrufen, z.B. FormResizer1.ResizeAll;

In den Eigenschaften von "TFormResizer" kann man :
a.) Die Größenanpassung Ein/Aus-Schalten.
Dies ist Notwendig, um gezielt eigene Anpassungen vornehmen zu können.
b.) Die proportionale Größenanpassung Ein/Aus-Schalten.
c.) Die proportionale Größenanpassung am Minimum/Maximum anpassen.
d.) Die Mindest-Schriftgrösse einstellen.
e.) Die Maximal-Schriftgrösse einstellen.
FormResizer1.InitializeForm scannt das Formular, legt in einer StringList
die Startwerte ab und erstellt Sicherungen von vorhandenen Grafiken.

Ist AllowResize := true wird anschließend das Formular so skaliert, das
es genau wie zur Entwicklungszeit auf den Screen passt, also proportional
zur Bildschirmauflösung.

Ist AllowResize := false wird das Formular nicht skaliert, es behält die
gleiche Height / Width wie zur Entwicklungszeit !

Ist KeepProportional := true so wird das Formular immer proportional skaliert.
Ist KeepProportional := false so kann das Formular verzerrt skaliert werden.
Ist KeepPropToMin := true so wird das Formular immer proportional so skaliert, das es immer komplett sichtbar ist.
Ist KeepPropToMin := false so wird das Formular immer proportional so skaliert, das es die maximal Höhe/Breite ausnutzt.
FormResizer1.ResizeAll skaliert das Formular neu, z.B. wenn man mutwillig
bei AllowResize := false Größenänderungen vorgenommen hat.
Da steckt etwas drin, was mir etwas verdächtig aussieht:
procedure Notification(AComponent : TComponent; Operation : TOperation); override; Könnte sein, dass deshalb das update nicht klappt.

Grüße, Messie
  Mit Zitat antworten Zitat