Página 1 de 2
Lixo no GET
Enviado: 24 Abr 2009 17:33
por Netavin
Boa tarde amigos do Fórum.
Possuo uma rotina que localiza o nome enquanto se digita. É uma rotina aproveitada daqui mesmo do COL e adaptada ao meu sistema.
Ocorre que antes que eu comece digitar, aparece um caractere abelhudo "ú" e a rotina fica sem efeito.
Alguém poderia dar uma dica de como eliminar essa "traça" , por favor ?
Forte abraço a todos!
Netavin.
Re: LIXO NO GET
Enviado: 24 Abr 2009 18:26
por alaminojunior
Acho que tem a ver com a página de códigos utilizada.
Poste o trecho pra gente ver se descobre o que pode ser.
Re: LIXO NO GET
Enviado: 24 Abr 2009 18:44
por sygecom
É assim no chute não é facil, post parte do codigo que envolva o erro e vamos tentar achar esse abelhudo que nem você disse.
Re: LIXO NO GET
Enviado: 24 Abr 2009 22:50
por Netavin
Boa noite a todos!
Eis a rotina a que me referi no post anterior...
Código: Selecionar todos
#include "inkey.ch"
FUNCTION BUSCANO()
LOCAL tam, buf, get, pos, lin, col, tec, n_nsx
N_NSX := INDEXORD()
DBSETORDER(1)
get := GETACTIVE()
lin := get:row
col := get:col
buf := get:VarGet()
tam := LEN(buf)
pos := 1
Set cursor on
DO WHILE .T.
SETPOS(lin, col)
DISPOUT(buf)
SETPOS(lin, col - 1 + pos)
tec := INKEY(0)
IF tec >= 32 .AND. tec <= 255
TEC := ASC( UPPER( CHR( TEC )))
buf := LEFT(buf, pos - 1) + CHR(tec) + SUBS(buf, pos + 1)
IF DBSEEK(LEFT(buf, pos), .T.)
buf := LEFT(&(INDEXKEY(0)), tam)
ELSE
buf := LEFT(buf, pos) + SPACE( TAM - POS)
ENDIF
pos := MIN(tam, pos + 1)
ELSEIF tec == K_LEFT
pos := MAX(1, pos - 1)
ELSEIF tec == K_RIGHT
pos := MIN(tam, pos + 1)
ELSEIF tec == K_HOME
pos := 1
ELSEIF tec == K_END
pos := MIN(tam, LEN(TRIM(buf)) + 1)
ELSEIF tec == K_BS
IF pos > 1
pos --
buf := LEFT(buf, pos - 1) + SUBS(buf, pos + 1) + " "
ENDIF
ELSE
KEYB CHR(tec)
get:VarPut(buf)
get:UpdateBuffer()
DBSETORDER( N_NSX )
RETURN .T.
ENDIF
ENDDO
... alinha que chama Buscano() é a seguinte:
Código: Selecionar todos
@ 18,07 SAY "Nome :" Get fnome PICT "@!" When Buscano() VALID !Empty(fnome)
READ
Obrigado pela atenção !!!
Um abraço!
Netavin
Re: LIXO NO GET
Enviado: 27 Abr 2009 03:17
por sygecom
Olá Netavin,
Acabei de testar sua função aqui e não veio lixo algum no inicio do GET. se poder produza um pequeno exemplo que eu possa simular o erro aqui.
Re: LIXO NO GET
Enviado: 27 Abr 2009 09:25
por Netavin
Olá, bom dia !
caro amigo Syge, hoje o problema não ocorreu. É cabuloso né !! Acho que assim sendo, deve ser algum "efeito colateral" do uso de alguma outra rotina usada antes dessa.Que acha ?
Obrigado e um forte abraço!
Netavin.
Re: LIXO NO GET
Enviado: 27 Abr 2009 10:33
por sygecom
O Negocio é tentar limpar esse GET, antes fo READ ou dar um CLEAR GETS antes de chegar no GET FNOME
Re: LIXO NO GET
Enviado: 27 Abr 2009 10:42
por alaminojunior
Para entrar neste get, é preciso teclar alguma combinação de teclas antes ?
Re: LIXO NO GET
Enviado: 27 Abr 2009 14:18
por asimoes
Olá Netavin,
Você pode testar o seguinte:
Quando o get ficar ativo.
FUNCTION BUSCANO()
LOCAL tam, buf, get, pos, lin, col, tec, n_nsx
N_NSX := INDEXORD()
DBSETORDER(1)
get := GETACTIVE()
lin := get:row
col := get:col
buf := get:VarGet()
O teste:
if buf == "ú" //(o caracter abelhudo)
altd() //para debugar , não esqueça de marcar o /b na compilação.
//se parar aqui você saberá que vem de fora, ai neste caso use o clear gets.
endif
Você pode testar esta instrução em outros techos da função.
[]´s
Re: LIXO NO GET
Enviado: 27 Abr 2009 17:50
por Netavin
... boa tarde amigos !
Caro Alamino, não tem tecla de atalho. A função é chamada na linha do Get.
.
.
Caro Asimões, vou fazer este teste...
Grato a todos !
[]´s
Netavin
Re: LIXO NO GET
Enviado: 14 Mai 2009 10:00
por Netavin
Bom dia a todos !
Problema resolvido! É uma caixa de surpresa mesmo, não ?
Alguém aí imaginou que era só desabiliar o mouse para consertar esse problema ??
Mas isso não está certo !!! Tem que haver outra saída.
Um abraço !
Netavin
Re: LIXO NO GET
Enviado: 25 Mai 2009 15:43
por momente
Amigos,
Voltando a este tópico, gostaria de saber se existe alguma maneira mais simples de evitar que o mouse jogue alguma sujeira no get, sem ter que desabilita-lo, notei que quando um get esta aguardando alguma entrada e o mouse for tocado, o get é carregado com esta sujeira "Ú".
Valeu!
Re: LIXO NO GET
Enviado: 25 Mai 2009 18:16
por Itamar M. Lins Jr.
Get ou Inkey() ?
Saudações,
Itamar M. Lins Jr.
Re: LIXO NO GET
Enviado: 01 Jun 2009 14:02
por momente
Itamar,
Quando meu sistema entra em um get esperando a entrada de alguma informação do teclado, se tocar no mouse o get é carregado como o caracter "Ú", para não acontecer é necessário desabilitar o mouse, mas gostaria de saber se isso tem como ser feito de outra maneira. Outra coisa isso ocorre apenas no xharbour 1.2.1
Valeu!
Re: LIXO NO GET
Enviado: 01 Jun 2009 17:51
por Netavin
tarde pa tudo !
Caro momente, não é so no 1.2. Pois o meu é 1.0.0
Abraço!
Netavin