Vielen Dank für eure Antworten. Gestern Abend habe ich es so gelöst, wie Hansa es gesagt hat. Ich habe mir ein Verzeichnis mit Formularen erstellt, eine Adress-Such-Form gebastelt und abgespeichert. Dann folgendermaßen in mein Projekt eingebunden:
Hauptprogramm
Delphi-Quellcode:
uses
..., uPJAdresssuche;
const
WM_TAKEDATA = WM_USER + 100;
WM_UNLOADFORM = WM_USER + 101;
procedure TForm2.TakeData(var msg:TMessage);
begin
AdresseDbId:=msg.WParam;
Edit1.Text:=uPJAdresssuche.Adressname;
Edit2.Text:=uPJAdresssuche.Tel;
Edit3.Text:=uPJAdresssuche.eMail;
FreeAndNil(AdressForm);
end;
procedure TForm2.UnloadForm(var msg: TMessage);
begin
FreeAndNil(AdressForm);
end;
procedure TForm2.PngSpeedButton1Click(Sender: TObject);
begin
adressForm:=uPJAdresssuche.TfPJAdresssuche.Create(nil);
uPJAdresssuche.ParentForm:=Form2;
adressForm.Show;
end;
Damit das Formular nicht die ganze Zeit geöffnet bleibt, habe ich mich dafür entschieden, mit Messages zu arbeiten.
Wird das Form mit Auswahl einer Adresse oder durch Klick auf "zurück" beendet, wird dem ParentForm (Variable von TForm im Adress-Such-Formular) die Message WM_UNLOADFORM gesendet, woraufhin die aufrufende Form die Adress-Suche wieder freigibt. Ggf wird vorher eine Message gesendet, die der aufrufenden Form sagt "Du kannst dir die Daten abholen" (WM_TAKEDATA).
Ist der Weg über Messages in Ordnung, oder zu kompliziert? Ich kann ja nicht von der Adress-Suche auf Variablen in der "Aufruf-Form" zugreifen, wenn ich die Adresssuche mehrfache verwenden will. Ich dachte mir, so ist alles ein Stück flexibler, oder?
Warum ich das alles in einer
Unit erledigen wollte hatte foglenden Grund: Ich wusste erst nicht so recht, was mit dem Repository gemeint war. Ich stand auf dem Schlauch. Aber jetzt finde ich die Idee so genial, weil es einfach so simpel und zugleich so hammer flexibel und schnell ist. Ärgere mich, warum ich auf sowas nicht komme.
Danke und Grüße