Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Farbanje ListBox elementa nekom bojom

[es] :: C/C++ programiranje :: C/C++ za početnike :: Farbanje ListBox elementa nekom bojom

[ Pregleda: 2529 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Farbanje ListBox elementa nekom bojom18.05.2006. u 18:20 - pre 218 meseci
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]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Farbanje ListBox elementa nkom bojom18.05.2006. u 19:03 - pre 218 meseci
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]
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: Farbanje ListBox elementa nekom bojom18.05.2006. u 22:30 - pre 218 meseci
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...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Farbanje ListBox elementa nekom bojom18.05.2006. u 22:48 - pre 218 meseci
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...
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Farbanje ListBox elementa nekom bojom

[ Pregleda: 2529 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.