un poco de ayuda

un poco de ayuda

Postby solving » Mon Jul 13, 2015 6:22 pm

¡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
 
solving
 
Posts: 38
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: un poco de ayuda

Postby solving » Mon Jul 13, 2015 6:33 pm

resuelto cómo configurar el color

oLab1:setStyleSheet( "background-color : white; color : red;" )
solving
 
Posts: 38
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: un poco de ayuda

Postby Antonio Linares » Mon Jul 13, 2015 8:54 pm

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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 35348
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: un poco de ayuda

Postby solving » Tue Jul 14, 2015 8:41 am

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
solving
 
Posts: 38
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: un poco de ayuda

Postby solving » Tue Jul 14, 2015 9:02 am

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
solving
 
Posts: 38
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: un poco de ayuda

Postby Antonio Linares » Tue Jul 14, 2015 3:20 pm

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 35348
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: un poco de ayuda

Postby solving » Wed Jul 15, 2015 2:50 pm

¡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.
solving
 
Posts: 38
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: un poco de ayuda

Postby Antonio Linares » Wed Jul 15, 2015 4:46 pm

Giussepe,

Modifica tu código asi:

oSco:Connect( "textChanged(QString)",{| cValue | nSco := cValue, Calcolo(oDlg, oPre, nPre, nSco,1)})

Aqui funciona bien asi
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 35348
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: un poco de ayuda

Postby solving » Wed Jul 15, 2015 5:29 pm

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
solving
 
Posts: 38
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: un poco de ayuda

Postby Antonio Linares » Wed Jul 15, 2015 5:32 pm

Muy bien! :-)

Gracias por compartir tu ejemplo
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 35348
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveTouch

Who is online

Users browsing this forum: No registered users and 1 guest