Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Objekte An Dynamische erstellte Form übergeben (https://www.delphipraxis.net/129884-objekte-dynamische-erstellte-form-uebergeben.html)

Nightwolf 27. Feb 2009 09:57


Objekte An Dynamische erstellte Form übergeben
 
Hallo,

ich habe ein Problem was wahrscheinlich ich soll eine Dynamische Form erstellen und dieser Form ein Objekt übergeben.

aber irgendwie bin ich da zu dumm zu.
Code:



//////////MainForm///////////////////////7
procedure TForm13.Button1Click(Sender: TObject);
begin
              with

         TForm12.Create(self)
         do
         try

           Showmodal;
           if (ModalResult = mrOK) then
           begin
                test1;
           end;


         finally
                 free();

         end;
end;

////////////erstellte Form////////////////////7


procedure TForm12.Button1Click(Sender: TObject);
begin
Label1.Caption := test.ValueFromIndex[0];
end;

procedure TForm12.FormCreate(Sender: TObject);
begin
          test := TStringList.Create;
end;

function TForm12.ReadTest: TStringList;
begin


        result :=test;
end;

procedure TForm12.SetWriteTest(const Value: TStringList);
begin
               test.Assign(Value);
end;



end.
irgendwas mache ich falsch bei der übergabe von dem Objekt.
Wäre nett wenn mir jemandhelen könnte.


im vorraus Danke.

Luckie 27. Feb 2009 10:05

Re: Objekte An Dynamische erstellte Form übergeben
 
Erstell dir in der dynamischen Form ein Property, der du das Objekt übergibst.

Nightwolf 27. Feb 2009 10:19

Re: Objekte An Dynamische erstellte Form übergeben
 
Code:
    property test : TStringList read ReadTest write SetWriteTest;
hab ich noch vergessen dabei zuschreiben. aber wie ruf ich das irgendwie auf

Satty67 27. Feb 2009 10:28

Re: Objekte An Dynamische erstellte Form übergeben
 
So aus der Erinnerung, habe hier kein delphi zum testen:
Delphi-Quellcode:
TForm12 = class(TForm)
  private
    fTest : TSringList; // Hier wird die Stringlist gespeichert

    [...]

  published
    property Test : TStringList read ReadTest write SetWriteTest;

    // Test ist der publizierte Name der Eigenschaft und gleichzeitig
    // Methode zum Lesen/Schreiben auf fTest
Innerhalb der Funktionen "ReadTest" und "SetWriteTest" greifst Du auf "fTest" zu (nicht auf "Test")

Nightwolf 27. Feb 2009 11:07

Re: Objekte An Dynamische erstellte Form übergeben
 
Hey Danke für eure schnelle Hilfe.

Jetzt Funktioniert es auch soweit nur das ftest jetzt immer leer ist irgendwas stimmt da beim kopieren nicht. habe nicht die große ahnung von delphi tu mich auch mit der Syntax recht schwer aber ich muss leider ein kleines Programm damit schreiben.

Relicted 27. Feb 2009 11:19

Re: Objekte An Dynamische erstellte Form übergeben
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz