Fórum TComboBox sumindo com referências de um objeto. #591306

12/02/2018

0

Boa noite pessoal;
Estou com um problema aqui que já esta me tirando do sério, acho que se alguém já passou por ele vai pode me ajudar.
Programo no Delphi Seattle e quando clico no componente TComboBox para selecionar um tipo, meu objeto perde as referências, no caso ele esta carregado com dados do tipo id, nome, rg, cpf entre outros.

Algum nerd ai que não esta na festanças carnavalescas?
John Andrade

John Andrade

Responder

Post mais votado

12/02/2018

Olá John. Um nerd aqui (KKKKKK). Veja se você está guardando o objeto no combobox mais ou menos conforme o código abaixo:

cboTipoBairro.Items.AddObject(dm.tblTipBaitipbaiNome.AsString,TObject(dm.tblTipBaiidTipoBairro.AsInteger));

E para recuperar o código do objeto mais ou menos assim:

objTipoBairro.CodTipBai := Integer(cboTipoBairro.Items.Objects[cboTipoBairro.ItemIndex]);

Espero que lhe dê uma luz. Abraço.

Adalberto Brasaca

Adalberto Brasaca
Responder

Gostei + 1

Mais Posts

16/02/2018

John Andrade

Boa noite Adalberto Brasaca, melhor bom dia.<br /><br />
<br /><br />
Acontece que o componente TComboBox não faz referência a esta objeto.<br /><br />
Por exemplo:<br /><br />
procedure TF_Cliente.EditClienteTipoEnter(Sender: TObject);<br /><br />
var<br /><br />
ObjClienteTipo: TClienteTipo;<br /><br />
I: Integer;<br /><br />
begin<br /><br />
EditClienteTipo.Clear;<br /><br />
<br /><br />
try<br /><br />
ObjClienteTipo:= ObjClienteTipo.Create;<br /><br />
<br /><br />
try<br /><br />
ObjClienteTipo.ObjListCreate;<br /><br />
ObjClienteTipo.Search(ObjClienteTipo);<br /><br />
<br /><br />
if ObjClienteTipo.FListClienteTipo.Count > 0 then<br /><br />
begin<br /><br />
<br /><br />
for I := 0 to ObjClienteTipo.FListClienteTipo.Count - 1 do<br /><br />
begin<br /><br />
EditClienteTipo.Items.AddObject(TClienteTipo(ObjClienteTipo.FListClienteTipo.Items[I]).no_cliente_tipo, TObject(TClienteTipo(ObjClienteTipo.FListClienteTipo.Items[I]).id_cliente_tipo));<br /><br />
<br /><br />
end;<br /><br />
<br /><br />
end<br /><br />
else<br /><br />
begin<br /><br />
F_Mensagens.ReceberMensagem(''''Atenção!'''' + #13 +<br /><br />
''''Nenhum registro encontrado!'''');<br /><br />
TF_Mensagens.Mensagem(F_Mensagens.ObjMensagem, ''''I'''', [mbOk]);<br /><br />
<br /><br />
end;<br /><br />
<br /><br />
except<br /><br />
on E: Exception do<br /><br />
begin<br /><br />
F_Mensagens.ReceberMensagem(''''Atenção!'''' + #13 +<br /><br />
E.Message);<br /><br />
TF_Mensagens.Mensagem(F_Mensagens.ObjMensagem, ''''E'''', [mbOk]);<br /><br />
<br /><br />
end;<br /><br />
end;<br /><br />
<br /><br />
finally<br /><br />
FreeAndNil(ObjClienteTipo);<br /><br />
<br /><br />
end;<br /><br />
<br /><br />
Esse objeto que você vê no evento OnEnter do TComboBox funciona perfeitamente.<br /><br />
<br /><br />
PROBLEMA:<br /><br />
Tenho um objeto TCliente que quando eu clico no componente TComboBox ele perde as informações.<br /><br />
<br /><br />
Eu já alimentei o objeto TCliente com algumas informações, que quando eu clico no componente como falei ele o objeto perde tipo: no_cliente, tp_conta, nu_rg... Entre outras referências.<br /><br />
<br /><br />
procedure TF_Cliente.btnSaveClick(Sender: TObject);<br /><br />
var<br /><br />
ObjCliente: TCliente;<br /><br />
ObjClienteController: TClienteController;<br /><br />
begin<br /><br />
try<br /><br />
ShowMessage(IntToStr(ObjCliente.id_conta));<br /><br />
Exit;
Responder

Gostei + 0

16/02/2018

John Andrade

Boa noite Adalberto Brasaca, melhor bom dia.
Acontece que o componente TComboBox não faz referência a esta objeto.
Por exemplo:
procedure TF_Cliente.EditClienteTipoEnter(Sender: TObject);
var
ObjClienteTipo: TClienteTipo
I: Integer;
begin
EditClienteTipo.Clear;

try
ObjClienteTipo:= ObjClienteTipo.Create;

try
ObjClienteTipo.ObjListCreate;
ObjClienteTipo.Search(ObjClienteTipo);

if ObjClienteTipo.FListClienteTipo.Count = 0 then
begin

for I := 0 to ObjClienteTipo.FListClienteTipo.Count - 1 do
begin
EditClienteTipo.Items.AddObject(TClienteTipo(ObjClienteTipo.FListClienteTipo.Items[I]).no_cliente_tipo, TObject(TClienteTipo(ObjClienteTipo.FListClienteTipo.Items[I]).id_cliente_tipo));

end;
end
else
begin
F_Mensagens.ReceberMensagem(''''Atenção!'''' + #13 +
''''Nenhum registro encontrado!'''');
TF_Mensagens.Mensagem(F_Mensagens.ObjMensagem, ''''I'''', [mbOk]);

except
on E: Exception do
begin
F_Mensagens.ReceberMensagem(''''Atenção!'''' + #13 +
E.Message);
TF_Mensagens.Mensagem(F_Mensagens.ObjMensagem, ''''E'''', [mbOk]);

end;
end;

finally
FreeAndNil(ObjClienteTipo);

end;

Esse objeto que você vê no evento OnEnter do TComboBox funciona perfeitamente.

PROBLEMA:
Tenho um objeto TCliente que quando eu clico no componente TComboBox ele perde as informações.

Eu já alimentei o objeto TCliente com algumas informações, que quando eu clico no componente como falei ele o objeto perde tipo: no_cliente, tp_conta, nu_rg... Entre outras referências.

procedure TF_Cliente.btnSaveClick(Sender: TObject);
var
ObjCliente: TCliente;
ObjClienteController: TClienteController;
begin
try
ShowMessage(IntToStr(ObjCliente.id_conta));
Exit;
Responder

Gostei + 0

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

Aceitar