Page 1 of 1

un poco de ayuda

PostPosted: 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  Expand view

#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

PostPosted: 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

PostPosted: 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  Expand view
#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

PostPosted: Tue Jul 14, 2015 8:41 am
by solving
funciona bien

Code: Select all  Expand view

@ 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

PostPosted: 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  Expand view

#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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: Wed Jul 15, 2015 5:29 pm
by solving
Ahora funciona bien
aquí está el código completo

Code: Select all  Expand view

#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

PostPosted: Wed Jul 15, 2015 5:32 pm
by Antonio Linares
Muy bien! :-)

Gracias por compartir tu ejemplo