Alguém pode me ajudar por favor... Manipular Listbox
amigos estou com um unico problema.....vejam
//uso essa funçao pra selecionar os items da listbox sem precisar clickar nos items.....
//para chamar a funçao uso: //btnShowSelectedClick;
procedure TForm1.btnShowSelectedClick;
var
vSelected: TStrings;
begin
vSelected := TStringList.Create;
try
GetSelectedItems(ListBox2, vSelected);
finally
vSelected.Free;
end;
end;
ate ai tudo bem.......
agora vamos para segunda parte...
//com essa funçao estou usando o Edit7..para passar um numero inteiro..seria a quantidade de items a ser selecionado.... e repassado para o Edit6... e depois deleto os items que foram selecionado.
//parar charmar essa funçao uso ://GetSelectedItems(ListBox2, vSelected); que esta sendo chamado na rotina de cima......
procedure Tform1.GetSelectedItems(ListBox2: TListBox; AList: TStrings);
var
i: Integer;
valor1: Integer;
numero: Integer;
begin
AList.Clear;
Edit6.Clear;
numero := StrToInt(edit7.Text);
for i := 0 to numero -1 do
begin
ListBox2.Selected[numero] := true;
AList.AddObject(ListBox2.Items[numero], ListBox2.Items.Objects[numero]);
Edit6.Text := AList.Text;
Listbox2.DeleteSelected;
if (ListBox2.ItemIndex = ListBox2.Items.Count -1) then
begin
Timer1.Enabled := false;
Timer2.Enabled := false;
end;
end;
end;
Porem se eu digitar no Edit7...o numero 3 ...a listbox começa selecionar os items so depois do terceiro item.... preciso que começe selecionar os items desdo primeiro item... Como posso arrumar isso ????
//uso essa funçao pra selecionar os items da listbox sem precisar clickar nos items.....
//para chamar a funçao uso: //btnShowSelectedClick;
procedure TForm1.btnShowSelectedClick;
var
vSelected: TStrings;
begin
vSelected := TStringList.Create;
try
GetSelectedItems(ListBox2, vSelected);
finally
vSelected.Free;
end;
end;
ate ai tudo bem.......
agora vamos para segunda parte...
//com essa funçao estou usando o Edit7..para passar um numero inteiro..seria a quantidade de items a ser selecionado.... e repassado para o Edit6... e depois deleto os items que foram selecionado.
//parar charmar essa funçao uso ://GetSelectedItems(ListBox2, vSelected); que esta sendo chamado na rotina de cima......
procedure Tform1.GetSelectedItems(ListBox2: TListBox; AList: TStrings);
var
i: Integer;
valor1: Integer;
numero: Integer;
begin
AList.Clear;
Edit6.Clear;
numero := StrToInt(edit7.Text);
for i := 0 to numero -1 do
begin
ListBox2.Selected[numero] := true;
AList.AddObject(ListBox2.Items[numero], ListBox2.Items.Objects[numero]);
Edit6.Text := AList.Text;
Listbox2.DeleteSelected;
if (ListBox2.ItemIndex = ListBox2.Items.Count -1) then
begin
Timer1.Enabled := false;
Timer2.Enabled := false;
end;
end;
end;
Porem se eu digitar no Edit7...o numero 3 ...a listbox começa selecionar os items so depois do terceiro item.... preciso que começe selecionar os items desdo primeiro item... Como posso arrumar isso ????
Bruno
Curtidas 0
Respostas
Dorivan Sousa
19/06/2015
olha eu tentei mas nao entendi o seu problema.
voce tem duas listboxs e precisa copia item de uma para outra, copiar somente a quantidade que voce especificar? nao entendi a funcao do edit6.
se for pra copiar de uma listbox para outra eu faria:
listbox1 com os itens
a
b
c
d
e
f
g
acho que a questao do seu codigo é que voce ta apagando o registro na origem e o que acontece é que a medida que vai apagando as posicoes vao mudando;
a
b
c
d
e
na primeira vez q executa o codigo pega o "a" ai vc apaga e fica
b
c
d
e
nesse momento no for a variavel i ja é igual a 1 entao vai pegar o "c" e nao o "b".
voce tem duas listboxs e precisa copia item de uma para outra, copiar somente a quantidade que voce especificar? nao entendi a funcao do edit6.
se for pra copiar de uma listbox para outra eu faria:
listbox1 com os itens
a
b
c
d
e
f
g
procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
valor1: Integer;
numero: Integer;
begin
ListBox2.Clear; //apaga os registros do destino
numero := StrToInt(edit7.Text); //pega a quantidade de itns a copiar
for i := numero -1 downto 0 do //percore a listbox de origem do mairo para o menor
begin //pois a medida q vc vai apagando o item a posicao muda
ListBox2.Items.Add(ListBox1.Items[i]);
ListBox1.Items.Delete(i);
end;
end;
acho que a questao do seu codigo é que voce ta apagando o registro na origem e o que acontece é que a medida que vai apagando as posicoes vao mudando;
a
b
c
d
e
na primeira vez q executa o codigo pega o "a" ai vc apaga e fica
b
c
d
e
nesse momento no for a variavel i ja é igual a 1 entao vai pegar o "c" e nao o "b".
GOSTEI 0
Bruno
19/06/2015
amigo aqui esta meu problema......
https://www.sendspace.com/file/5ksb8y
fiz um pequeno prejeto mostrando o meu problema....abaixe o codigo fonte para avaliar.....
preencha o edit : Quant: com numeros 2 ou 3 e vai ver o pequeno erro...
grato pela atençao..........
https://www.sendspace.com/file/5ksb8y
fiz um pequeno prejeto mostrando o meu problema....abaixe o codigo fonte para avaliar.....
preencha o edit : Quant: com numeros 2 ou 3 e vai ver o pequeno erro...
grato pela atençao..........
GOSTEI 0