onDrawItem

Rund um die LCL und andere Komponenten
Antworten
voko
Beiträge: 6
Registriert: Sa 26. Jan 2008, 20:04

onDrawItem

Beitrag von voko »

Hallo,

gegeben ist eine CheckListBox. Im ObjektInpector habe ich das Ereignis onDrawItem ausgewählt das mir im Editor eine Procedure CheckListBox1DrawItem bereit stellt.
Nun habe ich das Problem das diese Procedure nie angesprungen wird, oder nicht verstanden wann sie angesprungen wird. Hintergrund ist, ich möchte die Schriftfarbe eines Items in einer CheckListBox ändern.

Lazarus Version 0.9.26.2 Beta

Viele grüße voko

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: onDrawItem

Beitrag von theo »

Ich würde mal sagen, das Event ist fälschlicherweise published und sollte es wahrsch. nicht sein.
Wenn du ins Zeichnen eingreifen willst, würde ich besser bei TListBox anfangen und gleich alles selber zeichnen.
Style auf OwnerDraw... setzen.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: onDrawItem

Beitrag von Scotty »

Auch die CheckListBox kennt Stile. Style muss lbOwnerDrawFixed (oder -Fixed) sein, damit das OnDrawItem-Ereignis ausgelöst wird.

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: onDrawItem

Beitrag von theo »

Funzt aber nicht bei der CheckListBox (mind. unter GTK2). Das Property "Style" ist somit eigentlich auch überflüssig.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: onDrawItem

Beitrag von Scotty »

Tatsächlich! Bug? Unter XP wird die Prozedur aufgerufen...

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: onDrawItem

Beitrag von theo »

Der Bug Report ist "acknowledged" seit 2009-06-28
http://bugs.freepascal.org/view.php?id=14071" onclick="window.open(this.href);return false;
Hat wahrsch. nicht die höchste Priorität.

voko
Beiträge: 6
Registriert: Sa 26. Jan 2008, 20:04

Re: onDrawItem

Beitrag von voko »

Hallo,
erst mal Danke an theo und Scotty für eure prompten Antworten.
Ich habe das ganze dann mal, statt unter GTK2, unter GTK laufen lassen und siehe da die Procedure wird angesprungen. Nur das Aussehen von GTK ist nicht gerade der Brüller. Mal schauen wie ich weiter vorgehen werde, und evtl. auch mal die TListBox anschauen.
Das ganze läuft auf Opensuse 11.0

Danke und viel grüße voko

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: onDrawItem

Beitrag von theo »

Falls du die Ansicht weitergehend anpassen willst, gibt's natürlich noch den VirtualTreeview
http://www.soft-gems.net/index.php?opti ... &Itemid=33" onclick="window.open(this.href);return false;
Benötigt aber etwas Einarbeitung.
Lazarus Version Download hier beschrieben: http://forum.lazarus.freepascal.org/ind ... l#msg31596" onclick="window.open(this.href);return false;

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: onDrawItem

Beitrag von Scotty »

Den Sinn einer TCheckListBox habe ich noch nie ganz verstanden (mal abgesehen von den Annehmlichkeiten beim Programmieren). Entweder TListBox oder TCheckBox - oder versteht ein unbedarfter Anwender den Unterschied zwischen einigen einzelnen und vielen scrollbaren CheckBoxen. Andererseits benutze ich die TCheckListBox auch gern :oops:
BTW: Vielleicht klappt es ja unter QT.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: onDrawItem

Beitrag von Socke »

Scotty hat geschrieben:Den Sinn einer TCheckListBox habe ich noch nie ganz verstanden (mal abgesehen von den Annehmlichkeiten beim Programmieren). Entweder TListBox oder TCheckBox - oder versteht ein unbedarfter Anwender den Unterschied zwischen einigen einzelnen und vielen scrollbaren CheckBoxen. Andererseits benutze ich die TCheckListBox auch gern :oops:
BTW: Vielleicht klappt es ja unter QT.
Der Unterschied der Sinnhaftigkeit liegt wohl eher im Anwendungsgebiet: Wenn du deinem Benutzer eine Liste gibst, und er daraus bestimmte Elemente auswählen soll, ist es angenehmer diese zu scrollen, wenn viele Elemente vorhanden sind. Das ganze kann man dann natürlich auch über eine TScrollBox realisieren, wo man dann auch für jede CheckBox alle Eigenschafte ändern kann.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten