Descobrir Coluna do DBGrid

Delphi

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.


Armindo

Armindo

Curtidas 0

Respostas

Lehapan

Lehapan

29/04/2009

Caro Armindo,

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

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

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
POSTAR