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


Anmelden zum Antworten