Problemas com algoritimo que liga 3 TStringLists
Meu problema é o seguinte..
tenho 1 listview e 1 CheckListbox e uma TStringList auxiliar
preciso fazer o seguinte.. se surgir um caption novo na lista 1 marque a checklistbox.. e caso suma algum deles, deschecke ela na checklistbox
estou a alguns dias nesse problema e nao estou coseguindo resolver a questão deles se descheckarem..
então pensei em por uma 3º lista, q serviria como auxiliar..
agradeço desde ja se alguem poder me auxiliar.. derrepente pra alguem com o pesnsamento não focado com isso diretamente, seje facil de enxergar a solução.
tenho 1 listview e 1 CheckListbox e uma TStringList auxiliar
preciso fazer o seguinte.. se surgir um caption novo na lista 1 marque a checklistbox.. e caso suma algum deles, deschecke ela na checklistbox
estou a alguns dias nesse problema e nao estou coseguindo resolver a questão deles se descheckarem..
então pensei em por uma 3º lista, q serviria como auxiliar..
//Checka elas caso nao estejem marcadas na lista.. for X := 0 to Ck.Items.Count - 1 do begin for Y := 0 to ListAux.Count - 1 do begin if ((Ck.Items.Strings[X] = ListAux.Strings[Y]) and (Ck.Checked[X] = False)) then begin Ck.Checked[X] := True; ListTmp.Add(IntToStr(Y)); end; end; end; //Deschecka caso ele esteje caido pra 6º ou mair posição for X := 0 to ListAux.Count - 1 do begin for Y := 0 to ListTmp.Count - 1 do begin if (ListAux.Strings[X] = ListTmp.Strings[Y]) then begin for Z := 0 to Ck.Count - 1 do begin if (Ck.Checked[X]) then begin Ck.Checked[Z] := False; end; end; end; end; end;
agradeço desde ja se alguem poder me auxiliar.. derrepente pra alguem com o pesnsamento não focado com isso diretamente, seje facil de enxergar a solução.
Nightshade
Curtidas 0
Respostas
Davicarrano
15/05/2007
irmao, eu entendi isso dessa forma, se não for explica melhor pra tentar ajudar.... da forma q entendi nem precisa do outro list
//Checka
for X := 0 to Ck.Items.Count - 1 do
begin
If (ListAux.indexof(Ck.Items.Strings[X])>=0) and (Ck.Checked[X] = False) Then
Ck.Checked[X] := True;
end;
//Deschecka
for X := 0 to ListAux.Count - 1 do
begin
if (Ck.Items.indexof(ListAux.Items.Strings[X])>=0) and (Ck.Checked[X]) Then
Ck.Checked[Z] := False;
end;
//Checka
for X := 0 to Ck.Items.Count - 1 do
begin
If (ListAux.indexof(Ck.Items.Strings[X])>=0) and (Ck.Checked[X] = False) Then
Ck.Checked[X] := True;
end;
//Deschecka
for X := 0 to ListAux.Count - 1 do
begin
if (Ck.Items.indexof(ListAux.Items.Strings[X])>=0) and (Ck.Checked[X]) Then
Ck.Checked[Z] := False;
end;
GOSTEI 0
Nightshade
15/05/2007
hehehe não é tao simples assim..
eu estou fazendo uma comparação de 3 listas.. alias são 2, porém estou usando uma terceira como auxiliar.
numa lista eu tenho 10 itens esses 10 itens e num chechlistbox eu tenho em torno de 80 itens
entao se um nome entra nessa lista de 10, ela deve ser chechada na outra lista.
e se um desses nomes sai da lista, ele deve descheckar.
estou tentando agora da seguinte forma, porem nao funciono ainda:
eu estou fazendo uma comparação de 3 listas.. alias são 2, porém estou usando uma terceira como auxiliar.
numa lista eu tenho 10 itens esses 10 itens e num chechlistbox eu tenho em torno de 80 itens
entao se um nome entra nessa lista de 10, ela deve ser chechada na outra lista.
e se um desses nomes sai da lista, ele deve descheckar.
estou tentando agora da seguinte forma, porem nao funciono ainda:
//Checka elas caso nao estejem marcadas na lista.. for X := 0 to Ck.Items.Count - 1 do begin for Y := 1 to ListAux.Count do begin if ((Ck.Items.Strings[X] = ListAux.Strings[Y]) and (Ck.Checked[X] = False)) then begin Ck.Checked[X] := True; ListTmp.Add(IntToStr(Y)); end; end; end; // //Deschecka caso ele esteje caido pra 6º ou mair posição for X := 0 to ListAux.Count - 1 do begin for Y := 0 to ListTmp.Count - 1 do begin if (ListAux.Strings[X] = ListTmp.Strings[Y]) then begin ListTmp.Delete(Y); end; end; end; for X := 0 to Ck.Count - 1 do begin for Y := 0 to ListTmp.Count - 1 do begin if (Ck.Items.Strings[X] = ListTmp.Strings[Y]) then begin Ck.Checked[X] := False; end; end; end;
GOSTEI 0
Nightshade
15/05/2007
esse algoritimo utiliza um que anteriormente fiz, no qual seleciona os 5 maiores de uma lista, e depois os 5 menores..
entao formam-se ai os 10 membros da ListView..
agora com esses 10 captions eu quero controlar a chacklistbox atraves de valores deles..
entao formam-se ai os 10 membros da ListView..
agora com esses 10 captions eu quero controlar a chacklistbox atraves de valores deles..
GOSTEI 0
Nightshade
15/05/2007
...
GOSTEI 0
Nightshade
15/05/2007
...
GOSTEI 0
Nightshade
15/05/2007
...
GOSTEI 0