Page 1 of 1

Problema con bLClicked

Posted: Sun Nov 29, 2009 10:44 am
by triumvirato
Hola compañeros,

El siguiente trocito de código, no consigo que me funcione correctamente (ver línea de comentada):

Code: Select all

   DEFINE WINDOW oWndChild MDICHILD OF oWndPrinc ;
          FROM 5,5 TO 6,6;
          COLOR "N/W" ;
          BORDER NONE 
   oWndChild:bGotFocus  = { || oDlg:SetFocus() }

   DEFINE DIALOG oDlg RESOURCE "Articulos" OF oWndChild
   
   REDEFINE SAY oSayTec_Nom PROMPT CargaFicTec( oArt ) ID 500 OF oDlg UPDATE

   oSayTec_Nom:SetColor( CLR_WHITE, GetSysColor( COLOR_BTNFACE ) ) 
   oSayTec_Nom:lWantClick := .t.
   oSayTec_Nom:bLClicked := { || MsgInfo("TAMOS") }        // ESTA LINEA NO SE EJECUTA AL HACER CLIC SOBRE oSayTec_Nom
   oSayTec_Nom:oCursor := oCursorHand

   for n = 1 to Len( oDlg:aControls )
      oDlg:aControls[ n ]:bLClicked = GenBlock( oWndChild, oDlg:aControls[ n ] )
   next      

   ACTIVATE DIALOG oDlg NOWAIT CENTERED;
      ON INIT ( oDlg:Move( 0, 0 ) );
      VALID  ( oWndChild:End(), .t. )


   oWndChild:nWidth := oDlg:nWidth+7
   oWndChild:nHeight := oDlg:nHeight+32

   ACTIVATE WINDOW oWndChild ON INIT oWndPrinc:paint()

El funcionamiento debería ser una al estilo de un link en una página web, es decir, es un texto que aparece de distinto color, al pasar por encima de el, el cursor cambia y al hacer click sobre el, ejecuta una función, en este caso el MsgInfo("RAMOS").
Alguna sugerencia? algún error a simple vista de esos que tenemos los novatos?

GRACIAS!

Re: Problema con bLClicked

Posted: Sun Nov 29, 2009 11:28 am
by Antonio Linares
David,

En ese bucle for next que tienes a continuación le estás cambiando nuevamente el valor bLClicked :-)

Haz la asignación de BLClicked después del bucle for next

Re: Problema con bLClicked

Posted: Sun Nov 29, 2009 11:34 am
by triumvirato
Antonio,

Error de novato, claro!.
Cómo puedo saber qué control es oSayTec_nom en el array de controles del diálogo para hacer algo así?:

Code: Select all

   oSayTec_Nom:bLClicked := { || ( GenBlock( oWndChild, oDlg:aControls[ n ] ), MsgInfo("TAMOS") ) }
GRACIAS!

Re: Problema con bLClicked

Posted: Sun Nov 29, 2009 11:46 am
by Antonio Linares
David,

Al ser el primer control redefinido, está en la posición 1 (uno)

Re: Problema con bLClicked

Posted: Sun Nov 29, 2009 11:48 am
by triumvirato
Gracias Antonio!