Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Color de Label de cada Item en un CheckListBox (https://www.clubdelphi.com/foros/showthread.php?t=93204)

LIA_GUILLERMO 14-06-2018 22:58:03

Color de Label de cada Item en un CheckListBox
 
Buenas tardes, tengo un programa en el cual utilizó un CheckListBox, pero necesito que en tiempo de ejecución el usuario pueda elegir el color del texto de cada ítem del CheckListBox, ya que con ello permitirá a su vez modificar el color de una curva de un componente TChart.

Mi duda, es que propiedad o procedimiento puedo realizar para lograr mi objetivo.


Un cordial saludo y gracias por sus comentarios.:)

Casimiro Notevi 14-06-2018 23:02:01

A ver si sirve esto.

ecfisa 15-06-2018 06:42:06

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 :)


La franja horaria es GMT +2. Ahora son las 16:22:17.

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