Fórum Descobrir Coluna do DBGrid #370110

29/04/2009

0

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

Responder

Posts

29/04/2009

Lehapan

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;



Responder

Gostei + 0

30/04/2009

Armindo

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.



Responder

Gostei + 0

05/05/2009

Devmedia

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar