Página 1 de 1
Auto Completes.
Enviado: 13 Mai 2005 09:00
por Marcos
Olá a todos do fórum, uma vez em uma loja eu vi um programa em clipper que tinha Auto Completes, ou seja, o operador iniciava a digitação e o sistema completava, isto é possivel em Clipper? Como fazer?
Pois eu acredito que facilita muito a vida do digitador, pense em preenchimentos de Cadastros (Clientes, fornecedores nome de ruas e endereçamento e etc).
Abraços,
Marcos.
Enviado: 13 Mai 2005 16:50
por Marcos
Será que não é possivel em clipper, ninguém nunca fez esta função, ou já viu?

Enviado: 13 Mai 2005 17:46
por evolver
Favor evitar flood desnecessário, aqui todas as mensagens são lidas por muita gente, se ninguem respondeu é porque até agora ninguem viu ou desenvolveu algo do gênero. Outros podem até estar fazendo pesquisas com amigos pra ver se sabem de algo.
Agora ficar postando seguidamente não ajuda nem um pouco alem de botar pressão em cima de um pessoal que colabora de bom grado.
Eu mesmo em meus muitos anos de clipper nunca vi nada assim.
Enviado: 14 Mai 2005 11:57
por Dudu_XBase
Bom Dia.
Provavelmente vc viu alguma função com uma rotina parecida com uma pesquisa pesquisa incremental só que mostrava o valor mais próximo na mesma linha do get.
Enviado: 17 Mai 2005 13:56
por Zoc
Tente assim, vc só vai precisar indicar a posição do get e cores.
@ 14,10 SAY "Descrição:" GET cDESCRICAO PICT "@!@K" WHEN BUSCANOME()
FUNCTION BUSCANOME
LOCAL tam, buf, get, pos, lin, col, tec
DBSETORDER( seu indice )
get := GETACTIVE()
lin := get:row
col := get:col
buf := get:VarGet()
tam := LEN(buf)
pos := 1
SETCOLOR( cores para limpar o get )
@ lin,col CLEAR TO lin,col // posição do seu get na tela
DO WHILE .T.
@ lin,col CLEAR TO lin,col // posição do seu get na tela
SETPOS(lin, col)
DISPOUT(buf)
SETCOLOR( cores do seu get )
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()
RETURN .T.
ENDIF
ENDDO
Enviado: 17 Mai 2005 16:35
por Marcos
Zoc funcionou perfeitamente, o único problema que vejo é que tenho que ter Indices para todos os Get's, e a busca também terá que ser feita no BD, isto tornaria o programa muito grande e lento, vejo que o Beneficio é menor que a recompensa.
Mas obrigado assim mesmo.
Abraços,
Marcos.