Grid Setfocus

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Grid Setfocus

Mensagem 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
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mensagem por asimoes »

Olá Marcelo,

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

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem 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.
Água mole em pedra dura tanto bate que até espirra!
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem 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
Água mole em pedra dura tanto bate que até espirra!
Responder