Jump to content
Fórum Script Brasil
  • 0

Erro ao clicar 2 vezes no listbox


Question

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 to post
Share on other sites

11 answers to this question

Recommended Posts

  • 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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;

Edited by nsouza
Link to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149390
    • Total Posts
      645880
×
×
  • Create New...