Werteeingabe in eine ComboBox
-
Hallo Leute,
ich habe in einem Dialog eine ComboBox mit vorgegebenen Werten.
Wenn ich nun z.B. den Wert 120 frei eingebe und das Feld verlasse, wird der vorgegebene Wert 1200 angezeigt und gesetzt.
Wie kann ich Werte eingeben, welche auch Teil von Vorgaben sind?Danke vorab
-
Ich schätze mal da gibt es ne Nachricht die anzeigt, daß der Text geändert wurde.
Und was du dann mit dem Text machst bleibt dir überlassen.
(genauer gehts nicht, da dein letzter Satz etwas mystisch ist.)
-
Hallo nö,
danke für den Tip.
Also mein letzter Satz meint: Wenn ich z.B. die Zahl 120
in die ComboBox eingebe (nicht wähle) springt die Anzeige zum
nächsten passenden Vorgabewert, in diesem Fall der Wert 1200.
Ich will aber 120 als Zahl eingeben und weiter verwenden. In die Membervariable wird aber nach updatedata der Vorgabewert 1200 und nicht 120 eingelesen.Ich werde es aber mal mit Editchange probieren.
-
Normalerweise sollte das eine Combobox nicht tun, es sei denn du hast vorher schon was geändert.
Das Autovervollständigen muss man eigentlich immer selbst implementieren,
-
Wenn du die (oder eine) Member als nen Wert (CString) festlegst wird der Wert gesetzt den du eingegeben hast.
-
Ich hab das gerade mal bei einem testprogramm ausprobiert und bei mir erfolgt keine Vervollständigung und es wird der richtige Wert angezeigt der in die Combobox geschrieben wurde.
Hier mal der Code:void CComboDlg::OnOK() { // TODO: Add extra validation here UpdateData(TRUE);//schreibt in das Member m_strCombo den //aktuellen Wert AfxMessageBox(m_strCombo); CDialog::OnOK(); }
-
Danke für die Antworten,
Also der eingegebene Wert wird tatsächlich korrekt in die
Member geschrieben. Die Anzeige in der ComboBox zeigt aber
nicht den eingetippten Wert, sondern springt zum nächsten
passenden Vorgabewert. Die Member ist ein CString und wird
später konvertiert.
Ich habe bisher dieses Problem durch ein Leerzeichen vor den
Vorgabewerten umgangen. Die Auswahl leidet allerdings darunter,
weil beim dropdown immer der Anfang der Listeneinträge gezeigt
wird.
Hier ein konkretes Beispiel:
Vorgabeliste: Werte 100, 200, 300, 400, 500, ...
Gebe ich den Wert 30 ein, wird 300 angezeigt und 30 in der Member
gespeichert. Die 300 bleibt in der Anzeige auch nach erneutem Öffnen
des Dialoges und Initialisierung mit 30.
Eine Lösung wäre das Hinzufügen des neuen Wertes, aber die Liste soll
nur Standardwerte enthalten.Vielleicht hat jemand eine Idee
-
Welche Behandlungsroutinen für die ComboBox hast du denn sonst noch implementiert?
-
Hallo thomas80d
in OnKillfocus erfolgt die Wertzuweisung an die Member
mittels UpdateData und die Zuweisung des Memberwertes
an eine Klassenvariable über eine Zugriffsfunktion.