CheckListBox com Itens Coloridos.

04/12/2003

5

Alguém conhece um componente CheckListBox com a característica de mudar a cor dos itens conforme uma determinada condição?

valeu


Responder

Posts

05/12/2003

Thiago Vidal

Voce pode usar o próprio CheckListBox que vem com o Delphi para fazer isso. Para isso, defina a propriedade Style para lbOwnerDrawFixed e implemente o seguinte código:

no evento OnDrawItem:
procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TCheckListBox) do begin
if Checked[Index] then
Canvas.Font.Color := clRed
else begin
if Selected[Index] then
Canvas.Font.Color := clWhite
else
Canvas.Font.Color := clBlack;
end;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left, Rect.Top, (Control as TCheckListBox).Items[Index]);
end;
end;

Voce vai reparar que ao selecionar outro item ele mantera a cor branca do item antigo e portanto o tornara invisível, para evitar isso, chame o método CheckListBox1.Invalidate nos eventos OnClick e OnKeyDown


Responder

05/12/2003

Adriano Santos

Já havia feito esta pergunta aqui, mas nínguem havia respondido.

valeu


Responder

29/01/2007

Dpinho

ficou legal esta dica, mas estou inializando os itens de uma tabela e gostaria que ficasse com a cor vermleha os itens que não estivesse checado, nesta dica so fica com cor diferente se clicar no Checklistbox
como fazer ??


Responder

01/02/2007

Adriano Santos

ficou legal esta dica, mas estou inializando os itens de uma tabela e gostaria que ficasse com a cor vermleha os itens que não estivesse checado, nesta dica so fica com cor diferente se clicar no Checklistbox como fazer ??


Cara, to no Linux agora e fora do Delphi. Vou tentar de dar um help aqui sem testar de fato. Se nao funcionar vc me chama.

Basta dar uma alteradinha de nada no evento.

procedure TForm1.CheckListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TCheckListBox) do 
  begin
    //aqui testa se está checado e muda pra vermelho, se nao para black
    if Checked[Index] then
      Canvas.Font.Color := clRed
    else
      Canvas.Font.Color := clBlack;

    //aqui testa se está selecionado e muda pra branco, se nao para black   
    if Selected[Index] then
      Canvas.Font.Color := clWhite
    else
      Canvas.Font.Color := clBlack;

    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left, Rect.Top, (Control as TCheckListBox).Items[Index]);
  end;
end;



Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira