setFocus na coluna da grid com o nome do campo que esta no banco

Delphi

Banco de Dados

04/10/2019

Bom dia,

Tenho um problema, quando quero colocar o foco para uma coluna especifica pelo nome do campo no banco, nao da certo

porem se eu fizer colocando o numero da ordem da coluna, exemplo coluna 4, ai da certo, mas queria pelo nome do campo

Eu desejava dessa forma, porem assim ele nao da o foco.
if condicao then
  grdAjuste.SetFocus(''''id_codigo'''');

Agora se eu fizer assim...
if condicao then
grdAjuste.SetFocus(4);

assim da, porem dessa forma eu acho errado...

se alguem puder me ajudar...

Obrigado.
Mateus Ferreira

Mateus Ferreira

Curtidas 0

Respostas

Mateus Ferreira

Mateus Ferreira

04/10/2019

ignorem o tanto de aspas no primeiro codigo...apenas uma antes e uma depois
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

04/10/2019

crie uma função que te retorne o índice do campo a partir do nome, e use esse resultado para posicionar na coluna da grade.
algo assim:
function GridFieldID( oGrid: TDBGrid; strField: string ): integer;
var indice: integer;
begin
  result := -1;
  for indice := 0 to oGrid.Columns.Count-1 do
    if uppercase(oGrid.Columns.Items[indice].FieldName) = uppercase(strField) then
    begin
      result := indice;
      exit
    end;
end;

daí você usa assim:
if condicao then
  grdAjuste.SetFocus( GridFieldID( grdAjuste, 'id_codigo' ) );
GOSTEI 0
Mateus Ferreira

Mateus Ferreira

04/10/2019

Obrigado parceiro
GOSTEI 0
POSTAR