Página 1 de 1
Onde colocar o inkey para o dbedit???
Enviado: 29 Fev 2008 23:31
por ERASMO ANDRIOLI
Código: Selecionar todos
DECLARE array_nf[1]
array_nf[1] :='TRANS(numlcto,"9999999")+"³ "+TRANS(contalcto,"99")+" ³ "+DTOC(dtemlcto)+"³ "+DTOC(dtmvlcto)+"³ "+TRANS(ABS(valorlcto),"@E 9,999,999.99")+"³"+desctp+"³ "+tipo+"³"+ticado'
KEYBOARD CHR(32)
letra := 0
letra1:= ""
letra2:= ""
DBGOBOTTOM()
INKEY(0)
DBEDIT(05,1,18,77,array_nf,"colu",,"","")
DBGOBOTTOM()
DESKTOP()
RSTENV(TEL_EST)
RETURN(.T.)
*-----------------
FUNCTION colu
*-----------------
* Localizando por lan‡amento quando for digitado um numero...
IF LASTKEY() >= 48 .AND. LASTKEY() <= 57
IF LEN(LTRIM(STR(letra))) < 6
letra=VAL(CHR(LASTKEY()))
letra1=STR(letra)
letra2=letra2+letra1
letra=VAL(letra2)
ENDIF
ffseek := letra
SET SOFTSEEK ON
SET ORDER TO 2
DBSEEK(ffseek)
SET SOFTSEEK OFF
KEYBOARD CHR(176)
ELSEIF LASTKEY() <> 176
letra := 0
letra1:= ""
letra2:= ""
ENDIF
IF letra=0
@24,35 SAY PADC("BUSCAR: "+"_",30," ") COLOR("GR+/BG")
INKEY(0)
ELSE
@24,35 SAY PADC("BUSCAR: "+LTRIM(STR(letra))+"_",30," ") COLOR("GR+/BG")
INKEY(0)
ENDIF
Os inkeys acima não funcionam pelo Harbour... tenho que digitar 2x alguma coisa pra sair na tela.
Alguem sabe onde eles devem ir??
Abraços
Enviado: 03 Mar 2008 12:00
por gvc
Veja que vc coloca um CR no bufferde teclado (1) e faz a leitura logo após (2).
KEYBOARD CHR(32) // (1)
letra := 0
letra1:= ""
letra2:= ""
DBGOBOTTOM()
INKEY(0) // (2)
Vc lê o lastkey várias vezes.
// VEja isso:
FUNCTION colu
local tecla
tecla := lastkey()
* Localizando por lan‡amento quando for digitado um numero...
IF tecla >= 48 .AND. tecla <= 57
IF LEN(LTRIM(STR(letra))) < 6
letra := tecla // VAL(CHR(LASTKEY())) // transforma em ASC e depois em número???
letra1 := STR(letra)
letra2 += letra1
letra :=VAL(letra2)
ENDIF
ffseek := letra
dbsetorder(2)
DBSEEK(ffseek, .T.)
KEYBOARD CHR(176) // Não entendi.
ELSEIF tecla # 176
letra := 0
letra1:= ""
letra2:= ""
ENDIF
IF letra=0
@24,35 SAY PADC("BUSCAR: "+"_",30) COLOR("GR+/BG")
ELSE
@24,35 SAY PADC("BUSCAR: "+LTRIM(STR(letra))+"_",30) COLOR("GR+/BG")
ENDIF
INKEY(0) // Não entendi este tb.
return(1) // faltou isto aqui
// Eu costumo separar os campos
DECLARE array_nf
array_nf := {numlcto,;
contalcto,;
dtemlcto,;
dtmvlcto,;
valorlcto,;
desctp,;
tipo,;
ticado}
Enviado: 03 Mar 2008 15:58
por ERASMO ANDRIOLI
ESTOU FAZENDO ASSIM PARA BUSCAR UM NOME E NAO ESTA DANDO CERTO, O PROG ESTA "COMENDO" OS CARACTERES...
Código: Selecionar todos
DECLARE SELFOR[1]
SELFOR[1] :='NOMEFOR+" ³ "+STR(CONTA_P)'
WIN(2,15,21,65,"ESCOLHA UM COLABORADOR",'GR+/N+*','N+*/W')
@03,16 SAY " NOME ³CONTA "
@04,16 SAY "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄ"
@19,16 SAY "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄ"
letra := ""
letra1 := ""
KEYBOARD CHR(176)
DBGOTOP()
INKEY(0)
DBEDIT(05,16,18,64,SELFOR,"SELPARC",,"","")
DESKTOP()
RSTENV(TEL_INI)
SET CENTURY ON
SET DELETED ON
RETURN(.T.)
*-----------------
FUNCTION SELPARC // Mostrar Fornecedores...
*-----------------
tecla=lastkey()
IF (tecla >= 65 .AND. tecla <= 122) .OR. tecla == 32 .OR. (tecla >= 40 .AND. tecla <= 57)
IF LEN(LTRIM(letra)) < 30
letra = UPPER(CHR(tecla))
letra1=letra1+letra
letra=letra1
ENDIF
ffseek := letra
SET SOFTSEEK ON
DBSEEK(ffseek)
SET SOFTSEEK OFF
KEYBOARD CHR(176)
INKEY(0)
ELSEIF tecla <> 176
letra := ""
letra1:= ""
ENDIF
IF letra = ""
@20,16 SAY PADC("BUSCAR: "+"_",49," ") COLOR("W+/W")
ELSE
@20,16 SAY PADC("BUSCAR: "+letra+"_",49," ") COLOR("W+/W")
ENDIF
RETURN(1)
[quote]
Pra numeros deu certissimo, obrigado.
Más pra texto nao esta dando não... Aguardo o apoio dos amigos...
Abraços[/quote]
Enviado: 03 Mar 2008 16:01
por ERASMO ANDRIOLI
Para numeros só deu certo desta forma:
Código: Selecionar todos
* Localizando por lan‡amento quando for digitado um numero...
tecla=LASTKEY()
IF tecla >= 48 .AND. tecla <= 57
IF LEN(LTRIM(STR(letra))) < 6
letra=VAL(CHR(tecla))
letra1=STR(letra)
letra2=letra2+letra1
letra=VAL(letra2)
ENDIF
ffseek := letra
SET SOFTSEEK ON
SET ORDER TO 2
DBSEEK(ffseek)
SET SOFTSEEK OFF
KEYBOARD CHR(176)
INKEY(0)
ELSEIF tecla <> 176
letra := 0
letra1:= ""
letra2:= ""
ENDIF
IF letra=0
@24,35 SAY PADC("BUSCAR: "+"_",30," ") COLOR("GR+/BG")
ELSE
@24,35 SAY PADC("BUSCAR: "+LTRIM(STR(letra))+"_",30," ") COLOR("GR+/BG")
ENDIF
Devo lembrar-lhes que no XHarbour só dá certo com o inkey acima.
Enviado: 09 Mar 2008 13:52
por sygecom
Use TBROWSE que é bem mais estavel que o DBEDIT.