Hola Antonio:
el código es este:
#include "FiveWin.ch"
#include "calendar.ch"
function main()
local oDlg, oGet, oBtn
local dFecha := date()
DEFINE DIALOG oDlg RESOURCE "SelecFecha" TITLE "Selección de fechas"
REDEFINE GET oGet VAR dFecha ID 101 OF oDlg UPDATE
REDEFINE BUTTON oBtn ID 102 OF oDlg ;
ACTION SelecFecha( @dFecha, oGet )
ACTIVATE DIALOG oDlg CENTERED
return NIL
Function SelecFecha(dFechaPres, oGet)
local oDlg, oButton1, oButton2, oSayFecha, oCalendar
local lOk := .f.
local dFecha
local aPoint := AdjustWnd(oGet, 97*2, 88*2)
IF Empty(dFechaPres)
dFecha := Date()
ELSE
dFecha := dFechaPres
ENDIF
DEFINE DIALOG oDlg RESOURCE 'Ut_Calendar' ;
TITLE "Selección de fecha" ;
COLOR GetSysColor(18), GetSysColor(15)
oDlg:lHelpIcon = .f.
REDEFINE CALENDAR oCalendar VAR dFecha ;
ID 11 OF oDlg DBLCLICK ( lOk := .t., oDlg:End())
oCalendar:oCursor := TCursor():New(,'HAND')
ACTIVATE DIALOG oDlg ;
ON PAINT ( oDlg:Move(aPoint[1], aPoint[2],,,.t.), ;
oCalendar:SetFocus(.t.) )
if lOK
oGet:cText( oCalendar:dDate )
sysrefresh()
endif
return NIL
function AdjustWnd( oBtn, nWidth, nHeight )
local nMaxWidth, nMaxHeight
local aPoint
aPoint := { oBtn:nTop + oBtn:nHeight(), oBtn:nLeft }
clientToScreen( oBtn:oWnd:hWnd, @aPoint )
nMaxWidth := GetSysMetrics(0)
nMaxHeight := GetSysMetrics(1)
if aPoint[2] + nWidth > nMaxWidth
aPoint[2] := nMaxWidth - nWidth
endif
if aPoint[1] + nHeight > nMaxHeight
aPoint[1] := nMaxHeight - nHeight
endif
return aPoint
y los recursos estos:
LANGUAGE 0, SUBLANG_NEUTRAL
selecfecha DIALOG 46, 44, 192, 113
STYLE DS_3DLOOK | DS_MODALFRAME | DS_SETFONT | WS_CAPTION | WS_POPUP | WS_SYSMENU
CAPTION "Selec Fecha"
FONT 10, "Calibri"
{
LTEXT "Fecha", IDC_STATIC, 16, 24, 32, 9, SS_LEFT
EDITTEXT 101, 50, 22, 54, 12, ES_AUTOHSCROLL
PUSHBUTTON "...", 102, 106, 22, 14, 12
}
LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN
UT_CALENDAR DIALOG 126, 49, 127, 100
STYLE DS_SETFONT | WS_POPUP | WS_SYSMENU
FONT 10, "Calibri Light"
{
CONTROL "", 11, "SysMonthCal32", 0, 0, 0, 127, 100
}
Saludos,