Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zur Laufzeit erzeugtes Objekt ansprechen (https://www.delphipraxis.net/109488-zur-laufzeit-erzeugtes-objekt-ansprechen.html)

Berserker 2. Mär 2008 16:21


Zur Laufzeit erzeugtes Objekt ansprechen
 
Hallo Gemeinde.

Zur zeit programmiere ich mal wieder an meiner Artikelverwaltung herum. (man muss ja etwas tun :-) )

Ich erzeuge zur laufzeit Edit-Felder welche auch einen Namen bekommen.
Nur wie kann ich diese auch ansprechen, um die Werte auszulesen.

Delphi-Quellcode:
  with TPBEdit.Create(frmARTIKELEDIT) do begin
    Parent := self;
    ReadOnly := true;
    Name := 'edLIEFTXT100';
    AutoSize := false;
    Font.Size := 9;
    Font.Color := clNavy;
    Left := 8;
    Top := 5;
    Width := 393;
    Height := 23;
    Parent := LiefPanel
end;
Der Name wäre also edLIEFTXT100.
Nun will ich edLIEFTXT100.Text lesen. Wie kann man dies bewerkstelligen?

MFG, Ronny

s-off 2. Mär 2008 16:23

Re: Zur Laufzeit erzeugtes Objekt ansprechen
 
Hallo,

Du hast Dir die Antwort doch schon selber gegeben:

Delphi-Quellcode:
edLIEFTXT100.Text

Neutral General 2. Mär 2008 16:25

Re: Zur Laufzeit erzeugtes Objekt ansprechen
 
Hi,

Delphi-Quellcode:
TEdit(FindComponent('edLIEFTXT100')).Text := 'halloo';
Gruß
Neutral General

dominikkv 2. Mär 2008 16:25

Re: Zur Laufzeit erzeugtes Objekt ansprechen
 
Entweder du hast eine Referenz auf den Speicherbereich, oder du suchst bei dem entsprechenden owner nach dem Namen:
Delphi-Quellcode:
(Form1.FindComponent('edLIEFTXT100') as TEdit).Text := 'bla';
edit: @Neutral General: Bitte mit as

Apollonius 2. Mär 2008 16:26

Re: Zur Laufzeit erzeugtes Objekt ansprechen
 
Wenn du die Objekte später noch einmal brauchst, solltest du sie in einem Feld deiner Formularklasse speichern. Dann kannst du vorgehen, wie es s-off vorgeschlagen hat. Andernfalls brauchst du FindComponent, was aber aus Geschwindigkeitsgründen unbedingt vermieden werden sollte.

rollstuhlfahrer 2. Mär 2008 16:26

Re: Zur Laufzeit erzeugtes Objekt ansprechen
 
hi,

dazu setzt du eine Variable (als Member einer Form oder auch als globale Variable) und erzeugst daraus dein Feld
könnte so aussehen:
Delphi-Quellcode:
var edLIEFTXT100: TPBEdit;
begin

// with TPBEdit.Create(frmARTIKELEDIT) do begin <-- Das hier nicht
edLIEFTXT100 := TPBEdit.Create(frmARTIKELEDIT);
with edLIEFTXT100 do
//...

end;
rollstuhlfahrer

PS: ich dann mal auch

Berserker 2. Mär 2008 16:29

Re: Zur Laufzeit erzeugtes Objekt ansprechen
 
Mit den Vars wollte ich auch schon so machen.
Jedoch erstelle ich in einer Scrollbox Panels mit Editfeldern.
Ich muss jedoch für jeden Lieferanten eine Zeile mit je 4 Feldern erzeugen und da die sich immer mal ändern, kommen neue dazu oder es fällt einer weg, werde ich es erstmal mit der FindComponent-Vairante von Neutral General probieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 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