Página 1 de 1

Posição do cursor

Enviado: 01 Nov 2010 10:59
por gbetorodrigues
Ola a todos
Estou tentando fazer uma pesquisa em um GET a medida que o usuário vai digitando, porém ao retornar da funcao de verificação ele perde a coluna (ou seja a posicao do cursor que ele estava anteriormente), indo parar no inicio do campo. Tentei enviar um KEYBOARD CHR(6) - Tecla END mas nao funciona se alguem tiver alguma sugestao agradeco
veja o exemplo das intrucoes:


LINHA ONDE CHAMA A FUNCAO ...
REDEFINE GET oOBS2D VAR xobs2 ID 4002 OF oshwobs MEMO ON CHANGE Tamobs(oOBS2D,@oSayob2,500,@oshwobs) UPDATE

TRECHO DA FUNCAO QUE EXECUTA E RETORNA


Local nTama := Len(oOBS2D:cText())
sayob2 := ALLTRIM(STR(fixobs - nTama)) + " caracteres"

formobs:update()
formobs:refresh()

...

oOBS2D:setfocus()
KEYBOARD CHR(6)

Re: Posição do cursor

Enviado: 03 Nov 2010 16:28
por gbetorodrigues
Ainda estou testando as dicas (ainda nao funcionou), estou fazendo algumas mudancas na rotina que é executada (antes do retorno). Obrigado a todos.

Re: Posição do cursor

Enviado: 03 Nov 2010 16:34
por gbetorodrigues
Acabei de efetuar o teste e o 'editbox' some ao passar pela função...

Re: Posição do cursor

Enviado: 03 Nov 2010 16:39
por gbetorodrigues
Observe as funcoes:

Quando eu faço com um GET VALID funciona, mas ao mudar para ON CNANGE , parece que o cursor se perde.

Código: Selecionar todos

FUNCTION OBSLAUDO1()

sayob2 := ALLTRIM(STR(600-LEN(xobs2))) + " caracteres"

DEFINE DIALOG oshwobs RESOURCE "OBSLAUDO"  

REDEFINE GET oOBS1A VAR xobs1    ID 4001 OF oshwobs MEMO UPDATE 
REDEFINE GET oOBS1B VAR xobstit2 ID 4007 OF oshwobs UPDATE 
REDEFINE GET oOBS1C VAR xendweb  ID 4008 OF oshwobs UPDATE 
REDEFINE SAY oSayob2 VAR sayob2  ID 4010 OF oshwobs UPDATE 
REDEFINE GET oOBS2D  VAR xobs2   ID 4002 OF oshwobs MEMO ON CHANGE Tamobs(oOBS2D,@oSayob2,(800-LEN(xobs2)),@oshwobs,@sayob2) UPDATE 
REDEFINE GET oOBS3E VAR xobs3    ID 4003 OF oshwobs MEMO UPDATE 

REDEFINE BUTTON obtobs ID 100 OF oshwobs ACTION oshwobs:End()

ACTIVATE DIALOG oshwobs CENTERED  

RETURN NIL 

*******************************************
FUNCTION Tamobs(oOBS2D,oSayob2,fixobs,formobs,sayob2)

LOCAL CHRLF := chr(10)+chr(13)//, sitobs := .T.

Local nTama := Len(oOBS2D:cText())
sayob2 := ALLTRIM(STR(fixobs-nTama)) + " caracteres" 

If nTama > fixobs
    MsgAlert("Tamanho máximo permitido !","Aviso !")
    //sitobs := .F.
Endif

formobs:update()
formobs:refresh()

oOBS2D:Goend()

RETURN NIL

*********************************************

Re: Posição do cursor

Enviado: 03 Nov 2010 16:43
por gbetorodrigues
Na linha onde se lê: ...800-LEN( ... deve mudar para 600
foi um esquecimento. (São 600 caracteres no máximo onde o usuário deve utilizar ).

Re: Posição do cursor

Enviado: 06 Jan 2011 15:22
por ICO
Boa Tarde..

Veja se é isso que vc. tá querendo...


Código: Selecionar todos

oget[8]:SetPos(0)
onde oget[8] é o get onde o cursor retorna, altere o SetPos(0) para a posição que vc. quer que retorne..

Abraços..