AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten zur Laufzeit zuweisen

Offene Frage von "AndreEngel"
Ein Thema von AndreEngel · begonnen am 25. Apr 2010 · letzter Beitrag vom 25. Apr 2010
Antwort Antwort
AndreEngel

Registriert seit: 30. Jul 2009
Ort: Oldenburg (Oldenburg)
2 Beiträge
 
#1

Komponenten zur Laufzeit zuweisen

  Alt 25. Apr 2010, 01:48
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é
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: Komponenten zur Laufzeit zuweisen

  Alt 25. Apr 2010, 11:09
Ungetestet:
Delphi-Quellcode:
var tempFeld: TField;
begin
  tempFeld := FindComponent('Feld1') as TField;
  if Assigned(tempFeld) then
    tempFeld.FieldName := 'integerfeld';
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AndreEngel

Registriert seit: 30. Jul 2009
Ort: Oldenburg (Oldenburg)
2 Beiträge
 
#3

Re: Komponenten zur Laufzeit zuweisen

  Alt 25. Apr 2010, 16:16
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é
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 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