Buenos Dias
tengo este codigo para cerrar dialogo cuando se hace click afuera, hace bien eso, el problema que al ocupar el calendario me bloquea.
#include "FiveWin.ch"
#include "dtpicker.ch"
#include "calendar.ch"
#include "wcolors.ch"
#include "TSButton.ch"
#Define CLR_NARANJA RGB(249,196,98)
#Define CLR_NADA RGB(255,255,255)
#DEFINE WS_EX_DLGMODALFRAME 0x0001
#define TME_LEAVE 2
#define WM_MOUSELEAVE 675
FUNCTION Main()
LOCAL oWnd
LOCAL oFecha := Dtoc(Date())
LOCAL oBtn
SET DATE TO BRITISH
SET EPOCH TO 1980
SET DATE FORMAT "dd-mm-yyyy"DEFINE WINDOW oWnd TITLE "Ventana Principal con Botón"
@ 10, 10 BUTTON oBtn PROMPT oFecha OF oWnd SIZE 150, 40 action MostrarCalendario( oFecha, oWnd:nLeft, oWnd:nTop + 100,oBtn)ACTIVATE WINDOW oWnd MAXIMIZED
RETURN NIL
STATIC FUNCTION MostrarCalendario (xFecha, nX, nYm, oBtn)
LOCAL oCalWnd
LOCAL nCalWidth := 520
LOCAL nCalHeight := 380
LOCAL dFecha := Date()
local oCal,oFntCal,oMarco
LOCAL lSunday := .T.
LOCAL lSaturday := .T.
Local oFecha
DEFINE FONT oFntCal NAME "Segoe UI" SIZE 0, -16
DEFINE DIALOG oCalWnd FROM oBtn:nRight, oBtn:nTop TO oBtn:nRight + nCalWidth, oBtn:nTop + nCalHeight PIXEL STYLE WS_POPUP
// ,LARGO
@ 0, 0 CALENDAR oCal VAR dFecha SIZE 280,230 ;
DBLCLICK ( oFecha:=oCal:GetDate(),oCalWnd:End() ) DAYSTATE of oCalWnd FONT oFntCal COLOR CLR_BLACK,RGB(95, 179, 35 )
oCal:SetNoTodayCircle( .t. )
oCal:SetNoToday( .t. )
oCal:SetWeekNumbers( .f. )
oCal:SetMinRange( Date() )
oCal:SetColor( 5, CLR_NADA )
oCalWnd:bStart = { || SetCapture( oCalWnd:hWnd ) }ACTIVATE DIALOG oCalWnd ;
ON CLICK If( nRow < 0 .or. nCol < 0 .or. ;
nRow > oBtn:nTop + nCalHeight .or. nCol > oBtn:nRight + nCalWidth,;
oCalWnd:End(),)
RETURN nil
Saludos
