Como se hace

Como se hace

Postby miarcod » Mon Oct 09, 2017 5:10 pm

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  Expand view
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  Expand view
  bAction := {|| ::oDialogo:End()}
  REDEFINE BTNBMP .... ACTION Eval(bAction)
 

Lo que pretendo es definir la accion sin tener que definir el codeblock

gracias.
miarcod
 
Posts: 197
Joined: Tue Oct 11, 2005 2:17 pm

Re: Como se hace

Postby Antonio Mart. » Mon Oct 09, 2017 5:32 pm

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  Expand view

METHOD VerDialogo
   Local oSelf:= Self
   DEFINE DIALOGO ::oDialogo
   REDEFINE BTNBMP .... ACTION oSelf:oDialgo:End()
Antonio Mart.
 
Posts: 174
Joined: Sat Feb 23, 2013 10:04 am

Re: Como se hace

Postby miarcod » Tue Oct 10, 2017 3:31 pm

gracias
miarcod
 
Posts: 197
Joined: Tue Oct 11, 2005 2:17 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 14 guests