CheckListBox com Itens Coloridos.

04/12/2003

0

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

valeu


Adriano Santos

Adriano Santos

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar