A biblioteca PTools tem algo assim. Funciona muito bem. Mas não tenho essa função. Tive que fazer a minha.alaminojunior escreveu:Este getcalc que mencionei, vem junto com o livro do Rick Spence.
Alinhar GET numérico à DIREITA
Moderador: Moderadores
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Olá Marcelo,MARCELOG escreveu:Jânio disse:
"Olá Daniel,
Esse getsys.prg funciona também com xharbour??? Se não, como fazer essa adaptação para que funcione???
Preciso muito disso...
Jânio"
Basta usar o Style ES_RIGHT
MarceloG
Nunca ouvi falar nesse 'Style ES_RIGTH'. Como se usa isso no xharbour???
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Desculpem a pequena demora, mas ta aí a danada ( a rotina e o header ), foi o Rick Spence quem escreveu.
Código: Selecionar todos
/***
* GetCalc.prg
*
* Calculator style input
*/
#include "Getexit.ch"
#include "Inkey.ch"
#include "Getcalc.ch"
FUNCTION GetCalcTest
LOCAL nVar1 := 0, ;
nVar2 := 0, ;
cVar2 := Space(12), ;
nVar3 := 0
LOCAL GetList := {}
CLEAR SCREEN
@ 10, 10 SAY "Enter nVar1" GET nVar1 CALC
@ 11, 10 SAY "Enter nVar2" GET nVar2 CALC
@ 12, 10 SAY "Enter cVar2" GET cVar2 CALC
@ 13, 10 SAY "Enter nVar3" GET nVar3
READ
RETURN NIL
proc GetCalc( oGet )
// read the GET if the WHEN condition is satisfied
IF ( GetPreValidate(oGet) )
// activate the GET for reading
oGet:SetFocus()
// RS added this
// Start at last position
oGet:end()
// Just to here
DO WHILE ( oGet:exitState == GE_NOEXIT )
// check for initial typeout (no editable positions)
IF ( oGet:typeOut )
oGet:exitState := GE_ENTER
ENDIF
// apply keystrokes until exit
DO WHILE ( oGet:exitState == GE_NOEXIT )
GetCalcApplyKey(oGet, InKey(0))
ENDDO
// disallow exit if the VALID condition is not satisfied
IF ( !GetPostValidate(oGet) )
oGet:exitState := GE_NOEXIT
ENDIF
ENDDO
// de-activate the GET
oGet:KillFocus()
ENDIF
RETURN
/***
* GetCalcApplyKey()
* Apply a single Inkey() keystroke to a GET.
*
* NOTE: GET must have focus.
* Standard stuff. RS changed only BS and otherwise
*/
#define K_UNDO K_CTRL_U
proc GetCalcApplyKey(oGet, nKey)
local cKey
local bKeyBlock
local cTemp
local nTemp
// check for SET KEY first
IF (bKeyBlock := SetKey(nKey)) <> NIL
GetDoSetKey(bKeyBlock, oGet)
RETURN // NOTE
ENDIF
DO CASE
CASE nKey == K_UP
oGet:exitState := GE_UP
CASE nKey == K_SH_TAB
oGet:exitState := GE_UP
CASE nKey == K_DOWN
oGet:exitState := GE_DOWN
CASE nKey == K_TAB
oGet:exitState := GE_DOWN
CASE nKey == K_ENTER
oGet:exitState := GE_ENTER
CASE nKey == K_ESC
IF Set(_SET_ESCAPE)
oGet:undo()
oGet:exitState := GE_ESCAPE
ENDIF
CASE nKey == K_PGUP
oGet:exitState := GE_WRITE
CASE nKey == K_PGDN
oGet:exitState := GE_WRITE
CASE nKey == K_CTRL_HOME
oGet:exitState := GE_TOP
// both ^W and ^End terminate the READ (the default)
CASE nKey == K_CTRL_W
oGet:exitState := GE_WRITE
CASE nKey == K_UNDO
oGet:Undo()
CASE nKey == K_BS .OR. nKey == K_DEL
oGet:delete()
IF oGet:type == "C"
cTemp := oGet:unTransform()
cTemp := " " + Substr(cTemp, 1, Len(cTemp) - 1)
oGet:buffer := Transform(cTemp, oGet:picture)
ELSE
nTemp := oGet:unTransform()
IF At(".", oGet:buffer) != 0
// There is a decimal point
nTemp := nTemp / 10
ELSE
// No decimal point, division already taken place
// by deleting last character
ENDIF
oGet:buffer := Transform(nTemp, oGet:picture)
ENDIF
oGet:display()
OTHERWISE
IF (nKey >= Asc('0') .AND. nKey <= Asc('9')) .OR. ;
(nKey == Asc('.') .AND. ;
oGet:type == "C" .AND. At(".", oGet:buffer) == 0)
cKey := Chr(nKey)
IF oGet:type == "C"
cTemp := oGet:unTransform()
cTemp := SubStr(cTemp, 2) + " "
oGet:buffer := Transform(cTemp, oGet:picture)
ELSE
nTemp := oGet:unTransform()
nTemp := nTemp * 10
oGet:buffer := Transform(nTemp, oGet:picture)
ENDIF
// NOTE - important to use OverStrike here to set changed
// Alternative is to stuff key yourself. However, that does
// not set changed, therefore var is not updated.
oGet:overStrike(cKey)
oGet:end()
oGet:display()
ENDIF
ENDCASE
RETURNCódigo: Selecionar todos
/***
* Getcalc.ch
*
* Definition of GET CALCULATOR command.
*/
#command @ <row>, <col> GET <var> ;
[<clauses,...>] ;
CALCULATOR ;
[<moreClauses,...>] ;
;
=> @ <row>, <col> GET <var> ;
[<clauses>] ;
SEND reader := {|oGet| ;
GetCalc(oGet) } ;
[<moreClauses>]Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Alamino!
Também estou interessado em alterar a direção dos get numéricos e testei a sua função mais tive os seguintes problemas:
- Não aceitou a mascara @E;
- Quando enche o campo o foco deveria saltar para o próxomo campo e no entando, inicialmente o tamanho do get é aumentado e depois é colocado asteriscos "*".
Você conseguiu corrigir esses erros?
Também estou interessado em alterar a direção dos get numéricos e testei a sua função mais tive os seguintes problemas:
- Não aceitou a mascara @E;
- Quando enche o campo o foco deveria saltar para o próxomo campo e no entando, inicialmente o tamanho do get é aumentado e depois é colocado asteriscos "*".
Você conseguiu corrigir esses erros?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Olá amigos!
Meu getsys foi alterado pela GAS, e usei as informações deste post (colocadas pelo Daniel) para implementar esse getsys e colocar a opção de get numérico rolando da direita para a esquerda e ficou muito bom mesmo.
Havia um tempo que queria fazer isso e graças a todos vocês tá tudo rodando perfeitamente.
Um agradecimento especial ao Daniel que colocou os códigos do getsys modificado aqui, valeu mesmo.
Agora vou postar o getsys do GAS com as alterações no forum da Gas Informática, para que todos os usuários GAS possam usufruir dessa modificação.
Meu getsys foi alterado pela GAS, e usei as informações deste post (colocadas pelo Daniel) para implementar esse getsys e colocar a opção de get numérico rolando da direita para a esquerda e ficou muito bom mesmo.
Havia um tempo que queria fazer isso e graças a todos vocês tá tudo rodando perfeitamente.
Um agradecimento especial ao Daniel que colocou os códigos do getsys modificado aqui, valeu mesmo.
Agora vou postar o getsys do GAS com as alterações no forum da Gas Informática, para que todos os usuários GAS possam usufruir dessa modificação.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
Ola amigos. eu testei o getsys do Daniel em meu sistema funcionou muito bem, so por um fato, em um certo get meu na tela de venda eu pesso para digitar o valor pago para mostrar o Troco, ai c por acaso na relacao de itens tiveres varios itens com quantidade 3 casas decimais * preço de venda 2 casas decimas e ainda desconto de porcentagem da uma dizima que a funcao nao compreende nao tive tempo de estudar este caso mas vi acontecer.. o valor pago no cujo get é recebindo com dizima e mostrado com 2 casas decimais, mas quando Teclo ENTER parece que ele no 'validade' acha que eu estou digitando valor menor que o total da venda ai ele diz total pago nao deve ser menor que a da venda.. Boiei mesmo....rsrsr
Daniel,Daniel escreveu:Ola Jâniojanio escreveu:
Olá Daniel,
Esse getsys.prg funciona também com xharbour??? Se não, como fazer essa adaptação para que funcione???
Preciso muito disso...
Jânio
Ela funciona em xHarbour sem ter que mexer em nada.
Essa função nao tá funcionando com Pict "@R" em variaveis NUMERICAS. Em variáveis CARACTER tá ok.
Exemplo:
Com pict "@R 99999-9", o numero 123456 fica 1234-6
Como consertar??
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Tamanho menor??? Não entendi. Variávies NUMERICAS se inicia com ZERO sem especificar tamanho, tipo nVARIAVEL := 0.Daniel escreveu:Jânio
vc pode esta declarando a variavel com tamanho menor.
É o que eu faço.
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Jânio
testei aqui como vc falou, mais so deu erro quando usa ponto decimal. este erro tambem deu em clipper sem esta funcao.
usei este exemplo para testar
Cls
x:= Space(6)
x1:= Space(8)
x2:= 0
@ 8, 12 Say "Teste" Get x Picture "@r 99999-9"
@ 10, 12 say "Teste" Get x1
@ 12, 12 say "Teste" Get x2 Picture "9999999"
Read
@ 14, 12 say x
@ 16, 12 say x1 Picture "@R 999999-99"
@ 18, 12 say x2 Picture "@R 99999-99"
inkey(0)
aqui deu certo
Cls
x:= Space(6)
x1:= Space(8)
x2:= 0
@ 8, 12 Say "Teste" Get x Picture "@r 99999-9"
@ 10, 12 say "Teste" Get x1
@ 12, 12 say "Teste" Get x2 Picture "@e 99,999.99"
Read
@ 14, 12 say x
@ 16, 12 say x1 Picture "@R 999999-99"
@ 18, 12 say x2 Picture "@R 9999-99"
inkey(0)
aqui deu erro como vc falou
testei aqui como vc falou, mais so deu erro quando usa ponto decimal. este erro tambem deu em clipper sem esta funcao.
usei este exemplo para testar
Cls
x:= Space(6)
x1:= Space(8)
x2:= 0
@ 8, 12 Say "Teste" Get x Picture "@r 99999-9"
@ 10, 12 say "Teste" Get x1
@ 12, 12 say "Teste" Get x2 Picture "9999999"
Read
@ 14, 12 say x
@ 16, 12 say x1 Picture "@R 999999-99"
@ 18, 12 say x2 Picture "@R 99999-99"
inkey(0)
aqui deu certo
Cls
x:= Space(6)
x1:= Space(8)
x2:= 0
@ 8, 12 Say "Teste" Get x Picture "@r 99999-9"
@ 10, 12 say "Teste" Get x1
@ 12, 12 say "Teste" Get x2 Picture "@e 99,999.99"
Read
@ 14, 12 say x
@ 16, 12 say x1 Picture "@R 999999-99"
@ 18, 12 say x2 Picture "@R 9999-99"
inkey(0)
aqui deu erro como vc falou
Daniel
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Colega Daniel,Daniel escreveu:Jânio
usei este exemplo para testar
Cls
x:= Space(6)
x1:= Space(8)
x2:= 0
@ 12, 12 say "Teste" Get x2 Picture "9999999"
Read
@ 18, 12 say x2 Picture "@R 99999-99"
inkey(0)
aqui deu certo
x2:= 0
@ 12, 12 say "Teste" Get x2 Picture "@e 99,999.99"
Read
@ 18, 12 say x2 Picture "@R 9999-99"
inkey(0)
Veja no seu exemplo que vc 'getou' PICT "9999999" e "@e 99,999.99" na variável x2 (única numérica).
Não é este o meu caso! O meu problema estar em getar variáveis numéricas com PICT "@R". PICT "@R" em variáveis CARACTER tá ok aqui também.
Faça o teste assim:
x2:= 0
@ 12, 12 say "Teste" Get x2 Picture "@R 999999-9"
Read
Digite: 123456 e pressione <ENTER>. Vc vai ver que ficou assim: 1234-6, ou seja, 'comeu' o 5.
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
TerraSoftware
- Usuário Nível 3

- Mensagens: 353
- Registrado em: 28 Jul 2004 13:14
- Localização: Cianorte-PR
- Contato:
-
diogenes_varela
- Usuário Nível 3

- Mensagens: 206
- Registrado em: 04 Nov 2006 19:33
- Localização: Brasília - DF
Comigo saiu tudo normal: 12345-6Digite: 123456 e pressione <ENTER>. Vc vai ver que ficou assim: 1234-6, ou seja, 'comeu' o 5.
Os computadores não sabem o que fazem. Nós, na maioria das vezes, também não...
E disse ao Programador: "Todos os teus programas terão erros e irás corrigi-los até ao fim dos teus dias". Gen. 1:9
E disse ao Programador: "Todos os teus programas terão erros e irás corrigi-los até ao fim dos teus dias". Gen. 1:9

