Problem mit ComboBox
-
Meinst du sowas ?
void __fastcall TForm1::cbExit(TObject *Sender) { TStringList *list=new TStringList(); list->Assign(cb->Items); if(!list->Find(cb->Text,0)) cb->Items->Add(cb->Text); delete list; }
-
Die ComboBox soll reagieren, wie man es von Ihr gewohnt ist.
D.H.
Es wird etwas ausgewählt -> man arbeitet weiter -> das Ausgewählte ist sichtbar.
Es wird etwas editiert -> mehr als ein Buchstabe sollte zu sehen/editieren sein.
Vll hilt doch etwas Code - das hier ist der relevante Teil der Ereignisbehandlungsroutine (OnChange):
String query, str; sql::Results res; db.connect("siedler.db"); // Datenbank connecten (..) // query zusammenbauen db.execute (query); // jetzt ID holen res = db.get_results(); int size = res.size(); // EdNameSp1->Clear (); // damit wird auch edit feld gelöscht -> unerwünscht // Nur Combos löschen -> ohne Editfeld while (EdNameSp1->Items->Count != 0) // ComboBox Einträge löschen EdNameSp1->Items->Delete(0); // Combos füllen for (int i = 0; i < size; i++) { str = StdToAnsi(res[i]["Name"].get_asString()); //Stringkonvertierung EdNameSp1->AddItem(str, 0); } // ende for i if (sp_name[0] != "") EdNameSp1->AddItem (sp_name[0],0); /* EdNameSp1->ItemIndex = size; // wenn das gesetzt, dann kein sinnvolles Editieren möglich */ // EdNameSp1->Text = sp_name[0]; db.disconnect ();
sp_name[0] ist das erste Element eines String Arrays, welches meine Daten zur weiterverabeitung zwischenspeichert.
Ich habe das jetzt auch soweit gekürzt, daß nur eine ComboBox zusehen ist -> in Wirklichkeit sind es 6.
-
was bewirkt
EdNameSp1->Items->Clear ();
statt
EdNameSp1->Clear ();
?
-
Die beide wirken sich augenscheinlich genau gleich aus.
Bei beiden ist jedoch der Cursor stets am Anfang, bei meiner Lösung:
while (EdNameSp1->Items->Count != 0) EdNameSp1->Items->Delete(0);
hier jedoch am Ende ...
Hmm ...
Edit: Gibt es eine Möglichkeit den Cursor im Eingabefeld Programmgesteuert zu verschieben?
-
Hallo
Edit: Gibt es eine Möglichkeit den Cursor im Eingabefeld Programmgesteuert zu verschieben?
TComboBox::ItemIndex
bis bald
akari
-
Genau das funktioniert nicht - dann wird der gesamte Text im Feld markiert. Das hat zur Folge, daß das nächste eingegebene Zeichen alles weitere überschreibt.
-
Hallo
sorry, hab nicht mitgedacht.
Du suchst sicher TComboBox::SelStart bzw. TComboBox::Lengthbis bald
akari
-
Kein Problem - kann passieren
SelStart passt - damit bekomme ich das gewünschte Ergebnis. Schade nur, daß das in der Hilfe nicht auftauchte ...
Length im Bezug auf TComboBox kennt er bei mir übrigens nicht.
Aber danke für die Hilfe
-
Hallo
*seufz* also noch ein Versuch : TComboBox::SelLength.
aber beide Sachen stehen in der BCB-Hilfe zu TComboBox.
Einbißchen mehr Suchwillen ist angebracht.bis bald
akari
-
*rotwerd*
Ich habe die ganze Zeit bei TComboBox gesucht, und das dort wirklich nicht gefunden. Sonst hätte ich die anderen Fkt. ja auch gefunden.
Also sorry nochmal und auch danke - Problem ist inzwischen behoben.