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]