Ir para conteúdo
Fórum Script Brasil
  • 0

Erro ao clicar 2 vezes no listbox


nsouza

Pergunta

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

  • 0

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ão

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

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 vezes

procedure 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;

Link para o comentário
Compartilhar em outros sites

  • 0

List index(0) out of bounds

índice(0) da lista fora dos limites

item:= 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 uses

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

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 por nsouza
Link para o comentário
Compartilhar em outros sites

  • 0

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 clicado

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
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 clicado

abraço

Não entendi a diferença do seu codigo para o meu. Pode explicar por favor?

Link para o comentário
Compartilhar em outros sites

  • 0

item: integer;

a diferença está aqui... se a variavel item for um integer, ela vai receber o valor do indice do item do listbox

item: TEnderecoPessoaData;

se a variavel item for a definição de uma classe, muda totalmente a sua função

porque voce não experimenta usar o tipo Record do Delphi nesse caso ?

http://www.planetadelphi.com.br/artigo/141...record)-parte-i

abraço

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...