[ maximus_1 @ 18.05.2006. 18:20 ] @
Dakle, kako obojati neki item u ListBoxu u neku boju? Znam kako cijeli, ali ja bih trebao obojiti samo pojedine iteme (tj. redove ili kako već...)?

[Ovu poruku je menjao X Files dana 18.05.2006. u 20:30 GMT+1]
[ X Files @ 18.05.2006. 19:03 ] @
Mnoge kontrole tipa TListBox, TListView, TComboBox, itd, imaju jednu metodu koja se
zove OnDrawItem(). Ona je predvidjena za rucno iscrtavanje necega sto nije standardno
ponasanje. OnDrawItem() ce ti obezbediti osnovni interfejs koji ce ti olaksati to
iscrtavanje, putem svojih argumenata.

Prethodno moras takvim komponentama da kazes da ces *ti* vrsiti iscrtavanje. To se
postize tako sto postavis property tih komponenti:

Style = lbOwnerDrawFixed; // ili lbOwnerDrawVariable

To se moze uraditi direktno u ObjectInspectory a moze i negde u konstruktoru.

Kod moze da izgleda ovako:

Code:

ListBox1->Canvas->FillRect( Rect );

if ( Index == 2 ) // <--- PROMENI BOJU TRECE STAVKE U CRVENO
{
    ListBox1->Canvas->Font->Color = clRed;
}
else if ( State.Contains( odSelected ) )
{
    ListBox1->Canvas->Font->Color = clHighlightText;
}
else
{
    ListBox1->Canvas->Font->Color = clBlack;
}

ListBox1->Canvas->TextOut( Rect.Left + 1, Rect.Top, ListBox1->Items->Strings[ Index ] );



... njega naravno stavljas u OnDrawItem()


[Ovu poruku je menjao X Files dana 18.05.2006. u 20:09 GMT+1]
[ maximus_1 @ 18.05.2006. 22:30 ] @
OK, Hvala ali to zapravo nije ono što sam zamislio.
Naime, mislio sam da li je moguće obojati cijeli red a ne samo slova? Npr. kao što se oboji u plavo kad kliknem na neki red...
[ X Files @ 18.05.2006. 22:48 ] @
Onda nesto ovako:
Code:

ListBox1->Canvas->FillRect( Rect );

if ( Index == 2 )
{
    ListBox1->Canvas->Brush->Color = clRed;
    ListBox1->Canvas->FillRect( Rect );
}
else if ( State.Contains( odSelected ) )
{
    ListBox1->Canvas->Brush->Color = clHighlight;
}
ListBox1->Canvas->Brush->Color = ListBox1->Brush->Color;

ListBox1->Canvas->TextOut( Rect.Left + 1, Rect.Top, ListBox1->Items->Strings[ Index ] );

Samo ces kod morati da modifikujes po zelji u smislu da ti i pozadina i fond i boje budu onakve kakve zelis...