Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Ago 02, 2019 3:15 pm Assunto: Como capturar o id de um combobox? |
|
|
Como capturar o id de um combobox?
Quero digitar o nome e recuperar o id?
Tentei assim, mais não da certo
Código: | DM.FDQueryTmp.Close;
DM.FDQueryTmp.SQL.Clear;
DM.FDQueryTmp.SQL.Text :=
' SELECT * FROM parceiro ';
DM.FDQueryTmp.Open;
// // cbParceiro.Items.Clear;
DM.FDQueryTmp.First;
while not DM.FDQueryTmp.Eof do
begin
iIndice := cbParceiro.ItemIndex;//iIndice é variável explicativa
cbParceiro.Items.AddObject(
DM.FDQueryTmp.FieldByName('descricao').AsString,
TObject(DM.FDQueryTmp.FieldByName('idparceiro').AsInteger));
DM.FDQueryTmp.Next;
end;
FEquipe.parceiro_idparceiro := Integer(cbParceiro.Items.Objects[iIndice]); {recuperando o valor armazenado} |
Vou gravar este id da tabela parceiro para outra tabela chamada equipe
Tambem quero depois quando consultar pelo id gravado na tabela equipe trazer no combobox o nome gravado na tabela parceiro. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
ric_rio2 Aprendiz
Registrado: Segunda-Feira, 1 de Outubro de 2018 Mensagens: 108
|
Enviada: Seg Ago 05, 2019 10:14 am Assunto: |
|
|
Bom dia
Cara..
Aparentemente esta tudo certo..
Só que não pode estar tudo dentro de uma mesma procedure como parece estar..
Tipo..Exemplo de como PODERIA SER
No OnCreate do Form
Código: | begin
DM.FDQueryTmp.Close;
DM.FDQueryTmp.SQL.Clear;
DM.FDQueryTmp.SQL.Text :=
' SELECT * FROM parceiro ';
DM.FDQueryTmp.Open;
cbParceiro.Items.Clear;
DM.FDQueryTmp.First;
while not DM.FDQueryTmp.Eof do
begin
cbParceiro.Items.AddObject(
DM.FDQueryTmp.FieldByName('descricao').AsString,
TObject(DM.FDQueryTmp.FieldByName('idparceiro').AsInteger));
DM.FDQueryTmp.Next;
end;
end
|
No OnChenge ou OnExit (a gosto do cliente) do COMBO
Código: | Var
FEquipe.parceiro_idparceiro : Integer;
begin
FEquipe.parceiro_idparceiro := Integer(cbParceiro.Items.Objects[ComboBox.ItemIndex]); {recuperando o valor armazenado}
end; |
Mas como falei... aparentemente esta tudo certo.. eu uso isso direito
Qualquer coisa é só falar |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Seg Ago 05, 2019 10:55 am Assunto: |
|
|
ric_rio2 escreveu: | Bom dia
Cara..
Aparentemente esta tudo certo..
Só que não pode estar tudo dentro de uma mesma procedure como parece estar..
Tipo..Exemplo de como PODERIA SER
No OnCreate do Form
Código: | begin
DM.FDQueryTmp.Close;
DM.FDQueryTmp.SQL.Clear;
DM.FDQueryTmp.SQL.Text :=
' SELECT * FROM parceiro ';
DM.FDQueryTmp.Open;
cbParceiro.Items.Clear;
DM.FDQueryTmp.First;
while not DM.FDQueryTmp.Eof do
begin
cbParceiro.Items.AddObject(
DM.FDQueryTmp.FieldByName('descricao').AsString,
TObject(DM.FDQueryTmp.FieldByName('idparceiro').AsInteger));
DM.FDQueryTmp.Next;
end;
end
|
No OnChenge ou OnExit (a gosto do cliente) do COMBO
Código: | Var
FEquipe.parceiro_idparceiro : Integer;
begin
FEquipe.parceiro_idparceiro := Integer(cbParceiro.Items.Objects[ComboBox.ItemIndex]); {recuperando o valor armazenado}
end; |
Mas como falei... aparentemente esta tudo certo.. eu uso isso direito
Qualquer coisa é só falar |
Putz era isso mesmo ric_rio2. Muito obrigado. Agora para eu trazer neste combobox o texto cfe o ID como faço? _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Ter Ago 06, 2019 1:14 pm Assunto: |
|
|
Se a empresa utiliza o jedi, eu utilizaria o jvdbcombobox e preencheria os items e values.
O bom de você adotar este componente é que no máximo você precisa preencher os dados sem se preocupar em liberar a memória depois.
No seu caso é necessário liberar a memória, pois você está lidando com ponteiros para objetos, pois caso contrário você acaba com leaks de memória.
O componente acima eu o utilizo, acho muito mais simples, mas entendo que em empresas nem sempre isto é possível.
Estou sem acesso, vou te passar outro código que ficará mais claro para você.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
|
ric_rio2 Aprendiz
Registrado: Segunda-Feira, 1 de Outubro de 2018 Mensagens: 108
|
Enviada: Qua Ago 07, 2019 6:49 am Assunto: |
|
|
Bom dia johnny-walker
Como disse anteriormente eu sempre uso esse código e nunca tive a preocupação com a memória. Simplesmente ao sair do form dou FreeAndNil(Form).
Como seria "limpar a memoria" para esse código do combobox??
Em tempo..
estou usando o ReportMemoryLeaksOnshutDown:= True; e ao sair do projeto quando deixo de fechar ou liberar algum objeto, sempre me da uma mensagem de vazamento de memoria.. ( muito legal essa parada no delphi xx no delphi 7 não tinha isso ).
Ao usar esse código não me retorna nada ao sair do form ou/e projeto. |
|
Voltar ao Topo |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
|
Voltar ao Topo |
|
|
|