Ayuda con CLIPBOAR

Ayuda con CLIPBOAR

Postby JoseGS » Sun Sep 27, 2009 5:59 am

Hola amigos:

Desearia saber como se puede hacer esto:

Tengo varios GET donde el usuario ingresa valores de monedas
Hice una calculadora de dinero (al ir ingresando la cantidad de monedas y billetes de cada denominacion, se va presentando el valor total de la suma). Esta calculadora la llamo mediante un boton colocado en el dialogo

La pregunta es:

Como puedo devolver el valor total de la suma de dinero al GET que tenia el ultimo foco.
Creo que podria hacer un copia al CLIPBOARD y luego PASTE en el campo pero no se hacer lo primero y lo segundo lo tendria que hacer el usuario, cosa que me gustaria que fuera automatica.

Gracias
JoseGS
 
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Ayuda con CLIPBOAR

Postby Armando » Sun Sep 27, 2009 2:33 pm

Guillermo:

Se me ocurre, a menos que haya algo más directo, que en el botón donde llamas a la calculadora lo pongas así:

ACTION nVariable := CALCULADORA()

Y en la función calculadora regreses el valor + - así

STATIC FUNCTION Calculadora()
LOCAL nTotal := 0.00
.....
.....
tu código donde recibes los valores
y lo sumas a la variable nTotal
.....
....
RETURN(nTotal)

Espero te funcione la idea.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Ayuda con CLIPBOAR

Postby JoseGS » Sun Sep 27, 2009 6:06 pm

Hola Armando:

Gracias por contestar, en efecto, lo que propones me devolveria el valor calculado pero como puedo saber cual era el ultimo GET con foco para ponerle el valor calculado en forma automatica...

Gracias

Saludos hasta Toluca desde Panama
JoseGS
 
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Ayuda con CLIPBOAR

Postby Armando » Sun Sep 27, 2009 6:38 pm

Guillermo:

Mucho ayudaría si muestras parte del código donde tienes el problema pues,
al menos a mi, no me queda muy claro, pero tratando de adivinar un poco.

Mandale el get a la función Calculadora()

ACTION nVariable := CALCULADORA(UltimoGet)

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Ayuda con CLIPBOAR

Postby JoseGS » Sun Sep 27, 2009 10:39 pm

En realidad no se trata de un problema. Estoy tratando de hacer una mejora al programa tal como sigue:


Tengo la siguiente funcion que presenta un dialogo en pantalla en donde el usuario puede ingresar la cantidad de monedas y billetes que tiene a la mano para que la funcion SUMAPLATA le valla mostrando la suma total de dinero que tiene. Esta funcion MONEYCALC() la llamo desde un boton que se encuentra en el dialogo. En dicho dialogo existen varios GETs en donde el usuario puede ingresar valores de dinero, pero, actualmente el usuario tiene que copiar el valor mostrado por MONEYCALC() en una hoja de papel y luego al cerrar la ventana de MONEYCALC() escribir la cantidad de dinero en la celda que el desee.

Lo que quiero saber es si existe la posibilidad que al momento de llamar a la funcion MONEYCALC(), la misma pueda saber cual GET tenia foco en ese momento para que al finalizar, copie el valor de la suma en dicho GET sin que el usuario tenga que recordar el valor e ingresarlo por si mismo.


Gracias amigo


//-------------------------------
FUNC MONEYCALC()
LOCAL oDlg,X,oSAY,oBtn,nSAY:=0,oFOTO
LOCAL oGET:=ARRAY(14)
LOCAL aGET:={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
DEFINE DIALOG oDlg RESOURCE "MONEYCALC"
//REDEFINE IMAGE oFOTO ID 165 OF oDlg FILE '\MEDICKEY\IMG\CUENTA.JPG' //ADJUST
REDEFINE SAY oSAY VAR nSAY ID 1000 OF oDlg PICTURE "99,999.99" COLOR CLR_BLUE FONT oFontMAGOO
REDEFINE GET oGET[ 1] VAR aGET[ 1] ID 131 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[ 2] VAR aGET[ 2] ID 132 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[ 3] VAR aGET[ 3] ID 133 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[ 4] VAR aGET[ 4] ID 134 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[ 5] VAR aGET[ 5] ID 135 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[ 6] VAR aGET[ 6] ID 136 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[ 7] VAR aGET[ 7] ID 137 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[ 8] VAR aGET[ 8] ID 138 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[ 9] VAR aGET[ 9] ID 139 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[10] VAR aGET[10] ID 140 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[11] VAR aGET[11] ID 141 OF oDlg PICTURE "9999" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[12] VAR aGET[12] ID 142 OF oDlg PICTURE "99,999.99" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[13] VAR aGET[13] ID 143 OF oDlg PICTURE "99,999.99" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE GET oGET[14] VAR aGET[14] ID 144 OF oDlg PICTURE "99,999.99" VALID (nSAY:=SUMAPLATA(aGET),oSAY:REFRESH(),.T.)
REDEFINE BUTTON oBtn ID 100 OF oDlg ACTION oDlg:END()
ACTIVATE DIALOG oDlg CENTER
RETU[]
//-------------------------------
FUNC SUMAPLATA(aM)
LOCAL M:=(aM[1]*.01)+(aM[2]*.05)+(aM[3]*.1)+(aM[4]*.25)+(aM[5]*.5)
LOCAL B:=aM[6]+(aM[7]*5)+(aM[8]*10)+(aM[9]*20)+(aM[10]*50)+(aM[11]*100)
RETU M+B+aM[12]+aM[13]+aM[14]
JoseGS
 
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Ayuda con CLIPBOAR

Postby Armando » Mon Sep 28, 2009 1:50 am

Guillermo:

Y cual es el código de la parte del diálogo donde mandas ejecutar la función MoneyCalc() y
a la que quieres retornar la suma de dinero ?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Ayuda con CLIPBOAR

Postby JoseGS » Mon Sep 28, 2009 3:45 am

Hola

Desde aqui llamo a la funcion MoneyCalc()

REDEFINE SBUTTON oBtn ID 801 OF oFld3:aDialogs[1] RESOURCE "B_CALC" ACTION MONEYCALC() XP PROMPT "Calculadora de dinero" TEXT 4
JoseGS
 
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Ayuda con CLIPBOAR

Postby JavierVital » Mon Sep 28, 2009 6:10 am

En el Get que estas leyendo ahi mandas a trae a la funcion de la calculadora

oGet[1,2] := 0
REDEFINE GET oGet[1,1] VAR oGet[1,2] ID 101 OF oDlg BITMAP "Calc" ACTION MoneyCalc(oGet[1,1])

En la funcion de la la Calculadora
FUNCTION MoneyCalc(oObj1)
LOCAL nTotal
..........
..........
..........
oObj1:cText(nTotal)
RETURN

Ami me funciona bien
Saludos.
User avatar
JavierVital
 
Posts: 105
Joined: Thu Feb 26, 2009 4:08 pm

Re: Ayuda con CLIPBOAR

Postby JoseGS » Mon Sep 28, 2009 12:47 pm

Hola Javier

Que version de FWH utilizas ?.
La sintaxis de la instruccion que me indicas no corre en la mia...
En efecto, asi funcionaria, pero tendria que poner un boton de llamada a la calculadora en cada uno de los GETs de dinero que tiene el dialogo (son mas de 50)... Me gustaria que la propia funcion MONEYCALC() sepa cual era el ultimo GET con foco para no tener que programar tanto...


Gracias
JoseGS
 
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Ayuda con CLIPBOAR

Postby Armando » Mon Sep 28, 2009 2:00 pm

Guillermo:

Creo que tu solución sería que usaras la clase BTNGET, mira un ejemplo de su uso

Code: Select all  Expand view

#Include "BtnGet.ch"

REDEFINE BTNGET aGets[02] VAR nImporte ID 102 OF oDlg;
     RESOURCE "Buscar" UPDATE;
     PICTURE "@999,999.99";
     ACTION nImporte := MoneyCalc();
     MESSAGE "Código del cliente"
 


Observa el uso del método ACTION

La clase BtnGet es de terceros y si no mal recuerdo FW en sus versiones recientes ya viene con la clase GET con su propio ACTION.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Ayuda con CLIPBOAR

Postby JoseGS » Mon Sep 28, 2009 4:22 pm

Gracias Armando.

He tratado de usar la clase BTNGET incluyendo BTNGET.CH y BTNGET.LIB pero al compilar me sale el error
Error: Unresolved external '_HB_FUN_TBTNGET'

Alguna idea

uso FWH 8.05

Gracias
JoseGS
 
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am

Re: Ayuda con CLIPBOAR

Postby Armando » Mon Sep 28, 2009 5:08 pm

Guillermo:

Todo hace suponer que no estas ligando la LIB BTNGET, asegurate que la tienes incluida. Admas debe ser creada con la misma versión de [x]Harbour que estas usando para compilar tu aplicación.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Ayuda con CLIPBOAR

Postby JavierVital » Mon Sep 28, 2009 9:49 pm

Guillermo
Como dice Armando tu solucion es BTNGET

Funciona muy bien a mi tambien me a funcionado muy bien.

Saludos.
User avatar
JavierVital
 
Posts: 105
Joined: Thu Feb 26, 2009 4:08 pm

Re: Ayuda con CLIPBOAR

Postby JoseGS » Mon Sep 28, 2009 10:43 pm

Hola amigos.

He verificado y si se encuenta en la lista de las lib. El que este compilada con la version FWH 8.05 no lo se, solo utilizo la que ya estaba en \FWH\LIB

Gracias
JoseGS
 
Posts: 205
Joined: Wed Sep 02, 2009 3:11 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 92 guests