Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Verhalten der TCombobox ändern (https://www.delphipraxis.net/158092-verhalten-der-tcombobox-aendern.html)

khh 5. Feb 2011 09:18

Verhalten der TCombobox ändern
 
Hallo zusammen,
ich habe eine TCombobox auf einem Formular.

als Style ist csOwnerDrawVariable eingestellt.
csDropdownList möchte ich nicht verwenden.

Diese Combobox ist mit Artikelnummern bestückt die NICHT unbedingt fortlaufend sein müssen.

Nun ist ja das Verhalten der Box so, dass bei Auswahl der Nummern per dropdown die gewählte Nummer markiert und der ItemIndex gesetzt wird.
Durch Abfrage des Key im onkeydown verlasse ich das Feld bei VK_RETURN und übernehme die hinter der Artikelnummer stehende Artikel_id.
Das funktioniert soweit der Anwender die Nummern per dropdown auswählt.
Tippt der Nutzer die Nummer händisch ein wird der erste mögliche Eintrag gwählt und solange die Nummer _vor_ der vollständigen Eingabe ausgewählt wird ebenfalls übernommen.
Soweit so gut.
Gibt der Anwender die Nummer aber vollständig händisch ein, wir der Itemindex nicht verändert und ich habe keine Zuordnung zur ID :-(
Dazu muss dann erst die VK_DOWN gedrückt werden.
Ich habe den Druck der VK_DOWN nun simuliert, dadurch ist aber ein wiederholtes Drücken der Returntaste nötig.
Also auch nicht das Gelbe vom Ei :-(
ich hoffe ich habe mich verständlich ausgedrückt.

Hat jemand ne andere Idee, oder gibts da ne Einstellung die ich übersehen habe?

Danke Gruss KHH

Sir Rufo 5. Feb 2011 10:19

AW: Verhalten der TCombobox ändern
 
Ermittle beim Verlassen doch den ItemIndex
Delphi-Quellcode:
cbArtikel.ItemIndex := cbArtikel.Items.IndexOf( cbArtikel.Text );
Jetzt kannst du auch reagieren, wenn der Wert so gar nicht stimmt

khh 5. Feb 2011 11:08

AW: Verhalten der TCombobox ändern
 
Zitat:

Zitat von Sir Rufo (Beitrag 1079665)
Ermittle beim Verlassen doch den ItemIndex
Delphi-Quellcode:
cbArtikel.ItemIndex := cbArtikel.Items.IndexOf( cbArtikel.Text );
Jetzt kannst du auch reagieren, wenn der Wert so gar nicht stimmt

Das ist gerade mein Problem.
Wenn die Artikelnummer komplett manuell eingegeben wird bekomme ich keinen Index zurück :-(

mkinzler 5. Feb 2011 11:10

AW: Verhalten der TCombobox ändern
 
Dann versuche mal die Länge des Textes beim Vergleich zu beschränken

khh 5. Feb 2011 11:20

AW: Verhalten der TCombobox ändern
 
Zitat:

Zitat von mkinzler (Beitrag 1079670)
Dann versuche mal die Länge des Textes beim Vergleich zu beschränken

da stehe ich jetzt auf der Leitung :-(

Wie meinst du das ?

Die Anzahl Zeichen die eigegeben werden können beschränken?

khh 12. Feb 2011 06:59

AW: Verhalten der TCombobox ändern
 
Zitat:

Zitat von khh (Beitrag 1079669)
Zitat:

Zitat von Sir Rufo (Beitrag 1079665)
Ermittle beim Verlassen doch den ItemIndex
Delphi-Quellcode:
cbArtikel.ItemIndex := cbArtikel.Items.IndexOf( cbArtikel.Text );
Jetzt kannst du auch reagieren, wenn der Wert so gar nicht stimmt


Das ist gerade mein Problem.
Wenn die Artikelnummer komplett manuell eingegeben wird bekomme ich keinen Index zurück :-(



war Quatsch, sorry hatte da wohl nicht richtig gelesen :-(

Funktioniert natürlich so super.
ich danke dir!

Sir Rufo 12. Feb 2011 07:47

AW: Verhalten der TCombobox ändern
 
Wollte auch gerade schon 2 Kochlöffel holen und dich zum Löffelspiel einladen :mrgreen:

khh 12. Feb 2011 08:08

AW: Verhalten der TCombobox ändern
 
Zitat:

Zitat von Sir Rufo (Beitrag 1081181)
Wollte auch gerade schon 2 Kochlöffel holen und dich zum Löffelspiel einladen :mrgreen:

Danke, das kenn ich schon :angel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz