Página 1 de 1

Grid Setfocus

Enviado: 12 Fev 2008 12:38
por MARCELOG
Olá pessoal,
estou fazendo uma pesquisa letra a letra num textbox e definindo a
propriedade value do grid.
A seleção no grid é até alterada.
Contudo, quando o grid recebe o foco ele, apesar de value ser 2 (por
exemplo), insiste em destacar a primeira linha.
Como alterar esse comportamento?
Não consegui achar o método setfocus do grid para dar uma olhada e
tentar consertar.

Obrigado.

MarceloG

Enviado: 12 Fev 2008 14:33
por asimoes
Olá Marcelo,

Mostre pra gente o trecho do seu código pra analise.

[]´s

Enviado: 12 Fev 2008 15:03
por MARCELOG
Veja isso
...
@ 360,143 TEXTBOX TXT1 ;
HEIGHT 25 ;
WIDTH 465 ;
ON CHANGE PESQUSUA(USUARIO.CMB1.VALUE) ;
ON ENTER IIF(EMPTY(USUARIO.TXT1.VALUE),USUARIO.BTT1.SETFOCUS,USUARIO.GRD1.SETFOCUS)
...

// quando o usuário tecla ENTER e o campo está vazio, vai para o botão.
Se não, coloca o foco no grid.

PROCEDURE PESQUSUA(nColuna)
/*
Func/Proc: PESQUSUA
Objetivo.: Efetua pesquisa letra a letra no grid.
Adaptação de Stanis
*/

LOCAL i, cPesquisa

// Curto circuito

IF USUARIO.GRD1.ITEMCOUNT <= 1

RETURN

ENDIF

cPesquisa := ALLTRIM(USUARIO.TXT1.VALUE)

FOR i := 1 TO USUARIO.GRD1.ITEMCOUNT

IF SUBSTR(USUARIO.GRD1.ITEM(i)[nColuna],1,LEN(cPesquisa)) == cPesquisa

USUARIO.GRD1.VALUE := {i}

EXIT

ENDIF

NEXT i

RETURN

Se, por exemplo, USUARIO.GRD1.VALUE := {16}, ao colocar o foco no grid a linha 16 deveria está iluminada.

Mas não, a linha iluminada é a primeira.

MarceloG.

Ps: uso grid multiselect, mas no grid padrão o erro, ou melhor, comportamento também acontece.

Enviado: 14 Fev 2008 10:26
por MARCELOG
Olá pessoal,
não há nada de errado no grid.
É que a função que chamava a pesquisa estava no evento on change de um textbox.
Assim, ao fazer a alteração do conteúdo do textbox (mesmo externa), ele chamava a função de pesquisa.

De qualquer forma, brigadão.

MarceloG