Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#12

Re: Form überall wiederverwenden? Dafür Unit?

  Alt 28. Jan 2009, 10:29
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
  Mit Zitat antworten Zitat