Descobrir Coluna do DBGrid
Como faço para saber o número da coluna (column) do dbgrid em que determinado campo de uma teabela está sendo exibido?
Por exemplo, isso aqui funcionaria se o dbgrid mostrasse todos os campos de um dataset, mas por exemplo, o dataSet tem 10 campos, mas no dbgrid quero mostrar somente 6. Aí em determinada situação, preciso saber em qual coluna está determinado campo.
VColuna := DBGrid1.columns[DM.CDSClientes.Fieldbyname(´NOMECAMPO´).Index];
Qualquer dica ajuda.
Obrigado.
Por exemplo, isso aqui funcionaria se o dbgrid mostrasse todos os campos de um dataset, mas por exemplo, o dataSet tem 10 campos, mas no dbgrid quero mostrar somente 6. Aí em determinada situação, preciso saber em qual coluna está determinado campo.
VColuna := DBGrid1.columns[DM.CDSClientes.Fieldbyname(´NOMECAMPO´).Index];
Qualquer dica ajuda.
Obrigado.
Armindo
Curtidas 0
Respostas
Lehapan
29/04/2009
Caro Armindo,
segue uma rotina em anexo...
segue uma rotina em anexo...
function Ret_IndiceColuna(dbGrid: TDBGrid; NomeField: string): integer; var x: integer; begin Result := -1; for x := 0 to dbGrid.Columns.Count - 1 do begin if UpperCase(NomeField) = UpperCase(dbGrid.Fields[x].FieldName) then begin Result := x; Break; end ; end; end;
GOSTEI 0
Armindo
29/04/2009
Obrigado pela resposta lehapan, mas eu estava pensando em algo que não necessitasse ´for i´. De qualquer forma, já ajuda bastante. Obrigado.
Como faço para saber o número da coluna (column) do dbgrid em que determinado campo de uma teabela está sendo exibido?
Por exemplo, isso aqui funcionaria se o dbgrid mostrasse todos os campos de um dataset, mas por exemplo, o dataSet tem 10 campos, mas no dbgrid quero mostrar somente 6. Aí em determinada situação, preciso saber em qual coluna está determinado campo.
VColuna := DBGrid1.columns[DM.CDSClientes.Fieldbyname(´NOMECAMPO´).Index];
Qualquer dica ajuda.
Obrigado.
GOSTEI 0
Devmedia
29/04/2009
Como faço para saber o número da coluna (column) do dbgrid em que determinado campo de uma teabela está sendo exibido?
Por exemplo, isso aqui funcionaria se o dbgrid mostrasse todos os campos de um dataset, mas por exemplo, o dataSet tem 10 campos, mas no dbgrid quero mostrar somente 6. Aí em determinada situação, preciso saber em qual coluna está determinado campo.
VColuna := DBGrid1.columns[DM.CDSClientes.Fieldbyname(´NOMECAMPO´).Index];
Qualquer dica ajuda.
Obrigado.
Olá Armindo, tudo bom contigo?
Olha eu não entendi essa sua dúvida.
De qual o motivo de voce precisar desta vamos dizer assim ´consulta´.
Porque voce no DBGrid pode predeterminar os FIELD´s que serão visualizados. E assim então estaticamente só vai ser visualizado aquilo. Consecutivamente voce ali mesmo já vai saber qual COLUNA vai está o campo que voce precisa, pois pode colocar na posição que quiser dentro do DBGrid.
Se não foi esta sua dúvida, desculpe pela resposta.
Agora em uma questão de consulta, teria que abordar várias coisas, por exemplo:
-> Nos demais FIELD´s não poderia ter dados duplicados, pois então não seria uma consulta exata.
Questão de código, talvez resolveria com uma busca assim:
DBGrid1.DataSource.DataSet.Locate(´CAMPO´, OQUE QUER CONSULTAR, []);
Caso positivo, ou clique em algum button, não sei como voce fez, ele retornaria a ´Index´ do Field que o ponteiro do DBGrid está consultando. Deu pra entender? Mas acredito que poderia te ajudar.
Abraço.
GOSTEI 0