Einträge der TDBListBox auswählen



  • die TDBListbox muß mit einer aktiven Datenmenge verbunden sein, und dann kann man damit den Wert des ausgewählten DataField ändern oder mit

    DBListBox1->Items->Strings[DBListBox1->ItemIndex]
    

    darauf zugreifen



  • Ehm, und das geht wie?
    Ich hab des grad so:

    void __fastcall TForm1::DBListBox1DblClick(TObject *Sender)
    {
      Edit1->Text = DBListBox1->ItemIndex;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     Query1->Close();
       Query1->Open();
    
    	DBListBox1->Clear();
    	while(!Query1->Eof)
    	{
    		DBListBox1->Items->Add(Query1->FieldValues["EMail"]);
    		Query1->Next();
    	}
    	Query1->Close();
    }
    


  • Hi,

    void __fastcall TForm1::DBListBox1Click(TObject *Sender)
    {
       int inx = DBListBox1->ItemIndex;
       DBListBox1->Selected[inx];
       ShowMessage("Zeile " + IntToStr(inx));
    }
    //---------------------------------------------------------------------------
    


  • Ich fühl mich ein wenig veräppelt...
    Das würde alles wunderbar funktionieren, wenn ich überhaupt einfach nur was anklicken könnte. Hier mal ein Bild davon (konnte das nicht sauber ausschneiden, weil ich auf dem Notebook kein Bildbearbeitungsprogramm habe).

    http://img299.imageshack.us/img299/8960/liste.jpg

    kpeter schrieb:

    Hi,

    void __fastcall TForm1::DBListBox1Click(TObject *Sender)
    {
       int inx = DBListBox1->ItemIndex;
       DBListBox1->Selected[inx];
       ShowMessage("Zeile " + IntToStr(inx));
    }
    

    ..und wieder egal ,welches Item ich anklicke, bei dem Versuch die MessageBox zu öffnen, kommt eine Exception, dass das "ausgewählte" Item einen Index von -1 hat.

    //Edit: Die DBListBox ist Enabled = true, Readonly = false und Style = lbStandard ..



  • Hi,

    geht denn mein Code-Schnipsel nicht bei dir?



  • Wie schon gesagt würde das alles einwandfrei funktionieren. Aber ich kann mit der Maus einfach kein Item von den drei anwählen, so als ob die ListBox Enabled = false wäre, oder so. Ich verstehe das nicht..

    //Edit:
    Ich habe jetzt nochmal eine normale ListBox neben die DBListBox gezogen und bei der funktioniert alles wunderbar.

    Linnea schrieb:

    die TDBListbox muß mit einer aktiven Datenmenge verbunden sein...

    ..hat das jetzt was damit zu tun? (was auch immer du genau meinst 😕 )



  • verklickt



  • Linnea meint damit den Status der TTable-Komponente mit
    Active = true.



  • Die TDBListBox wird normalerweise mit einem TDataSource verbunden, dieses DataSource ist dann entweder mit einer Query- oder einer Table-Komponente verbunden, außerdem wird die Eigenschaft DataField mit dem Feld (d.h. Tabellenspalte) verbunden die mit der TDBListBox angezeigt/geändert werden soll. Nur wenn die Query/Table-Komponete aktiv/open ist, kann in der TDBListBox eine Auswahl (und damit auch Änderung im Datenbestand) vorgenommen werden.



  • Ah, super. Hatte bislang keine TTable drin.
    Ich habe jetzt mal die Query entfernt; wie krieg ich denn nun die DBListBox dazu, sich mit den Daten des ausgewählten DataFields zu füllen? Oder muss ich das immer noch selbst irgendwie machen?

    Schonmal vielen Dank für die Hilfe !



  • Die DBListBox hat folgende angedachte Funktion:

    In der Eigenschaft Items werden Werte vordefiniert/abgelegt und sollen eine
    Auswahlmöglichkeit anbieten.
    Das trägst du zB zur Designzeit per Hand ein oder zur Laufzeit per Add.

    Je nachdem, welcher Item-Wert vom User selektiert wird, erfolgt die Abspeicherung im Datensatz im
    entsprechenden Datenfeld.
    Es wird also der selektierte Eintrag gespeichert.

    Nu klaro ? 😉



  • Ach.. Alles klar, dann weiß ich bescheid !
    Danke für die Geduld, hat ja ein wenig gedauert 😃
    Bis bald !
    halloei


Anmelden zum Antworten