Fórum Alguém pode me ajudar por favor... Manipular Listbox #523338

19/06/2015

0

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 ????
Bruno

Bruno

Responder

Posts

19/06/2015

Dorivan Sousa

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

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".
Responder

Gostei + 0

19/06/2015

Bruno

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..........
Responder

Gostei + 0

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

Aceitar