Ver Mensaje Individual
  #3  
Antiguo 15-06-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Un ejemplo que te permite seleccionar el color del texto de cada item de un TCheckListBox:
Código Delphi [-]
...

type
  TForm1 = class(TForm)
    CheckListBox1: TCheckListBox;
    ColorDialog1: TColorDialog;
    btnChangeColor: TButton;
    procedure FormCreate(Sender: TObject);
    procedure CheckListBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure btnChangeColorClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

// Ajustes iniciales
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  // Agregamos unos datos al combo ...
  for i := 1 to 5 do
    CheckListBox1.Items.AddObject('TEXTO ' + IntToStr(i), TObject(clBlack)); // Color font: negro
  // Dibujamos ajustados a ItemHeight
  CheckListBox1.Style := lbOwnerDrawFixed;
end;

// Dibujamos con el color de font correspondiente
procedure TForm1.CheckListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  clb: TCheckListBox;
begin
  clb := CheckListbox1;
  clb.Canvas.FillRect(Rect);
  clb.Canvas.Font.Color := TColor(clb.Items.Objects[Index]);
  clb.Canvas.TextOut(Rect.Left, Rect.Top, clb.Items[Index]);
end;

// Le damos el color de font al item actual
procedure TForm1.btnChangeColorClick(Sender: TObject);
var
  clb: TCheckListBox;
begin
  clb := CheckListBox1;
  if (clb.ItemIndex <> -1) and ColorDialog1.Execute then
  begin
    clb.Items.Objects[clb.itemIndex] := TObject(ColorDialog1.Color); // asignamos el color
    clb.Invalidate;
  end;
end;
end.

Resultado:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita