Seite 1 von 1

Combobox einzelnes Element disablen?

Verfasst: Mi, 17. Jun 2015 8:52
von satmax
Hallo,

kann man in einer Combobox ein einzelnes Element disablen, so das man es sieht aber nicht wählen kann?

Re: Combobox einzelnes Element disablen?

Verfasst: Mi, 17. Jun 2015 9:12
von Tom
Hallo, Markus.

Nicht standardmäßig. Du kannst nur die Listbox-Komponente deaktivieren, aber dann wäre nichts mehr wählbar.

Wenn Du allerdings das Ownerdrawing-Merkmal verwendest und Deinen Handler entsprechend anpasst, kannst Du das simulieren. Per Ownerdrawing könntest Du direkt z.B. auf eine eigene iVar in einer abgeleiteten Klasse reagieren (nicht wählbare Elemente) und diese dann anders zeichnen. Im Handler könntest Du auf das ItemMarked-Event reagieren und die Markierung verändern (voriges/folgendes Element), wenn das aktuell hervorgehobene Element nicht wählbar sein darf.

Einfacher wäre es allerdings, die ItemList der Listbox einfach um jene Elemente zu reduzieren, die nicht wählbar sind.

Re: Combobox einzelnes Element disablen?

Verfasst: Mi, 17. Jun 2015 9:23
von satmax
Danke Tom.

das mit dem Ownerdrawing wird mir zu diesem Zeitpunkt zu komplex (Zeit). :) Das mit dem entfernen ist mir klar, ich wollte aber dass der Kunde die anderen Einträge sieht, sie aber nur in Abhängigkeit der Lizenz wählen kann. :)

Im Moment disable ich einfach die ganze Combo Box, das reicht zur Zeit.

Re: Combobox einzelnes Element disablen?

Verfasst: Mi, 17. Jun 2015 9:35
von Jan
Markus,

ein wenig Krücke, aber vielleicht wäre das eine schnelle Option (wenn Dir OwnerDrawing zu lange dauert): Bau Dir ein Array mit der gleichen Länge wie die Combo-Box. Und trage da einfach ein .T. oder .F. ein. Je nachdem, ob der Kunde für diese Position lizensiert ist oder nicht. Wenn der Kunde dann einen Eintrag auswählt, ermittelst Du die Position des Eintrages in der ComboBox, und schaust nach, was an der entsprechenden Position des Rechte-Arrays steht. Steht da ein .F., dann bekommt der einfach nur eine MsgBox(), das der das nicht darf.

Jan