Registriert seit: 3. Jun 2010
1.611 Beiträge
Delphi 10.3 Rio
|
AW: Listbox mit Farbflächendarstellung
28. Dez 2017, 13:39
Ich hatte sowas auch mal mit einer ganz normalen TComboBox gemacht. Einfach das OnDrawItem Event dafür nutzen und hinter die Bezeichnung ein kleines Quadrat in der jeweiligen Farbe malen. Dann kannst du das Item selbst so malen wie du das gerne hättest. Den Style musst du dafür auf einen der beiden csOwnerDrawXXX
setzen.
Nachteil dabei ist, dass es kein Eingabefeld gibt wo du direkt in der ComboBox etwas editieren kannst. Ich hatte das damals so gelöst, dass ich einen bzw. mehrere "Custom Color" Einträge gemacht hatte bei denen beim daraufklicken ein TColorDialog geöffnet wurde. Da kannst du dann natürlich variieren und auch eine Form mit Edit-Feld öffnen wo man einen Farbwert eingeben kann.
Oder du gehst den umgekehrten Weg und öffnest eine Form in der du den Farbwert eingeben kannst. Beim Klick auf OK wird der Wert dann übernommen und ein neuer Eintrag in der ComboBox erzeugt um diesen später immer wieder auswählen zu können. Vorteil bei dieser Lösung wäre, dass der Benutzer der Farbe auch einen eigenen Namen verpassen kann. OK, das würde bei der anderen Lösung auch funktionieren, ist aber wieder umständlicher.
PS: Der Grund warum ich diese Lösung vorschlage ist, dass ich gerne Standardkomponenten verwende um das Projekt möglichst schnell auf einem neu installierten PC ohne Zusatzkomponenten installieren zu können. Des Weiteren habe ich auch mal schlechte Erfahrungen mit den Jedis gemacht und umgehe die Nutzung der Komponenten seitdem.
|