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 Komponenten zur Laufzeit zuweisen (https://www.delphipraxis.net/150728-komponenten-zur-laufzeit-zuweisen.html)

AndreEngel 25. Apr 2010 00:48


Komponenten zur Laufzeit zuweisen
 
Hallo,

ich möchte einem bereits bestehendem TField zur Laufzeit ein neues Ziel zuweisen, also etwas in der Form:

Feld1 := tbl.FieldByName('integerfeld');
ShowMessage(Feld1.AsString);

Das geht soweit ohne Probleme.

Jetzt habe ich jedoch nur den Namen des TField's. Foglendes geht auch ohne Probleme:

tempFeld := FindComponent('Feld1');
ShowMessage(tempFeld.AsString);

Wie schaffe ich es "Feld1" ein FieldByName-Feld zuzuweisen? also ich steh irgendwie auf dem Schlauch.

Gruß André

DeddyH 25. Apr 2010 10:09

Re: Komponenten zur Laufzeit zuweisen
 
Ungetestet:
Delphi-Quellcode:
var tempFeld: TField;
begin
  tempFeld := FindComponent('Feld1') as TField;
  if Assigned(tempFeld) then
    tempFeld.FieldName := 'integerfeld';

AndreEngel 25. Apr 2010 15:16

Re: Komponenten zur Laufzeit zuweisen
 
Moin moin,

leider nicht. Ich werde mal etwas konkreter. Es geht um die TkbmMemTable, diese Komponente scheint einen Bug im LoadFromStream zu haben.

Gegeben:

tbl: TkbmMemTable
tblid: TIntegerField;
str: TMemoryStream;


Folgendes geht logischerweise ohne Probleme:

ShowMessage(tblid.AsString);


Wenn ich aber die Daten aus einem Stream lade:
tbl.SaveToStream(str);
str.Position := 0;
tbl.LoadFromStream(str);

Zeigt hinterher tblid auf 00000000.....

Wenn ich jetzt tblid neu zuweise, geht alles prima:
TField(tblid) := tbl.FieldByName('id');

ShowMessage(tblid.AsString);


Ich möchte jetzt mit einer Schleife und FindComponent die Felder zuweisen, und das bekomme ich nicht hin.

Gruß André


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