Moin!
Wieso nutzt du auch das Application.CreateForm() ?? Das sollte so oder so am besten nur vor dem Application.Run in der
DPR aufgerufen werden. Wenn du zur Laufzeit Formulare erzeugen willst, dann nimm den normalen Constructor:
Fm := TForm2.Create(Application);
/EDIT:
Der Fehler liegt ganz wo anders:
Warum so:
Fm1.Width := 250;
Anstatt so:
Width := 250;
??
Und genau dein Problem zeit die Verwendung von globalen Variablen in der
Unit zum Zugriff. Vielleicht hast du irgendwann mal 2 Instanzen von TFm1 und mit deinem Code greifen beide Instanzen immer auf den Wert von nur einer Instanz zurück anstatt auf ihren eigenen Wert.
Und das Problem liegt genau bei dem Zugriff - bekommt man ja leicht beim debuggen raus: Du übergibst deinem Support DataModul die Instanzenvariablen - das ist schön, aber sie sind nicht als VAR deklariert, somit werden die übergebenen Original Variablen Dm1 und Fm1 niemals mit dem richtigen Wert gefüllt, somit geht der Aufruf schief. Ruf einmal zuerst die unteren beiden Buttons auf und dann klappt es oben auch - weil die unteren ordentlich die Variablen füllen.
Und solche Zugriffe wie du sie machst mit Fm2.Width sind so oder so kreuz gefährlich. Wenn du dir die Form nicht auto-instanziieren lässt durch Delphi (AutoCreateForm), dann schmeiss die Variable in der
Unit raus - das bricht irgendwann mal das Genick...
MfG
Muetze1