Combobox einzelnes Element disablen?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Combobox einzelnes Element disablen?

Beitrag von satmax »

Hallo,

kann man in einer Combobox ein einzelnes Element disablen, so das man es sieht aber nicht wählen kann?
Gruß
Markus
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Combobox einzelnes Element disablen?

Beitrag 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.
Herzlich,
Tom
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Combobox einzelnes Element disablen?

Beitrag 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.
Gruß
Markus
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Combobox einzelnes Element disablen?

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten