Einträge der TDBListBox auswählen
-
Hallo,
mir gelingt es einfach nicht die Einträge der DBListBox, welche durch eine Query eingefügt werden, anzuklicken um nachher dann damit weiterarbeiten zu können.
Dachte erst, sie sind nicht anklickbar, weil der falsche Style der DBListBox ausgewählt war; daran lags jedoch nicht.
Hab sowas ähnliches schoneinmal mit einer TListView gemacht, da hat alles wunderbar funktioniert..Würde also gern ein Item anklicken und dessen Index und Namen (String) erfahren.
Kann ja eigentlich nicht so schwer sein..
Hat jemand Rat ?
Grüße, halloei
-
halloei schrieb:
Würde also gern ein Item anklicken und dessen Index und Namen (String) erfahren.
Kann ja eigentlich nicht so schwer sein..Muss dir da Recht geben, ist nicht schwer. Gehe in die Suchfunktion und schaue
nach ItemIndex.mfg
kpeter
-
kpeter schrieb:
halloei schrieb:
Würde also gern ein Item anklicken und dessen Index und Namen (String) erfahren.
Kann ja eigentlich nicht so schwer sein..Muss dir da Recht geben, ist nicht schwer. Gehe in die Suchfunktion und schaue
nach ItemIndex.mfg
kpeterDas ist ja kein Problem, das hatte ich ja schon bereits früher gemacht.
Das Problem ist nur, dass ich in der DBListBox einfach kein Item auswählen kann!
Wenn ich auf eines klicke wird es nicht blau hinterlegt oder sonst was und ItemIndex gibt bei jedem Eintrag auch -1 zurück...
-
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