Calculadora que devuelva resultado

Calculadora que devuelva resultado

Postby TOTOVIOTTI » Sat May 28, 2016 12:06 pm

Hola amigos,
existe la posibilidad, de hacer con FW una calculadora, o usar las existentes, pero que al
habilitarla, en cualquier lado que la necesite, con un SetKey, si hay un Get activo, me
devuelva el resultado en ese Get?
Quien pueda aportarme una ayuda se lo voy a agradecer!
Saludos
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 419
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Calculadora que devuelva resultado

Postby FranciscoA » Sat May 28, 2016 2:15 pm

Roberto
Lorenzo Gadaleta, codificó MsgCalc.prg que hace lo que tu quieres.
Voy a buscar en el baúl.

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Calculadora que devuelva resultado

Postby FranciscoA » Sat May 28, 2016 2:29 pm

Lo que encontre fue esto. Espero te sirva.

http://fivetechsupport.com/forums/viewt ... 94&start=0
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Calculadora que devuelva resultado

Postby TOTOVIOTTI » Sat May 28, 2016 4:39 pm

Si amigo, eso lo habìa visto... pero no es lo que estoy buscando...
No me devuelve el dato que me aparece en la calculadora....
Alguien que tenga esta inquietud resuelta... :oops:
Gracias.
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 419
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Calculadora que devuelva resultado

Postby FranciscoA » Sat May 28, 2016 6:15 pm

Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Calculadora que devuelva resultado

Postby nageswaragunupudi » Sun May 29, 2016 10:19 am

MsgCalc() function is already available in FWH.
This is a sample usage:
Code: Select all  Expand view

#include "fivewin.ch"

function Main()

   local oDlg, oFont
   local nVal  := 123.46

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
   DEFINE DIALOG oDlg

   @ 10,10 GET nVal PICTURE "999,999,999.99" SIZE 80,12 PIXEL OF oDlg ;
      RIGHT ACTION ( ::cText := MsgCalc( nVal ) ) ;
      BITMAP "c:\fwh\bitmaps\16x16\calc.bmp"

   @ 50,10 BUTTON "OK" SIZE 40,14 PIXEL OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

   ? nVal

return nil
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10620
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Calculadora que devuelva resultado

Postby fgondi » Sun May 29, 2016 11:43 am

Hola,

Yo uso esta calculadora, que encontré en el foro, modificada.

La activo al pulsar una tecla de función y lo primero que hace es buscar si el puntero estaba en un get activo.
Si es así, al terminar, me devuelve el resultado a ese get.

Code: Select all  Expand view
#Include "FiveWin.ch"

static nMemo, mCar, cLastKey, cLastOpe

Func Ghe_MsgCalc( nKey )
local lEscAnt, bSetKey, oCtrl, cPict, nResult := 0
local oDlg, oSay, cSay := '', oCar, lRet := .F.
local oMemo, cMemo := '', oOk, oOk2, oIgual, cAux, oBrowse
local nType, i, j, nDec, nDec2, cText, cRes

bSetKey := SetKey( nKey )
SetKey( nKey, NIL )
oCtrl    := oWndFromhWnd( GetFocus() )
cLastOpe := '='
cLastKey := ''
mCar     := if( mCar=NIL, '', mCar )
cPict    := '@KE 9,999,999,999.99'
nMemo    := if( nMemo=NIL, 0, nMemo )

if !Empty(mCar)
  i := AtNum( '=', mCar )
  if i<>0
    cAux := SubStr( mCar, i+1, len(mCar) )
    nResult := GetText( Alltrim(cAux) )
  endif
endif


cRes    := "GheCalc"
if Valtype(oCtrl)='O' .and. 'GET'$oCtrl:ClassName()
  nType := oCtrl:VarGet()
  if ('XBROWSE' in oCtrl:oWnd:ClassName())
    oBrowse := oCtrl:oWnd
  endif
endif

lEscAnt := SetDialogEsc()
SetDialogEsc( .T. )
Define Dialog oDlg Resource cRes
oDlg:bKeyDown := { | nKey | VerKey( nKey, oSay, oDlg ) }

Redefine get oCar Var mCar Id 102 Of oDlg Memo Color CLR_BLUE, CLR_WHITE
oCar:Disable()
Redefine ButtonBmp Bitmap IMG1_SEEK Id 309 Of oDlg Action ShowHist( oCar:GetText(), oDlg, oIgual)

Redefine gSay oSay Var cSay Id 103 Of oDlg
   
Redefine Button Id 122 Of oDlg Action ( nMemo := 0, oMemo:SetText(''), oIgual:SetFocus() )
Redefine Button Id 123 Of oDlg Action ( oSay:SetText(Transform(nMemo, cPict)), cLastKey := '=', oIgual:SetFocus() )
Redefine Button Id 125 Of oDlg Action ( nMemo := nMemo+GetText(oSay:cCaption), oMemo:SetText(if(nMemo=0, '', 'M')), cLastKey := '=', oIgual:SetFocus() )
Redefine Button Id 126 Of oDlg Action ( nMemo := nMemo-GetText(oSay:cCaption), oMemo:SetText(if(nMemo=0, '', 'M')), cLastKey := '=', oIgual:SetFocus() )
Redefine gSay oMemo Var cMemo Id 104 Of oDlg COLOR CLR_BLUE, CLR_WHITE

Redefine Button Id  80 Of oDlg Prompt '±' Action SayNum(oSay, oIgual, "±")
Redefine Button Id  84 Of oDlg Prompt '&,' Action SayNum(oSay, oIgual, ",")
Redefine Button Id  85 Of oDlg Prompt '&.' Action SayNum(oSay, oIgual, ",")
Redefine Button Id 131 Of oDlg Prompt '&1' Action SayNum(oSay, oIgual, "1")
Redefine Button Id 132 Of oDlg Prompt '&2' Action SayNum(oSay, oIgual, "2")
Redefine Button Id 133 Of oDlg Prompt '&3' Action SayNum(oSay, oIgual, "3")
Redefine Button Id 134 Of oDlg Prompt '&4' Action SayNum(oSay, oIgual, "4")
Redefine Button Id 135 Of oDlg Prompt '&5' Action SayNum(oSay, oIgual, "5")
Redefine Button Id 136 Of oDlg Prompt '&6' Action SayNum(oSay, oIgual, "6")
Redefine Button Id 137 Of oDlg Prompt '&7' Action SayNum(oSay, oIgual, "7")
Redefine Button Id 138 Of oDlg Prompt '&8' Action SayNum(oSay, oIgual, "8")
Redefine Button Id 139 Of oDlg Prompt '&9' Action SayNum(oSay, oIgual, "9")
Redefine Button Id 130 Of oDlg Prompt '&0' Action SayNum(oSay, oIgual, "0")
Redefine Button Id  83 Of oDlg Prompt '&'+Chr(8)+'<--' Action SayNum(oSay, oIgual, "<-")

Redefine Button oIgual Id 121 Of oDlg Prompt '=' Action CalcRes( '=', @nResult, @cPict, oSay, oCar, oOk, oIgual, oCtrl )
Redefine Button Id  91 Of oDlg Prompt '&/' Action CalcRes( '/', @nResult, @cPict, oSay, oCar, oOk, oIgual, oCtrl )
Redefine Button Id  92 Of oDlg Prompt '&*' Action CalcRes( '*', @nResult, @cPict, oSay, oCar, oOk, oIgual, oCtrl )
Redefine Button Id  93 Of oDlg Prompt '&+' Action CalcRes( '+', @nResult, @cPict, oSay, oCar, oOk, oIgual, oCtrl )
Redefine Button Id  94 Of oDlg Prompt '&-' Action CalcRes( '-', @nResult, @cPict, oSay, oCar, oOk, oIgual, oCtrl )
Redefine Button Id 118 Of oDlg Prompt '&%' Action CalcRes( '%', @nResult, @cPict, oSay, oCar, oOk, oIgual, oCtrl )

Redefine Button Id  81 Of oDlg Prompt 'C' Action ( cLastOpe := '+', cLastKey := "", nResult := 0, cPict := PcTotal(), oCar:cText( "" ), oSay:SetText( '' ) )

Redefine ButtonBmp oOk Bitmap IMG1_OK TextRight Id 5 Of oDlg Action ( lRet:=.T., oDlg:End() )
Redefine ButtonBmp Bitmap IMG1_CANCEL TextRight Id 2 Of oDlg Action ( lRet:=.F., oDlg:End() )

oDlg:bStart := {|| oMemo:SetText(if(nMemo=0, '', 'M')), oCar:GoBottom() }
Activate Dialog oDlg Center

if lRet .and. nResult=0
  nResult := GetText( oSay:cCaption )
endif

if lRet .and. nResult<>0 .and. Valtype(oCtrl)='O' .and. 'GET'$oCtrl:ClassName()
  if oBrowse<>NIL .and. oBrowse:SelectedCol():Edit()
    oCtrl := oBrowse:SelectedCol():oEditGet
  endif
  nType := oCtrl:VarGet()
  if valtype(nType)="N"
    i     := at( '.', oCtrl:cPicture )
    nDec  := if( i<>0, len( SubStr(oCtrl:cPicture, i+1) ), 0 )
    j     := at( '.', cPict )
    nDec2 := if( j<>0, len( SubStr(cPict, j+1) ), 0 )
    /*
    if nDec2<=nDec
      nResult := fxRound( nResult, nDec )
    else
      for i := nDec2-1 to nDec step -1
        nResult := fxRound(nResult, i )
      next
    endif
    */

    oCtrl:VarPut( nResult )
  elseif ValType(nType)="C" .and. 'MGET'$oCtrl:ClassName()
    cText := Alltrim(oCtrl:cText())
    cText += if( !Empty(cText), " ", "")
    oCtrl:VarPut( cText+Alltrim(str(nResult, 10, 2)) )
  elseif ValType(nType)="C"
    i     := len( oCtrl:cText() )
    cText := Alltrim(oCtrl:cText())
    cText += if( !Empty(cText), " ", "")
    j     := len( cText )
    oCtrl:VarPut( cText+left(Alltrim(str(nResult, 10, 2)), i-j) )
  endif
  oCtrl:Refresh()
endif
if Valtype(oCtrl)='O'
  oCtrl:SetFocus()
endif
SetKey( nKey, bSetKey )
SetDialogEsc( lEscAnt )
Return .T.



*-------------------------------*
FUNCTION SayNum( oSay, oIgual, cNum )
  local cGet := Alltrim(oSay:cCaption)
  if cNum==','
    if ',' $ cGet
      return NIL
    elseif Empty(cGet)
      cNum := '0,'    
    endif
  endif
  do case
  case cNum=='±'
    if left(cGet, 1)='-'
      cGet := SubStr(cGet, 2)
    else
      cGet := '-'+cGet
    endif
   
  case cNum=='<-'
    cGet := left( cGet, len(cGet)-1 )
   
  othe
    if cLastKey $ '+-*/%='
      cGet := cNum
    else
      cGet := cGet + cNum
    endif
  endcase
  oSay:SetText( cGet )
  cLastKey := cNum
  oIgual:SetFocus()
RETURN NIL

*-------------------------------------------------------*
         
Static Function CalcRes( cnOpe, nResult, cPict, oSay, oCar, oOk, oIgual, oCtrl )
local nVal, nVal2, nLine:= 0, mVal1:="", X
local i, j, nDec, nDecPic, cMemo, cSalto, nChange, cAux

if cLastOpe='=' .and. cnOpe='='
  oOk:Click()
  return nil
endif
nVal := GetText( oSay:cCaption )
if nVal <> 0 .or. cLastOpe $ '+-*/'
  if cnOpe == '%'
    nVal2 := nVal / 100
    if cLastOpe $ "+-"
      nVal2 := nResult * nVal2
    endif
  else
    nVal2 := nVal
  endif
  do case
  case cLastOpe == "="
    nResult := nVal2
  case cLastOpe == "+"
    nResult += nVal2
  case cLastOpe == "-"
    nResult -= nVal2
  case cLastOpe == "*"
    nResult *= nVal2
  case cLastOpe == "/"
    nResult /= nVal2
  endcase
else
  nResult := nVal2 := 0
endif
if ('CHANGE' in cnOpe)
  if cnOpe=='CHANGEEUR'
    nVal2 := nResult := Eval( oCtrl:bChangeMnd, nResult,, .F. )
  else
    nVal2 := nResult := Eval( oCtrl:bChangeMnd, nResult )
  endif
  nChange := Eval( oCtrl:bChangeMnd, 1 )
endif

cMemo   := nTrim2( nVal2, .T. )
i       := at( '.', cMemo )
nDec    := if( i<>0, len( SubStr(cMemo, i+1) ), 0 )
j       := at( '.', cPict )
nDecPic := if( j<>0, len( SubStr(cPict, j+1) ), 0 )
if nDec<>nDecPic
  cPict := if( j=0, cPict, left(cPict, j-1) ) + if( nDec>0, '.' + Replicate('9', nDec), '' )
endif

do case
case  Empty(oCar:cText)
  cSalto := ''
case cLastOpe='='
  cSalto := CRLF
othe
  cSalto  := ' '
endcase
if cnOpe $ '=%' .or. ('CHANGE' in cnOpe)
  if nVal<>0
    cAux := Alltrim(oCar:cText()) + cSalto + Alltrim(Transform( nVal , cPict ))
    if cnOpe=='%'
      cAux += "% ="
    elseif cnOpe=='CHANGEEUR'
      cAux += ' * '+Alltrim(Transform( nChange, PcPrecio() ))
    elseif cnOpe=='CHANGEMND'
      cAux += ' / '+Alltrim(Transform( nChange, PcPrecio() ))
    endif
    cAux += " ="
    oCar:cText( cAux )
    cSalto := ' '
  endif
  cMemo   := nTrim2( nResult, .T. )
  i       := at( '.', cMemo )
  nDec    := if( i<>0, len( SubStr(cMemo, i+1) ), 0 )
  j       := at( '.', cPict )
  nDecPic := if( j<>0, len( SubStr(cPict, j+1) ), 0 )
  if nDec<>nDecPic
    cPict := if( j=0, cPict, left(cPict, j-1) ) + if( nDec>0, '.' + Replicate('9', nDec), '' )
  endif
  oCar:cText( Alltrim(oCar:cText()) + cSalto + Alltrim(Transform( nResult, cPict )) )
else
  if nVal<>0
    oCar:cText( Alltrim(oCar:cText()) + cSalto + Alltrim(Transform( nVal , cPict )) + ' ' + iif(!empty(cnOpe), cnOpe, cLastOpe))
  endif
endif
oSay:SetText( Transform(nResult, cPict) )
oCar:GoBottom()

cLastOpe := if( cnOpe $ '=%' .or. ('CHANGE' in cnOpe), '=', cnOpe )
cLastKey := if( cnOpe $ '=%' .or. ('CHANGE' in cnOpe), '=', cnOpe )
oIgual:SetFocus()
Return Nil



//-----------------------------------------------------------------------------------//
Static Func GetText( cVal )
local nVal
cVal := IfNil(cVal, '0', '')
cVal := StrTran( cVal, '.', '' )
cVal := StrTran( cVal, ',', '.' )
nVal := Val( cVal )
return nVal



*--------------------------------------------------------------------------------------*
Static Func VerKey( nKey, oSay, oDlg )
local nVal, cKey, oCtrl
   
if nKey=27
  return nil
endif
   
cKey := Chr( nKey )

if GetKeyState( VK_SHIFT )
  do case
  case nKey=187                                                                            
    cKey := '*'
  case nKey == 55
    cKey := '/'
  case nKey == 53
    cKey := '%'
  case nKey=67
    cKey := 'C'
  case nKey == 48
    cKey := '='
  Endcase
else
  do case
  case nKey == 107 .or. nKey=187
    cKey := '+'
  case  nKey == 109 .or. nKey=189
    if Empty(GetText(oSay:cCaption))
      cKey := '±'
    else
      cKey := '-'
    endif
  case nKey == 106
    cKey := '*'
  case nKey == 111
    cKey := '/'
  case nKey=67 .or. nKey=46
    cKey := 'C'
  case nKey=8
    cKey := '<--'
  case nKey=188 .or. nKey=190 .or. nKey=110
    cKey := ','
  case nKey == 13
    cKey := '='
  case nKey>=96 .and. nKey<=105    //Bloque númerico
    cKey := Chr( nKey-48 )
  endcase
endif

for each oCtrl in oDlg:aControls
  if 'BUTTON' $ oCtrl:ClassName() .and. oCtrl:cCaption==cKey
    oCtrl:Click()
    exit
  endif
next
Return 0



Proc ShowHist( cCar, oWnd, oIgual )
local oDlg

DEFINE DIALOG oDlg RESOURCE "GheCalcHist" Of oWnd
REDEFINE gGet cCar ID 102 MEMO OF oDlg Color CLR_BLUE, CLR_WHITE
Redefine ButtonBmp Bitmap IMG1_OK TextRight Id 1 Of oDlg Action oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
oIgual:SetFocus()
return


Rc:
Code: Select all  Expand view
GHECALC DIALOGEX FIXED IMPURE 0, 0, 123, 192
STYLE DS_SHELLFONT|WS_POPUP|DS_MODALFRAME|DS_CENTER|WS_CAPTION|WS_SYSMENU
CAPTION "Calculadora"
FONT 9, "MS Shell Dlg", 400, 0, 0
{
  CONTROL "", 103, "Static", SS_RIGHT|SS_SUNKEN|WS_BORDER|WS_DISABLED|WS_GROUP, 1, 20, 121, 14
  CONTROL "MC", 122, "Button", BS_CENTER|BS_VCENTER, 5, 35, 20, 20
  CONTROL "<--", 83, "Button", BS_CENTER|BS_VCENTER, 5, 57, 20, 20
  CONTROL "7", 137, "Button", BS_CENTER|BS_VCENTER, 5, 79, 20, 20
  CONTROL "4", 134, "Button", BS_CENTER|BS_VCENTER, 5, 101, 20, 20
  CONTROL "1", 131, "Button", BS_CENTER|BS_VCENTER, 5, 123, 20, 20
  CONTROL "0", 130, "Button", 0x00000000, 5, 145, 43, 20
  CONTROL "MR", 123, "Button", BS_CENTER|BS_VCENTER, 28, 35, 20, 20
  CONTROL "8", 138, "Button", BS_CENTER|BS_VCENTER, 28, 79, 20, 20
  CONTROL "5", 135, "Button", BS_CENTER|BS_VCENTER, 28, 101, 20, 20
  CONTROL "2", 132, "Button", BS_CENTER|BS_VCENTER, 28, 123, 20, 20
  CONTROL "C", 81, "Button", BS_CENTER|BS_VCENTER, 28, 57, 20, 20
  CONTROL "9", 139, "Button", BS_CENTER|BS_VCENTER, 51, 79, 20, 20
  CONTROL "6", 136, "Button", BS_CENTER|BS_VCENTER, 51, 101, 20, 20
  CONTROL "3", 133, "Button", BS_CENTER|BS_VCENTER, 51, 123, 20, 20
  CONTROL ",", 84, "Button", BS_CENTER|BS_VCENTER, 51, 145, 20, 20
  CONTROL "M+", 125, "Button", BS_CENTER|BS_VCENTER, 51, 35, 20, 20
  CONTROL "±", 80, "Button", BS_CENTER|BS_VCENTER, 51, 57, 20, 20
  CONTROL "/", 91, "Button", BS_CENTER|BS_VCENTER, 74, 57, 20, 20
  CONTROL "*", 92, "Button", BS_CENTER|BS_VCENTER, 74, 79, 20, 20
  CONTROL "-", 94, "Button", BS_CENTER|BS_VCENTER, 74, 101, 20, 20
  CONTROL "+", 93, "Button", BS_CENTER|BS_VCENTER, 74, 123, 20, 20
  CONTROL "M-", 126, "Button", BS_CENTER|BS_VCENTER, 74, 35, 20, 20
  CONTROL "%", 118, "Button", BS_CENTER|BS_VCENTER, 74, 145, 20, 20
  CONTROL "=", 121, "Button", BS_DEFPUSHBUTTON|WS_TABSTOP, 97, 57, 21, 107
  CONTROL "Aceptar ", 5, "Button", BS_RIGHT|BS_VCENTER, 3, 167, 55, 24
  CONTROL "Cancelar ", IDCANCEL, "Button", BS_RIGHT|BS_VCENTER, 63, 167, 57, 24
  CONTROL "M", 104, "Static", SS_CENTER|SS_CENTERIMAGE|SS_SUNKEN|WS_BORDER|WS_GROUP, 97, 35, 20, 20
  CONTROL "", 102, "Edit", ES_RIGHT|ES_MULTILINE|ES_AUTOVSCROLL|ES_READONLY|WS_VSCROLL|WS_BORDER, 1, 2, 109, 17, WS_EX_LEFTSCROLLBAR
  CONTROL "", 309, "Button", BS_CENTER|BS_VCENTER, 110, 5, 12, 12
  CONTROL ".", 85, "Button", BS_CENTER|BS_VCENTER, 51, 145, 20, 20
}

GHECALCHIST DIALOGEX PRELOAD DISCARDABLE 6, 18, 123, 173
STYLE WS_POPUP|DS_MODALFRAME|DS_CONTEXTHELP|DS_CENTER|WS_CAPTION|WS_SYSMENU
CAPTION "Histórico"
FONT 8, "MS Sans Serif", 0, 0, 1
{
  CONTROL "", 102, "Edit", ES_RIGHT|ES_MULTILINE|ES_AUTOVSCROLL|ES_WANTRETURN|ES_READONLY|WS_VSCROLL|WS_BORDER, 0, 1, 123, 145
  CONTROL "Aceptar ", IDOK, "Button", BS_DEFPUSHBUTTON|BS_RIGHT|BS_VCENTER|WS_TABSTOP, 33, 148, 56, 24
}
 
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: Calculadora que devuelva resultado

Postby TOTOVIOTTI » Mon May 30, 2016 1:10 pm

Thanks Mr.Nages!
Ya había visto que existía este MsgCalc...

Para ambos, como hago para determinar el GET que tengo activo? Que función
debo utilizar?

Muchas gracias!!!!

Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 419
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Calculadora que devuelva resultado

Postby karinha » Mon May 30, 2016 1:36 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7800
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Calculadora que devuelva resultado

Postby karinha » Mon May 30, 2016 1:40 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7800
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Calculadora que devuelva resultado

Postby TOTOVIOTTI » Mon May 30, 2016 1:47 pm

Si Joao, esto ya lo había visto y me gustó como funciona.
Como estoy convirtiendo un sistema de clipper a fw sin sacarlo de línea, tengo que
hacer funcionar los gets de clipper. Yo tengo una calculadora de clipper que
funciona, pero no me devuelve los valores del cálculo cuando se trata
de variables definidas como locales. He probado con macros y nada.
Cabe acotar, que con el viejo clipper si funcionaban, pero esta mezcla que
estoy haciendo para no sacar al sistema de línea me está complicando en algunas
cosas.
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 419
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Calculadora que devuelva resultado

Postby karinha » Mon May 30, 2016 1:55 pm

Cambie las variables a PUBLIC ó GLOBAL. Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7800
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Calculadora que devuelva resultado

Postby fgondi » Mon May 30, 2016 4:07 pm

la calculadora que te pasado, localiza el get activo y si hay resultado lo devuelve a ese get.


Code: Select all  Expand view
oCtrl    := oWndFromhWnd( GetFocus() )
if Valtype(oCtrl)='O' .and. 'GET'$oCtrl:ClassName()
  nType := oCtrl:VarGet()
  if ('XBROWSE' in oCtrl:oWnd:ClassName())
    oBrowse := oCtrl:oWnd
  endif
endif

.....

if lRet .and. nResult<>0 .and. Valtype(oCtrl)='O' .and. 'GET'$oCtrl:ClassName()
  if oBrowse<>NIL .and. oBrowse:SelectedCol():Edit()
    oCtrl := oBrowse:SelectedCol():oEditGet
  endif
  nType := oCtrl:VarGet()
  if valtype(nType)="N"
    i     := at( '.', oCtrl:cPicture )
    nDec  := if( i<>0, len( SubStr(oCtrl:cPicture, i+1) ), 0 )
    j     := at( '.', cPict )
    nDec2 := if( j<>0, len( SubStr(cPict, j+1) ), 0 )
    oCtrl:VarPut( nResult )
  elseif ValType(nType)="C" .and. 'MGET'$oCtrl:ClassName()
    cText := Alltrim(oCtrl:cText())
    cText += if( !Empty(cText), " ", "")
    oCtrl:VarPut( cText+Alltrim(str(nResult, 10, 2)) )
  elseif ValType(nType)="C"
    i     := len( oCtrl:cText() )
    cText := Alltrim(oCtrl:cText())
    cText += if( !Empty(cText), " ", "")
    j     := len( cText )
    oCtrl:VarPut( cText+left(Alltrim(str(nResult, 10, 2)), i-j) )
  endif
  oCtrl:Refresh()
endif
if Valtype(oCtrl)='O'
  oCtrl:SetFocus()
endif
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: Calculadora que devuelva resultado (READVAR)

Postby TOTOVIOTTI » Mon May 30, 2016 7:25 pm

Sigo probando... todavía nada...
Igual agradezco a todos!
Roberto

pd: Por las dudas, alguien no tendrá el fuente de la función READVAR() de Clipper?
Creo que ahí puedo sacar algo de información, pero no la encuentro. Gracias!
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 419
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: ertan and 50 guests