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