nsouza Postado Abril 11, 2011 Denunciar Share Postado Abril 11, 2011 Colegas, O codigo abaixo ao clicar exibe os registro de um listbox em 4 campos (labeledit). Mas quando clico da a seguinte mensagem de erro."List index(0) out of bounds". Poderiam me dar uma ajuda.Nota: No Delphi 2010 funciona normalmente.CÓDIGO: SELECIONAR TODOSprocedure TForm1.ListBox1DblClick(Sender: TObject);var item: TEnderecosData;begin item:= FPessoa.Enderecos.Items[ListBox1.ItemIndex]; with item do begin edtEstado.text := Estado; edtCidade.text := Cidade; edtBairro.text := Bairro; edtEndereco.text:= Logradouro; end;end; (Estou usando Lazarus) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 12, 2011 Denunciar Share Postado Abril 12, 2011 item:= FPessoa.Enderecos.Items[ListBox1.ItemIndex];voce sempre deve clicar no primeiro item do listbox, pois se clicar em qualquer outro acontece o erro...ou então tire o código do TForm1.ListBox1DblClick(Sender: TObject); e coloque em um botãoabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Abril 12, 2011 Autor Denunciar Share Postado Abril 12, 2011 Caro, não resolveu. Fiz conforme orientou e contina o mesmo erro. Engraçado que no delphi 2010 funciona normal. Posso incluir 10 registro e qualquer um que dar duplo click ele atualiza as caixas de textos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 12, 2011 Denunciar Share Postado Abril 12, 2011 item: TEnderecosData;qual é a definição dessa variavel ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Abril 12, 2011 Autor Denunciar Share Postado Abril 12, 2011 Se entendi sobre a definição, ela faz parte de uma classe colection:Classe TEnderecoPessoaData = class(TEnderecosData) private FNumero:integer; FComplemento:string; protected function GetComplemento: string; function GetNumero: integer; procedure SetComplemento(const Value: string); procedure SetNumero(const Value: integer); public property numero:integer read GetNumero write SetNumero; property complemento: string read GetComplemento write SetComplemento; end; *********************************Codigo ao clicar duas vezesprocedure TForm1.ListBox1DblClick(Sender: TObject);var item: TEnderecoPessoaData;begin item:= FPessoa.Enderecos.Items[ListBox1.ItemIndex]; with item do begin edtEstado.text := Estado; edtCidade.text := Cidade; edtBairro.text := Bairro; edtEndereco.text:= Logradouro; edtNumero.text := IntToStr(numero); edtComplemento.text := complemento; end;end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 12, 2011 Denunciar Share Postado Abril 12, 2011 List index(0) out of boundsíndice(0) da lista fora dos limitesitem:= FPessoa.Enderecos.Items[ListBox1.ItemIndex]; veja que quando esta linha é executada no duplo clique do mouse, o indice do item será aquele em qual voce clicou para ter certeza use assim item:= FPessoa.Enderecos.Items[0];OBS: se mesmo assim ocorrer erro, veja se não esqueceu de declarar alguma unit na usesabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Abril 12, 2011 Autor Denunciar Share Postado Abril 12, 2011 Pegando o valor da coluna ele esta, exemploList index(0) out of boundsList index(1) out of boundsList index(2) out of boundsList index(3) out of bounds Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 12, 2011 Denunciar Share Postado Abril 12, 2011 faça um teste independente do seu programause apenas um listbox, 4 edits e um botão .... ao clicar no botão, jogue o conteudo do listbox nos edits ... somente assim poderá achar a resposta.abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Abril 13, 2011 Autor Denunciar Share Postado Abril 13, 2011 (editado) Tentei fazer assim, mas adicionou a linha toda do listbox no edit, não foi só primeira informação.procedure TForm1.Button2Click(Sender: TObject);var item:integer;begin item:= ListBox1.ItemIndex; edtEstado.text := ListBox1.Items[item];end; Editado Abril 13, 2011 por nsouza Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 13, 2011 Denunciar Share Postado Abril 13, 2011 procedure TForm1.Button1Click(Sender: TObject); var item: integer; begin item:= ListBox1.ItemIndex; Edit1.text := ListBox1.Items[item]; end;se voce clicar no item no ListBox e depois no botão, voce terá somente a informação desse item, pois o itemindex será o valor do item clicadoabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Abril 14, 2011 Autor Denunciar Share Postado Abril 14, 2011 procedure TForm1.Button1Click(Sender: TObject); var item: integer; begin item:= ListBox1.ItemIndex; Edit1.text := ListBox1.Items[item]; end;se voce clicar no item no ListBox e depois no botão, voce terá somente a informação desse item, pois o itemindex será o valor do item clicadoabraçoNão entendi a diferença do seu codigo para o meu. Pode explicar por favor? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 14, 2011 Denunciar Share Postado Abril 14, 2011 item: integer;a diferença está aqui... se a variavel item for um integer, ela vai receber o valor do indice do item do listboxitem: TEnderecoPessoaData;se a variavel item for a definição de uma classe, muda totalmente a sua funçãoporque voce não experimenta usar o tipo Record do Delphi nesse caso ?http://www.planetadelphi.com.br/artigo/141...record)-parte-iabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
nsouza
Colegas,
O codigo abaixo ao clicar exibe os registro de um listbox em 4 campos (labeledit). Mas quando clico da a seguinte mensagem de erro.
"List index(0) out of bounds".
Poderiam me dar uma ajuda.
Nota: No Delphi 2010 funciona normalmente.
CÓDIGO: SELECIONAR TODOS
procedure TForm1.ListBox1DblClick(Sender: TObject);
var
item: TEnderecosData;
begin
item:= FPessoa.Enderecos.Items[ListBox1.ItemIndex];
with item do
begin
edtEstado.text := Estado;
edtCidade.text := Cidade;
edtBairro.text := Bairro;
edtEndereco.text:= Logradouro;
end;
end;
(Estou usando Lazarus)
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
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.