Ich mache das immer etwas anders.
Ich referenziere nach Möglichkeit nie die aufrufende Form, wenn es sich vermeiden lässt. Da ich die aufzurufende Form eh in die Uses der aufrufenden Form aufnehmen muss, setze ich auch von dort die Daten.
Delphi-Quellcode:
procedure TMainForm.btnEdit(Sender: TObject);
begin
frmDetails.edtName.Text:=BeispielObject.Name;
frmDetails.edtAlter.Text:=IntToStr(BeispielObject.Name);
if frmDetails.ShowModal=mrOK then
begin
BeispielObject.Name:=frmDetails.edtName.Text;
BeispielObject.Alter:=StrToInt(frmDetails.edtAlter.Text);
end;
end;
Bei Umfangreicheren Datenstrukturen übergebe ich nur den Zeiger auf das Objekt oder schreibe mir ein Assign, mache mir also eine Kopie in eine Object, welches als Public in der frmDetails deklariert ist, und verteile die Daten dann im TfrmDetails.OnFormShow.
So vermeide ich Rückwärtsbeziehungen. Ich bestimme den Zeitpunkt, wann und wie meine Variablen in der aufrufenden Form aktualisiert werden.