Das du auf das Hauptform zugreifst ist natürlich schon maximal verdächtig.
Hier könnte es sein, dass du mit "frmMain.Edit1.Text := '4711';" vermeintlich harmlos
nur den Wert ändern willst, aber durch OnChange vom Editfeld alles vermichtet wird
woran der Anwender solange gearbeitet hat. ... Was auch immer du an das Hauptform
zurück geben willst (in dem Fall nun den Wert, der im Editfeld landen soll),
würde ich anders an das Hauptform zurück geben.
Bei mir sieht das meist so aus, dass das Form in solch einem Fall eine Funktion hat
vom Prinzip her:
Delphi-Quellcode:
Function TForm2.DoSomething() : TSomeValues;
Begin
FPrivateValue := TSomeValues.Create();
InitForm();
ShowModal(); // Durch das Form wird dann FPrivateValue beschrieben.
Result := FPrivateValue;
End;
Nach dem Aufruf muss dann halt alles aus dem Objekt verarbeitet werden.
Denk aber daran, dass das erzeugte Objekt auch wieder freigegeben werden muss.
Vielleicht bietet sich (bei kleineren Daten) auch ein Record (statt eines Objektes) an.
MfG Incocnito