Einzelnen Beitrag anzeigen

Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Objekte An Dynamische erstellte Form übergeben

  Alt 27. Feb 2009, 11:19
Hi,

also ich tue mich gerade leicht schwer was deine benamsung und deine formatierung an geht.
das ist unleserlich und wenn jede 2. variable / funktion "test" heißt hat man null übersicht was wo passiert. daher mal ein kleiner tipp von mir:

1. Gib jeder variable, funktion, klasse einen aussagekräftigen namen!
2. formatier deinen quellcode. so unleserlich wirst du unglücklich damit
3. bei solch unstrukturierten codes bitte mehr als nur die hand voll funktionen anhängen
4. die delphi tags benutzen
5. den quellcode kommentieren

so ist mein lösungsvorschlag:

Delphi-Quellcode:

type
  TAufruferForm = class(TForm)
    procedure ButtonErstelleDynamischeForm(Sender: TObject);
  private
    FMeineStringListe : TStringList;
    // ....
  end;

  TDynamischerstellteForm = class(TForm)
  private
    FAusgabeListe: TStringList;
    procedure SetAusgabeListe(const Value: TStringList);
    // ....
  public
    procedure TuIrgendwas;
    property AusgabeListe: TStringList read FAusgabeListe write SetAusgabeListe;
  end;



////////////Main Form////////////////////
procedure ButtonErstelleDynamischeForm(Sender: TObject);
begin
  with TDynamischerstellteForm.Create(self) do
  begin
    try
      // Zuweisen der Stringliste
      AusgabeListe := self.FMeineStringListe;
      // Aufrufen
      Showmodal;
      if (ModalResult = mrOK) then
      begin
        TuIrgendwas;
      end;
    finally
      Free;
    end;
  end;
end;


////////////erstellte Form////////////////////

{ TDynamischerstellteForm }

procedure TDynamischerstellteForm.SetAusgabeListe(const Value: TStringList);
begin
  FAusgabeListe := Value;
end;

procedure TDynamischerstellteForm.TuIrgendwas;
begin
  // Wurde die liste zugewiesen?
  if Assigned(FAusgabeListe) then
  begin
    FAusgabeListe.Clear;
  end;
end;
natürlich musst du die "FMeineStringListe" vorher noch im OnCreate erzeugen.

Gruß
Reli
  Mit Zitat antworten Zitat