Page 1 of 1
un poco de ayuda
Posted: Mon Jul 13, 2015 6:22 pm
by solving
¡Buenos dias a todos!
Acabo de llegar al forum en lengua española y soy un usuario italiano de fivetouch.
Publico aquì un ejemplo en el que estoy trabajando y querrìa preguntaros algunas informaciones:
1) Como configurar el color en el mando ->oLab1:setText(ALLTRIM(STR(nR))) ?
en la funciòn calcolo()
2)¿Es posible llamar la funciòn calcolo() automàticamente sin uitilizar el pulsador -> BUTTON oBtnOK?
Por ejemplo con un evento en la get de la variable -> nsco
¡Gracias de antemano!
Saludos
Code: Select all
#include "FiveTouch.ch"
function Main()
LOCAL oDlg
LOCAL oPre, nPre := "0"
LOCAL oSco, nSco := "20"
LOCAL oBtnEnd, oBtnOk
DEFINE DIALOG oDlg TITLE "Calcolo" ;
SIZE 300, 200
@ 160, 25 BUTTON oBtnEnd PROMPT "Abbandona" OF oDlg ;
ACTION oDlg:End()
@ 160, 120 BUTTON oBtnOk PROMPT "Calcolo" OF oDlg ;
ACTION Calcolo( oDlg, oPre, nPre, nSco )
@ 20, 020 SAY oSay PROMPT "Prezzo" OF oDlg
@ 50, 020 SAY oSay PROMPT "Sconto" OF oDlg
@ 90, 020 SAY oSay PROMPT "Scontato" OF oDlg
@ 15, 060 GET oPre VAR nPre OF oDlg
oPre:setFixedSize(130,25)
oPre:setInputMask("0000")
oPre:setFocus()
@ 45, 060 GET oSco VAR nSco OF oDlg
oSco:setFixedSize(50,25)
oSco:setInputMask("0000")
ACTIVATE DIALOG oDlg CENTERED
RETURN
// ----------------------- CALCOLO
FUNCTION Calcolo( oDlg, oPre, nPre, nSco )
LOCAL nR := "0"
LOCAL oLab1 := QLabel( oDlg )
LOCAL oFont := QFont()
nR := VAL( nPre) - (VAL(nPre)*(VAL(nSco)/100))
oLab1:setText(ALLTRIM(STR(nR)))
oLab1:move( 70, 87 )
* --- Metodo 1
*oLab1:setFont( QFont( "Courier New", 12) )
* --- Metodo 2
oFont:setPointSize(14)
oFont:setBold(.T.)
oFont:setUnderLine(.T.)
oLab1:setFont(oFont)
oLab1:show()
oPre:setFocus()
RETURN NIL
Re: un poco de ayuda
Posted: Mon Jul 13, 2015 6:33 pm
by solving
resuelto cómo configurar el color
oLab1:setStyleSheet( "background-color : white; color : red;" )
Re: un poco de ayuda
Posted: Mon Jul 13, 2015 8:54 pm
by Antonio Linares
Giussepe,
Si revisas el fichero FiveTouch.ch verás como está definido el comando para los GETs:
Code: Select all
#xcommand @ <nRow>, <nCol> GET <oGet> ;
[ VAR <uData> ] ;
[ OF <oWnd> ] ;
[ SIZE <nWidth>, <nHeight> ] ;
=> ;
<oGet> := QLineEdit():New( <oWnd> ) ;
[; <oGet>:SetText( IfNil( <uData>, "" ) ) ] ;
[; <oGet>:Move( <nCol>, <nRow> ) ] ;
[; <oGet>:Resize( IfNil( <nWidth>, 80 ), IfNil( <nHeight>, 30 ) ) ] ;
[; <oGet>:Connect( "textChanged(QString)",;
{ | cValue | <uData> := cValue } ) ]
En esta línea:
<oGet>:Connect( "textChanged(QString)",;
{ | cValue | <uData> := cValue } )
definimos un codeblock que se evaluará cuando el texto del GET cambie. Asi que supongo te puede servir para lo que necesitas.
Re: un poco de ayuda
Posted: Tue Jul 14, 2015 8:41 am
by solving
funciona bien
Code: Select all
@ 45, 060 GET oSco VAR nSco OF oDlg
oSco:setFixedSize(50,25)
oSco:setInputMask("00")
oSco:Connect( "textChanged(QString)",{|nSco|Calcolo(oDlg, oPre, nPre, nSco)})
// ----------------------- CALCOLO
FUNCTION Calcolo( oDlg, oPre, nPre, nSco )
.
.
**oPre:setFocus() <--- desactiva
RETURN NIL
Saludos
Re: un poco de ayuda
Posted: Tue Jul 14, 2015 9:02 am
by solving
si escribo la segunda variable consigo el resultado.
mientras que la variable está llena
si uso el botón "Calcolo "
que llama a la función de calcolo()
la variable " nSco " está vacía
?
Code: Select all
#include "FiveTouch.ch"
function Main()
LOCAL oDlg
LOCAL oPre, nPre := "0"
LOCAL oSco, nSco := "0"
LOCAL oBtnEnd, oBtnOk
DEFINE DIALOG oDlg TITLE "Calcolo" ;
SIZE 300, 200
@ 160, 25 BUTTON oBtnEnd PROMPT "Abbandona" OF oDlg ;
ACTION oDlg:End()
@ 160, 120 BUTTON oBtnOk PROMPT "Calcolo" OF oDlg ;
ACTION Calcolo( oDlg, oPre, nPre, nSco,0 )
@ 20, 020 SAY oSay PROMPT "Prezzo" OF oDlg
@ 50, 020 SAY oSay PROMPT "Sconto" OF oDlg
@ 90, 020 SAY oSay PROMPT "Scontato" OF oDlg
@ 15, 060 GET oPre VAR nPre OF oDlg
oPre:setFixedSize(130,25)
oPre:setInputMask("0000")
oPre:setFocus()
@ 45, 060 GET oSco VAR nSco OF oDlg
oSco:setFixedSize(50,25)
oSco:setInputMask("00")
oSco:Connect( "textChanged(QString)",{|nSco|Calcolo(oDlg, oPre, nPre, nSco,1)})
ACTIVATE DIALOG oDlg CENTERED
RETURN
// ----------------------- CALCOLO
FUNCTION Calcolo( oDlg, oPre, nPre, nSco, nSw )
LOCAL nR := "0"
LOCAL oLab1 := QLabel( oDlg )
LOCAL oFont := QFont()
IF nSw == 0
MsgInfo(nPre)
MsgInfo(nSco)
ENDIF
nR := VAL( nPre) - (VAL(nPre)*(VAL(nSco)/100))
oLab1:setText(ALLTRIM(STR(nR)))
oLab1:move( 70, 87 )
* --- Metodo 1
*oLab1:setFont( QFont( "Courier New", 12) )
* --- Metodo 2
oFont:setPointSize(14)
oFont:setBold(.T.)
oFont:setUnderLine(.T.)
oLab1:setFont(oFont)
oLab1:setStyleSheet( "background-color : white; color : red;" )
oLab1:show()
**oPre:setFocus()
RETURN( NIL )
¡Gracias de antemano!
Saludos
Re: un poco de ayuda
Posted: Tue Jul 14, 2015 3:20 pm
by Antonio Linares
Giussepe,
Este bloque decódigo no recibo nSco como parámetro:
{|nSco|Calcolo(oDlg, oPre, nPre, nSco,1)}
luego debería ser:
{||Calcolo(oDlg, oPre, nPre, nSco,1)}
No se si eso lo soluciona. Puedes probarlo e intentarme explicar nuevamente lo que ocurre ? gracias
Re: un poco de ayuda
Posted: Wed Jul 15, 2015 2:50 pm
by solving
¡Buenos dias!
¿usted podrìa probar el código que he publicado ?
Si no utilizo la variable "nSco" no funciona {||Calcolo(oDlg, oPre, nPre, nSco,1)}
pero funciona asì {|nSco|Calcolo(oDlg, oPre, nPre, nSco,1)}.
Si yo digito primer campo(Prezzo) 100 segundo campo(Sconto) 20 obtengo automaticamente 80 (Scontato) sin pulsar el pulsador -> oBtnOk "Calcolo"
Si en cambio pulso el pulsador -> oBtnOk "Calcolo" que llama la funcion -> Calcolo( oDlg, oPre, nPre, nSco,0 )
tiene que considerar el quinto parámetro -> 0
aquí me consulto las variables
IF nSw == 0
MsgInfo(nPre) -> resultado = 100
MsgInfo(nSco) -> resultado = 0 ---> debe ser 20
ENDIF
En este punto yo podrìa no utilizar el pulsador -> oBtnOk "Calcolo".
Pero querrìa entender la razon del Resultado = 0 de la variable nSco si utilizo el pulsador -> oBtnOk "Calcolo".
Gracias de antemano.
Re: un poco de ayuda
Posted: Wed Jul 15, 2015 4:46 pm
by Antonio Linares
Giussepe,
Modifica tu código asi:
oSco:Connect( "textChanged(QString)",{| cValue | nSco := cValue, Calcolo(oDlg, oPre, nPre, nSco,1)})
Aqui funciona bien asi
Re: un poco de ayuda
Posted: Wed Jul 15, 2015 5:29 pm
by solving
Ahora funciona bien
aquí está el código completo
Code: Select all
#include "FiveTouch.ch"
function Main()
LOCAL oDlg
LOCAL oPre, nPre := "0"
LOCAL oSco, nSco := "0"
LOCAL oBtnEnd, oBtnNew
DEFINE DIALOG oDlg TITLE "Calcolo" ;
SIZE 300, 200
@ 160, 25 BUTTON oBtnEnd PROMPT "Abbandona" OF oDlg ;
ACTION oDlg:End()
@ 160, 120 BUTTON oBtnNew PROMPT "Nuovo" OF oDlg ;
ACTION Pulisci( oPre, oSco )
@ 20, 020 SAY oSay PROMPT "Prezzo" OF oDlg
@ 50, 020 SAY oSay PROMPT "Sconto" OF oDlg
@ 90, 020 SAY oSay PROMPT "Scontato" OF oDlg
@ 15, 060 GET oPre VAR nPre OF oDlg
oPre:setFixedSize(130,25)
oPre:setInputMask("0000")
oPre:setFocus()
@ 45, 060 GET oSco VAR nSco OF oDlg
oSco:setFixedSize(50,25)
oSco:setInputMask("00")
oSco:Connect( "textChanged(QString)",{| cValue | nSco := cValue, Calcolo(oDlg, nPre, nSco)})
ACTIVATE DIALOG oDlg CENTERED
RETURN
// ----------------------- CALCOLO
FUNCTION Calcolo( oDlg, nPre, nSco )
LOCAL nR := "0"
LOCAL oLab1 := QLabel( oDlg )
LOCAL oFont := QFont()
nR := VAL( nPre) - (VAL(nPre)*(VAL(nSco)/100))
oLab1:setText(ALLTRIM(STR(nR)))
oLab1:move( 70, 87 )
* --- Metodo 1
* 75 = Bold
oLab1:setFont( QFont( "Courier New", 14, 75) )
* --- Metodo 2
*oFont:setPointSize(14)
*oFont:setBold(.T.)
*oFont:setUnderLine(.T.)
*oLab1:setFont(oFont)
oLab1:setStyleSheet( "background-color : white; color : red;" )
oLab1:show()
RETURN( NIL )
// ----------------------- Pulisci
FUNCTION Pulisci( oPre, oSco )
oPre:clear()
oSco:clear()
oPre:setFocus()
RETURN( NIL )
gracias
Re: un poco de ayuda
Posted: Wed Jul 15, 2015 5:32 pm
by Antonio Linares
Muy bien!
Gracias por compartir tu ejemplo