TComboBox sumindo com referências de um objeto.
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
Curtidas 0
Melhor post
Adalberto Brasaca
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.
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.
GOSTEI 1
Mais Respostas
John Andrade
12/02/2018
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;
GOSTEI 0
John Andrade
12/02/2018
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;
GOSTEI 0