Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Colorear Texto en una linea de TListBox (https://www.clubdelphi.com/foros/showthread.php?t=94701)

aguml 28-05-2020 19:46:26

Colorear Texto en una linea de TListBox
 
buenas, quisiera colorear el texto de la linea que añada en un ListBox y tengo esto:
Código PHP:

ListBoxDebug->Items->Strings[ListBoxDebug->Items->ItemIndex]->Font->Color clRed

La cosa es que eso no cuela y no se como hacerlo y si primero añado la linea y luego la coloreo o primero indico el color y luego la añado o como va eso. No veo la manera por internet.

ecfisa 28-05-2020 20:38:47

Hola.

No podes pintar de ese modo un ítem de un TListBox, debes usar el evento OnDrawItem. Te pongo un ejemplo que muestra los items en fonts de diferentes colores:
Código PHP:


void __fastcall TForm1
::FormCreate(TObject *Sender)
{
  
String s[6] = {"uno","dos","tres","cuatro","cinco"};

  for(
int i 06i++)
    
ListBox1->Items->AddObject(s[i], (TObject*)0);
}


void __fastcall TForm1::ListBox1DrawItem(TWinControl *Controlint Index,
      
TRect &RectTOwnerDrawState State)
{
  
TListBox *LB static_cast<TListBox*>(Control);

  if ((int)
LB->Items->Objects[Index])
   
LB->Canvas->Font->Color = (TColor)LB->Items->Objects[Index];
  
LB->Canvas->FillRect(Rect);
  
LB->Canvas->TextRect(RectRect.leftRect.topLB->Items->Strings[Index]);
}

// ListBox1 OnDblClick: cambia color de los items
void __fastcall TForm1::ListBox1DblClick(TObject *Sender)
{
  
TColor cl[5] = {clRedclYellowclLimeclBlueclBlack};

  
TListBox *LB ListBox1;
  
LB->Items->Objects[LB->ItemIndex] = (TObject*) cl[rand() % 5];
  
ListBox1->Invalidate();


Salida:


Saludos :)

ecfisa 28-05-2020 20:48:49

Hola de nuevo.

Perdón, olvidé mencionar que el ListBox debe tener su propiedad Style en lbOwnerDrawFixed.
Código PHP:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
 ...
 
ListBox1->Style lbOwnerDrawFixed

Saludos :)


La franja horaria es GMT +2. Ahora son las 11:33:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi