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/)
-   -   Delphi Bestimmte Items in Combobox disablen (https://www.delphipraxis.net/99373-bestimmte-items-combobox-disablen.html)

xaromz 11. Sep 2007 09:25


Bestimmte Items in Combobox disablen
 
Hallo,

ich würde gerne einige Items in einer Combobox "ausgrauen", d. h. nicht auswählbar machen. Leider habe ich im MSDN nichts gefunden, was mir weiterhilft. Gibt es da eine Message, die ich abfangen kann oder muss ich das alles komplett selbst machen (sprich: Combobox nachbauen)?

Gruß
xaromz

s-off 11. Sep 2007 10:26

Re: Bestimmte Items in Combobox disablen
 
Hallo,

Du kannst die Text- oder Hintergrundfarbe der entsprechenden Items ändern (ausgrauen), in dem Du die Style-Eigenschaft Deiner Combobox auf csOwnerDraw* stellst, und dann im OnDrawItem-Event das Item unter Berücksichtigung Deiner Farbvorstellungen selber zeichnest.

Das mit dem nicht-auswählbar-machen könnten man sich sicherlich irgendwie hinfriemeln, indem man auf WM_LBUTTONUP reagiert.

Vielleicht genügt es Dir aber auch schon, wenn Du Dir im OnDropDown-Event den aktuellen Index merkst, und im OnChange-Event überprüfst, ob ein 'deaktiviertes' Item ausgewählt wurde, und dann den ItemIndex auf das zuvor gemerkte zurücksetzt.

xaromz 11. Sep 2007 10:48

Re: Bestimmte Items in Combobox disablen
 
Hallo,

Zitat:

Zitat von s-off
Du kannst die Text- oder Hintergrundfarbe der entsprechenden Items ändern (ausgrauen), in dem Du die Style-Eigenschaft Deiner Combobox auf csOwnerDraw* stellst, und dann im OnDrawItem-Event das Item unter Berücksichtigung Deiner Farbvorstellungen selber zeichnest.

das Zeichnen ist nicht das Problem.
Zitat:

Zitat von s-off
Das mit dem nicht-auswählbar-machen könnten man sich sicherlich irgendwie hinfriemeln, indem man auf WM_LBUTTONUP reagiert.

Ich weiß nicht, ob diese Nachricht überhaupt kommt, und was mache ich bei einer Auswahl per Tastatur?
Zitat:

Zitat von s-off
Vielleicht genügt es Dir aber auch schon, wenn Du Dir im OnDropDown-Event den aktuellen Index merkst, und im OnChange-Event überprüfst, ob ein 'deaktiviertes' Item ausgewählt wurde, und dann den ItemIndex auf das zuvor gemerkte zurücksetzt.

Ich möchte aber, dass sich die Combobox nicht schließt, wenn ich ein deaktiviertes Element auswähle. Das ist das eigentliche Problem. Wenn ich hier die Auswahl abfange, dann lösen sich die weiteren Probleme in Luft aus.

Gruß
xaromz

pstruh 11. Sep 2007 13:07

Re: Bestimmte Items in Combobox disablen
 
Eine Idee (mit Fragestellung) dazu:
Macht das "Ausgrauen" überhaupt Sinn? Wäre es nicht eine Alternative, die Elemente, solange sie temporär nicht auswählbar sein sollen, aus der Liste herauszunehmen und bei Bedarf wieder "hineinzutun". Ich denke, das ist einfacher zu realisieren, als die bisher diskutierten Lösungsansätze.
Gruß

xaromz 11. Sep 2007 17:02

Re: Bestimmte Items in Combobox disablen
 
Hallo,

das ginge schon, aber ich möchte dem Anwender zeigen, dass die Items zwar noch da sind, er sie momentan aber nicht nutzen kann.

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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