Muy buenas, ¿alguien me podría decir como puedo saber cuando dejo de pasar el raton por encima de un DIALOG NOWAIT, es decir, cuando se sale del dialogo?
uN sALUDO.
Muy buenas, ¿alguien me podría decir como puedo saber cuando dejo de pasar el raton por encima de un DIALOG NOWAIT, es decir, cuando se sale del dialogo?
uN sALUDO.
oDlg:bLostFocus:={||TuFuncion()}No funciona el bLostFocus, ya que tiene el NOWAIT
¿Sabeis otra posible solución?
Gracias por contestar.
Hola,
En realidad no entiendo bién lo que quieres hacer. Tengo un sistema hecho con todos dialogos nowait.
Por ejemplo, cuando desde la dialog a paso, mediante un botón, al dialog b, siempre le envío como dato el oDlg actual cosa de poder "manipularlo" en el otro dialog (dentro de una función, por supuesto). De este modo puedo hacer que al salir del dialog b, el dialog a sea quién tome el foco ó pasarle el foco a otro dialog, etc..
Quizás si explicaras mejor lo que pretendes, podría ayudarte.
Saludos
Rolando ![]()
Muy buenas lo que quiero hacer es crear un dialogo del tipo de outlook cuando vienen mensajes nuevos que aparezca semi-transparente y cuando pase el ratón por lo alto se pongo sin transparencia y cuando quite el ratón de lo alto se vuelva semi-transparente.
Un Saludo.
#include "FiveWin.ch"
#define TME_LEAVE 2
#define WM_MOUSELEAVE 675
function Main()
local oWnd
DEFINE WINDOW oWnd
ACTIVATE WINDOW oWnd ;
ON INIT DialogNoModal()
return nil
function DialogNoModal()
local oDlg := TMyDialog():New()
oDlg:bMMoved = { || TrackMouseEvent( oDlg:hWnd, TME_LEAVE ) }
ACTIVATE DIALOG oDlg NOWAIT CENTER
return nil
CLASS TMyDialog FROM TDialog
METHOD HandleEvent( nMsg, nWParam, nLParam )
METHOD MouseLeave( nRow, nCol, nFlags )
ENDCLASS
METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TMyDialog
if nMsg == WM_MOUSELEAVE
return ::MouseLeave( nHiWord( nLParam ), nLoWord( nLParam ), nWParam )
endif
return Super:HandleEvent( nMsg, nWParam, nLParam )
METHOD MouseLeave( nRow, nCol, nFlags ) CLASS TMyDialog
MsgBeep()
return nilDEFINE DIALOG oDlg ...
REDEFINE ...
REDEFINE ...
...
AEVAL( oDlg:aControls, { |oCtrl| oCtrl:bLostFocus := VerFoco(oDlg) } )
...
ACTIVATE DIALOG oDlg NOWAIT ...
Function VerFoco(oDlg)
LOCAL nFoco := ASCAN( oDlg:aControls , { | oCtrl | oCtrl:lFocused } )
IF nFoco = 0
MSGALERT("NINGUN CONTROL TIENE FOCO") // AQUI SABES QUE HAS SALIDO DEL DIALOGO
ENDIF
RETURN NIL
...