Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Marcar items no checklistbox


cgm2k7

Pergunta

olá a todos preciso de ajuda de novo

tenho um checklistbox1 e um listbox1, no checklistbox1 tem 5 items e no listbox1 tem 3 como faço para que no evento oncreate do form somente os items existente no listbox seja marcados no checklistbox1.

Este codigo abaixo marca os 3 primeiros items do checklistbox1
 

 for I := 0 to ListBox1.Items.Count -1 do  begin
   if CheckListBox1.Items.IndexOf(ListBox1.Items.Strings[i]) > 0 then
      CheckListBox1.Checked[i] := true
  end;
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

exemplo:

procedure TForm1.BitBtn1Click(Sender: TObject);
var i, j : integer;
begin
   for I := 0 to ListBox1.Items.Count -1 do
     for j := 0 to CheckListBox1.Items.Count -1 do
        if CheckListBox1.Items.Strings[j] = ListBox1.Items.Strings[i] then
           CheckListBox1.Checked[j] := true;

end;


CheckListBox  ----  ListBox

X   AAA              AAA
    BBB              CCC
X   CCC              EEE  
    DDD
X   EEE

OBS: O código está em um botão, mas não coloque no evento OnCreate e sim no OnActive

Para voce entender: 

voce faz a leitura do conteudo de  um indice  do ListBox e com depois varre todos os indices do CheckListBox 

achando o mesmo valor, voce marca o CheckListBox  pelo seu proprio indice

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

vlw irmão muito obrigado, deu certo aqui. Agora uma duvida

qual destas duas função é mais eficaz? consome menos processos

1ª
if LisB.Items.Count > 0 then begin
     for I := 0 to LisB.Items.Count -1 do
       for j := 0 to CListB.Items.Count -1 do
         if CListB.Items.Strings[j] = LisB.Items.Strings[i] then
            CListB.Checked[j] := true;
   end;

2ª
if LisB.Items.Count > 0 then begin
       for I := 0 to LisB.Items.Count -1 do  begin
         s := LisB.Items.Strings[i] ;
           if CListB.Items.IndexOf(LisB.Items.Strings[i]) > 0 then
             CListB.Checked[CListB.Items.IndexOf(s)] := true;
       end;
    end;

a 1ª que você postou ou a 2ª?

Link para o comentário
Compartilhar em outros sites

  • 0

não existe diferença em termos de processamento ..  é somente outra maneira de se programar para obter o mesmo resultado

mas só para tirar a sua duvida

Items.IndexOf

Retorna a posição da string na lista pelo valor do indice

ou seja, voce esta apenas suprimindo o uso de outro indice para pegar a posição da string na lista

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...