CComboBox mit langen Einträgen
-
Hallo!
Ich habe zwei eigenlich simple Wünsche an meine CComboBox:
1. Die ComboboBox wird zur Laufzeit mit Einträgen gefüllt, die viele Zeichen aufweisen können, so dass der Eintrag oft länger ist als der zur Verfügung stehende Platz. Nun möchte ich, wenn ich so einen Eintrag ausgewählt habe, die Möglichkeit haben, an das Ende des Eintrages mit den Cursertasten oder mit "Pos 1" und "Ende" gelangen. Wobei 2. der Eintrag an sich nicht editiert werden können soll.
Sprich in der Box sollen statische und unveränderbare Einträge stehen und das selektierte Element möchte ich quasie horizontal mit dem Curser durchscrollen.Habe schon verzwiefelt gegoogelt, leider fand ich da nichts was mir weiterhilft...
Bin für jeden Tipp dankbar!
Grüße André
-
Hast Du das wirklich?
Ich habe einfach nach "multi Column combobox" gesucht
http://www.google.de/search?q=multi+column+comboboxUnd siehe der erste Eintrag ist vermutlich genau was du suchst

http://www.codeproject.com/KB/combobox/multicolumncombo.aspx
-
Hm also ich glaube da liegt ein Missverständniss vor oder ich versteh den Transfer von der MultiColumnbox zu meinem Problem nicht

Also was ich in meiner Combobox habe sind Items, die einen langen String darstellen (Pfadangaben) und da diese Pfadangaben mitunter recht lang sind (z.B. 40 Zeichen), überschreiten sie des öfteren die Breite der Combobox (die z.B wegen der Dialoggröße nur Platz für 25 Zeichen horizontal bieten kann). Man kann also nur den Anfang des Pfades lesen.
Nun möchte ich dem Nutzer die Möglichkeit geben sich auch das Ende des Strings (also in meinem Beispiel die letzten 15 Zeichen) ansehen zu können. Am besten indem er an das Ende des Strings mit den Curser-Tasten nach rechts wandert (so wie das bei einem Eingabefeld möglich ist).
Dabei soll jedoch der Text des selektierten Items nicht verändert, also überschrieben oder gelöscht werden können.Grüße André
-
Is schon richtig nur das du Anstatt einer Multicolumbox eine Listbox mit verticalen Scrollbalken anzeigen mußt. Also das Kontroll etwas anpassen mußt.
Gruß Matthias
-
-
Man kann die Breite der Combobox selber anpassen... Du bist nicht auf die Breite angewiesen, die das System per defualt bietet.
Den Code zeigt die MultiCol Combo auch!Dann kannst Du Dir die ganzen Klimmzüge evtl. sparen.
-
Vielen Dank schonmal für die zahlreichen Antworten!
@Badestrand: Tooltips habe ich schon realisiert, das klappt auch soweit ist mir aber von der usability noch nicht ausreichend genug, da man so nur mit der Maus die Information bekmmen kann und es keine Möglichkeit gibt diese mit der Tastatur zu bekommen.
@Martin: Ich habe für den Dialog eine Designvorgabe und er darf eine gewisse Breite nicht überschreiten, so dass ich die Breite der Combobox nicht dynamisch an den größten Eintrag anpassen kann. Zumal ich ja auch nicht weiß, in was für Pfade der Benutzer letzlich seine Datein ablegt, so dass dies keine hübsche einheitliche Lösung darstellt.
@CTescS: Ein CListbox hat ja keine Dropdownfähigkeit und sieht nicht so gut aus in dem Dialog. Ferner ist ein Horizontaler Scrollbar auch nicht das was ich wirklich möchte.
Setze ich meine ComboBox auf den Typ Dropdown-Listenfeld habe ich fast alles, was ich will: sie sieht so aus wie ich das will, Einträge sind nicht editierbar, aber ich komm halt nur nicht ans Ende des Eintrages der gereade selected ist.
Mir kommt das von der Usability jetzt nicht als ein außergewöhnliches Bedienverhalten vor. Ich dachte zuerst, ich habe nur irgend ein Flag nicht gefunden dass ich bei der CCombooBox setzen kann.Evtl habt ihr ja noch mehr Ideen?
Grüße André
-
Nur zur Sicherheit!
CComboBox::SetHorizontalExtent ist Dir bekannt?
http://msdn.microsoft.com/en-us/library/s564w6c2(VS.80).aspx
