Fórum CheckListBox espaçamento entre check? #391564

30/11/2010

0

Ola pessoal...

Tem como dar um espaço maior entre linhas nos checks do checklistbox?

Estou carregando os itens em tempo de projeto.

Obs: Não pode ficar o quadrado co checkbox entre as linhas que terão espaços.

Tipo ficar igual ao radiogroup que os itens vão ficando com espaços cfe. o tamanho.   Preciso calcular o tamanho do checklistbox para ver qual o espaço entre linhas no ItemHeight, não posso simplesmente colocar um valor fixo.
Adriano Dolce

Adriano Dolce

Responder

Posts

30/11/2010

Adriano Dolce

Ola pessoal...

Tem como dar um espaço maior entre linhas nos checks do checklistbox?

Estou carregando os itens em tempo de projeto.

Obs: Não pode ficar o quadrado co checkbox entre as linhas que terão espaços.

Tipo ficar igual ao radiogroup que os itens vão ficando com espaços cfe. o tamanho.   Preciso calcular o tamanho do checklistbox para ver qual o espaço entre linhas no ItemHeight, não posso simplesmente colocar um valor fixo.
Acho que assim resolve aparentenmente  
procedure TForm1.FormCreate(Sender: TObject);
var
  iItem: Integer;
begin
  with CheckListBox1 do
  begin
    ItemHeight := (Height Div Items.Count);
    iItem := ItemHeight;
  end;
  CheckListBox1.ItemHeight := iItem -1;
end;
    Agora outra duvida... Tem como retirar aquela barra (no meu caso aqui azul) do item selecionado? Ou ao menos deixar menor o espaço da barra, ja que ela esta acompanhando o espaçamento do ItemHeigth...
Tem como retirar aquela barra (no meu caso aqui azul) do item selecionado? Ou ao menos deixar menor o espaço da barra, ja que ela esta acompanhando o espaçamento do ItemHeigth...
Responder

Gostei + 0

01/12/2010

Adriano Dolce

Resolvi 90%
procedure TfrmTributos.chklistTributoDrawItem(
  Control: TWinControl; Index: Integer; Rect: TRect;
  State: TOwnerDrawState);
begin
   with (Control as TCheckListBox).Canvas do
   begin
     //Font.Color := clBlack; //aqui não deu certo esta negritando a fonte
     Brush.Style := bsSolid; //aqui testei todas constantes e não deu certo
     TextOut(Rect.Left + 4, Rect.Top + 10,(Control as TCheckListBox).Items[Index]) ;
   end;
end;
Fora os comentarios no codigo acima, tenho que ver como calcular também esta linha [b]Rect.Top + 10[/b] para deixar o texto centralizado com o box, talvez seja da mesma forma do que foi postado acima, mais não sei como fazer. Um calculo automatico, fiz um teste aqui apenas pra demonstrar (com apenas duas condições). Mas não posso criar algo assim, ja que não sei quantos itens vão vir no checklistbox. Segue apenas pra demonstrar...
iTotalItem := chklistTributo.Items.Count;
     if iTotalItem = 7 then
     begin
       Brush.Style := bsSolid;
       TextOut(Rect.Left + 4, Rect.Top + 3,(Control as TCheckListBox).Items[Index])
     end else
     if iTotalItem = 4 then
     begin
       Brush.Style := bsSolid;
       TextOut(Rect.Left + 4, Rect.Top + 10,(Control as TCheckListBox).Items[Index]);
     end;

Outra coisa, se eu deixo o style como bsSolid no codigo, fica até quase bom, o problema que logo no promeiro ele realça em vota do texto, quero ver se retiro isso também. Grato pela ajuda.
Responder

Gostei + 0

24/07/2013

Altec Ltda.

Espaçamento entre CheckBox do Componente CheckListBox:

Para que haja espaço entre os Items, precisa ir até a propriedade Styles do CheckListBox e alterar para
"lbOwnerDrawFixed" feito isso é só mudar outra propriedade chamada ItemHeight com um valo inteiro desejado;
outra propriedade que não citei é IntegralHeigth, ela serve para qua a altura do componente se ajusta com o
ultimo ItemCheck...
Responder

Gostei + 0

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

Aceitar