Stringlist Checklistbox

Delphi

11/01/2006

Tenho 2 Componentes, um criado em tempo de execucao (stringlist) e um checklistbox..

Pego os itens que estao no checklist e jogo no stringlist... sem problema...

limpo o checklistbox...

Agora, alimento novamente o checklist... só que nenhum dos itens do mesmo estao selecionado nessa nova fase, o que vai alimentar ele sao os itens do stringlist.

podem me dizer como ?

ou seja, com os novos itens que foram jogados no checklist (uma nova listagem...), dentro do mesmo tem os itens que foram jogados no stringlist, porém na nova listagem esse itens nao estao marcados... gostaria de marcar no checklist esse itens que estao dentro do stringlist

é facil, porem to com tanta coisa na cabeca que nao to conseguindo penssar em como resolver isso.

podem me ajudar ?


Technos

Technos

Curtidas 0

Respostas

Bruno Belchior

Bruno Belchior

11/01/2006

Para alimentar a StringList:
var
  Cont, Check: Smallint;
begin
  with FStngLstAlimentada do
  begin
    for Cont := 0 to ChckLstBxAlimentador.Items.Count-1 do
    begin
      if ChckLstBxAlimentador.Checked[Cont] then
        Check := 1
      else
        Check := 0;
      AddObject(ChckLstBxAlimentador.Items[Cont], TObject(Check));
    end;  
  end;
end;


Para Alimentar o CheckListBox:
var
  Cont, Check: Smallint;
begin
  with ChckLstBxAlimentador do
  begin
    for Cont := 0 to FStngLstAlimentada.Count-1 do
    begin
      Check := Integer(Objects[Cont]);
      Items.Add(FStngLstAlimentada[Cont]);
      Checked[Cont] := Check = 1;
    end;  
  end;
end;
Pode haver algum erro de sintaxe, pois estou sem delphi aqui para testar, mas a lógica é essa...


GOSTEI 0
Technos

Technos

11/01/2006

Cara...

Vou postar como eu fiz, seguindo a logica que voce passou (so pra salientar, era assim que eu ja tava fazendo):

Alimentando o stringlist:

for i := 0 to CheckListBox1.Items.Count - 1 do
if CheckListBox1.Checked[i] then
SelecaoProdutos.add(checklistbox1.items.strings[i]);

limpo o checklist

CheckListBox1.Clear ;

Alimento novamente o checklist:

RecarregaChecklist;

Usando a sua logica, tento recolocar os itens do stringlist no checklist, porem ele nao marca todos e quando marca, marca errado:

for i := 0 to SelecaoProdutos.Count - 1 do
begin
Check := integer(i);
CheckListBox1.Items.Add(SelecaoProdutos[i]);
CheckListBox1.Checked[i] := Check = 1;
end;

Dá uma olha ae cara


GOSTEI 0
Bruno Belchior

Bruno Belchior

11/01/2006

Ah bom você quer adicionar e todos estarem marcados... Eu tinha entendido que você queria adicionar exatamente como o CheckListBox estava quando foi limpado... então você poderia fazer assim:
var
  Cont: Smallint;
begin 
  with ChckLstBx do
  begin
    for Cont := 0 to FStrLst.Count - 1 do
    begin
      Items.Add(Strings[Cont]);
      Checked[Cont] := True;
    end;
  end;
end;



GOSTEI 0
POSTAR