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