TDBLabel und TDBEdit Felder dynamisch erzeugen
-
MOIn an @ll
Villeicht kann mir einer behilflich sein, es kann auch sein das ich schon mal wieder zulange vor rechner sitze
.Zu meinen Problem :
Ich besitze ein Formular, was ich beim Buttonklick aufrufe . Daraufhin fängt eine for schleife zu laufen und liest mir alle gefilterten Felder aus die in der Datenbank stehen. Nun möchte ich aber das wenn ich 5 Einträge besitze, das meine 5 Einträge alle dynamisch in einen TDBLabel oder TDBEdit angezeigt werden.
z. b.
1 Eintrag Datenbank lesen
TDBText Hans Mustermann
2 Eintrag Datenbank lesen
TDBText Hans Meiermann
usw.
lässt sich wie schon beschrieben das TDBLabel feld dynamisch erstellen.
void __fastcall Ttv_form::FormActivate(TObject *Sender) { for(readcount; readcount <= Table1->RecordCount-1; readcount ++) { read_termin->Label->Caption = readcount; read_termin->DBEdit1->Text; } } //---------------------------------------------------------------------------MFG Praetorianer
-
Die passende Schleife hast du doch schon

1.) Für jeden Durchlauf ein Edit/label erzeugen.
2.) 2 Werte für das Positionieren verwenden, bei jedem Durchlauf um das gewünschte Offset verändern.
-
1. kannst du mit TDBLabel nur immer einDatensatz einer Spalte darstellen(die aktive Zeile);
2. dynamisches erzeugen FAQ
-
Habe mal ein wenig gesucht und das gefunden:
das steht in der Header
class Ttv_form : public TForm { __published: // Von der IDE verwaltete Komponenten TImage *tv_image; TImage *fuss_tv; TTimer *docking2; void __fastcall docking2Timer(TObject *Sender); void __fastcall FormCreate(TObject *Sender); void __fastcall FormActivate(TObject *Sender); private: // Anwender-Deklarationen [b]DynamicArray<TLabel*> labels;[/b] // das habe ich eingetragen public: // Anwender-Deklarationen __fastcall Ttv_form(TComponent* Owner); };void __fastcall Ttv_form::FormActivate(TObject *Sender) { for(readcount; readcount < Table1->RecordCount-1; readcount ++) { labels[readcount] = new TLabel(this); labels[readcount]->Parent = read_termin; labels[readcount]->Caption = readcount; labels[readcount]->Top = 12 + 10 * readcount; labels[readcount]->Left = 20; labels[readcount]->Width = 40; labels[readcount]->Height = 13; //read_termin->DBEdit1->Text; } } //---------------------------------------------------------------------------Habe es jetz so probiert jetz bekomme ich beim öffnen von den Fenster einen Adressenfehler habe.
-
bei DynamicArray musst du die länge des Arrays angeben .Length wenn ich mich nicht irre
-
So hat jetz auch funktioniert mit normalen Edit und Labelfeld.
Aber bei DBEdit / DBText funktioniert es komischer weise nicht .

-
"funktioniert nicht"??
-
Es kann wird und darf nicht mit TDBxxxx funktionieren...
BigNeal schrieb:
1. kannst du mit TDBLabel nur immer einen Datensatz einer Spalte darstellen(die aktive Zeile);
Das heißt, selbst wenn Du die fehlenden Eigenschaften für die TDBxxx-Komponenten findest und entsprechend setzt, wird in ALLEN TDBLabels der gleiche Datensatz angezeigt.
-
Es läuft wenn ich eine LabelComponente auf rufedynamisch geht es aber wenn ich ein Datenbankfeld aufrufe geht dieses nicht dynamisch weiß nicht warumm hmmm...
DynamicArray<[b]TDBEdit[/b]*> dbedit; // Datenbankfeld geht nicht DynamicArray<[b]TEdit[/b]*> edit; // Das funktioniert
-
hmm. das ist schlecht also doch eine DBGrid verwenden . Sieht so aus
FRAGE ????
Gibt es da Villeicht eine andere Möglichkeit ausser DBGrid das ich alles unter einander schön stehen Habe .
-
StringGrid sieht ähnlich aus.
oder liess doch die Daten für deine TLabels von hand aus. das geht auch