Page 1 of 1

Como se hace

Posted: Mon Oct 09, 2017 5:10 pm
by miarcod
Esto debe ser una tonteria, pero no acabo de encontrar la forma de hacerlo

Si creo una clase y uno de los metodos crea un dialogo, como hago para definir la acción de un boton, ahora lo estoy haciendo con codeblocks pero eso me obliga a definir variables

Code: Select all

CLASS XXX
   METHOD VerDialogo()
ENDCLASS

METHOD VerDialogo
   DEFINE DIALOGO ::oDialogo
   REDEFINE BTNBMP .... ACTION ::oDialgo:End()
...
 
Si lo hago así se ejecuta el metodo End() de una data del BTNBMP que no existe y rompe, para que se ejecute lo defino

Code: Select all

   bAction := {|| ::oDialogo:End()}
  REDEFINE BTNBMP .... ACTION Eval(bAction)
 
Lo que pretendo es definir la accion sin tener que definir el codeblock

gracias.

Re: Como se hace

Posted: Mon Oct 09, 2017 5:32 pm
by Antonio Mart.
Si no me equivoco el problema lo tienes en la declaracion implicita de Self como parametro del codeblock adjunto a la clausula ACTION.

Para que te funcione bien hazlo asi:

Code: Select all

METHOD VerDialogo
   Local oSelf:= Self
   DEFINE DIALOGO ::oDialogo
   REDEFINE BTNBMP .... ACTION oSelf:oDialgo:End()

Re: Como se hace

Posted: Tue Oct 10, 2017 3:31 pm
by miarcod
gracias