FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Como Ejecutar con funcion pasada por codeBlock? (SOLUCIONAD)
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM

Como Ejecutar con funcion pasada por codeBlock? (SOLUCIONAD)

Posted: Thu Apr 02, 2009 05:01 AM
Como hago para que se ejecute esto:
Code (fw): Select all Collapse
class tPrincipal
    data fntEjecutar

    method comenzar(nValor)
endclass

//--------------
method comenzar(nValor) class tPrincipal
   // Lo que necesito saber, para despues aplicarlo, como le digo 
   // que ejecute la funcion que te paso en la variable ::fntEjecutar 

   if (nValor == 1)
     // aca quiero que se ejecute la funcion que viene en ::fntEjecutar
   endif 

   return (nil)


---------------------------

Mi main seria este:
Code (fw): Select all Collapse
function main()
   local oPrueba:= tPrincipal():new()
   
   oPrueba:fntEjecutar:= { || estafuncion() }

   oPrueba:end()
   return (nil)

//------------------

function estafunction()
   msgstop("ejecutada la funcion")
   return (nil)

Gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM

Re: Como Ejecutar con funcion pasada por codeBlock?

Posted: Thu Apr 02, 2009 07:22 AM
Code (fw): Select all Collapse
if (nValor == 1)
     // aca quiero que se ejecute la funcion que viene en ::fntEjecutar
   IF !Empty(::fntEjecutar())
      Eval(::fntEjecutar())
   ENDIF
endif

Para seguir un poco la normativa de nombres de datas, yo cambiaria el data fntEjecutar por bEjecutar.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM

Re: Como Ejecutar con funcion pasada por codeBlock?

Posted: Thu Apr 02, 2009 11:47 AM
Biel EA6DD wrote:
Code (fw): Select all Collapse
if (nValor == 1)
     // aca quiero que se ejecute la funcion que viene en ::fntEjecutar
   IF !Empty(::fntEjecutar())
      Eval(::fntEjecutar())
   ENDIF
endif

Para seguir un poco la normativa de nombres de datas, yo cambiaria el data fntEjecutar por bEjecutar.


Gracias y acepto el cambio.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM

Re: Como Ejecutar con funcion pasada por codeBlock?

Posted: Thu Apr 02, 2009 02:36 PM
En mi codigo quiero hacer esto: pasar a la funcion que declaro la misma tecla que presione para poder evaluar si fue un VK_RETURN o un VK_INSERT, con esto lograría
luego saber que hacer si "dar de alta un registro nuevo " o "modificar" dependiendo de lo que se presione...

He intentado hacer esto por por el lado del browse:

Code (fw): Select all Collapse
         :bKeyDown:= { |nKey| IF (nKey==VK_RETURN, IF(!Empty(::bAbm(nKey)),Eval(::bABM(nKey)),),) }


Y esto desde donde lo llamo:
Code (fw): Select all Collapse
   oPadron:bABM:= {|nkey| estafuncion(nkey) }


Y la definicion de esa funcion que es la que va a ejecutarse:

Code (fw): Select all Collapse
  FUNCTION estafuncion(nkey)

     IF nKey == VK_RETURN
        ? "MODIFICACION"
     ELSE
        ? "ALTA"
     ENDIF

     RETURN (NIL)


PEROOOOOO error: me dice esto:
Code (fw): Select all Collapse
   Error description: Error BASE/1004  Class: 'NUMERIC' has no exported method: EVAL
   Args:
     [   1] = N   13


Que hago mal?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM

Re: Como Ejecutar con funcion pasada por codeBlock?

Posted: Thu Apr 02, 2009 02:56 PM
Si te he enntendio bien sería así
Code (fw): Select all Collapse
Eval( oPadron:bABM, nKey)
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM

Re: Como Ejecutar con funcion pasada por codeBlock?

Posted: Thu Apr 02, 2009 03:13 PM
Biel EA6DD wrote:Si te he enntendio bien sería así
Code (fw): Select all Collapse
Eval( oPadron:bABM, nKey)


DE 10! FUNCIONO.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/

Continue the discussion