DBLCLICK en TCALeNDAR no funciona
- José Luis Sánchez
- Posts: 556
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact:
DBLCLICK en TCALeNDAR no funciona
Hola a todos,
en las últimas versiones de FWH el dobleclick sobre un calendario desplegado en un formulario no funciona. En el ejemplo TESTCAL o TESTCALR al hacer dobleclick sobre _ de los 3 meses desplegados sobre el formulario no muestra el msginfo() con la fecha seleccionada.
Saludos,
José Luis
en las últimas versiones de FWH el dobleclick sobre un calendario desplegado en un formulario no funciona. En el ejemplo TESTCAL o TESTCALR al hacer dobleclick sobre _ de los 3 meses desplegados sobre el formulario no muestra el msginfo() con la fecha seleccionada.
Saludos,
José Luis
- Antonio Linares
- Site Admin
- Posts: 42259
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
Buenos dias José Luis,
Sabes con que versión de FWH te funciona correctamente ?
Esa clase no se ha modificado desde el 30 de diciembre del 2020
Sabes con que versión de FWH te funciona correctamente ?
Esa clase no se ha modificado desde el 30 de diciembre del 2020
- José Luis Sánchez
- Posts: 556
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
Hola Antonio,
con la 1905 funcionaba correctamente, pero con la 2210 no funciona. He probado a compilar la clase de 1905 con un ejecutable de la 2210 pero no funciona.
Saludos,
con la 1905 funcionaba correctamente, pero con la 2210 no funciona. He probado a compilar la clase de 1905 con un ejecutable de la 2210 pero no funciona.
Saludos,
Re: DBLCLICK en TCALeNDAR no funciona
Jose luis,
Prueba de comentar en el prg :
// METHOD HandleEvent() VIRTUAL
Saludos.
Prueba de comentar en el prg :
// METHOD HandleEvent() VIRTUAL
Saludos.
- Antonio Linares
- Site Admin
- Posts: 42259
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
José Luis,
Le he enviado un mensaje a Rao, vamos a esperar sus comentarios
He probado con varias versiones y no funciona y el fué el último en modificar la clase, a ver que nos dice
Le he enviado un mensaje a Rao, vamos a esperar sus comentarios
He probado con varias versiones y no funciona y el fué el último en modificar la clase, a ver que nos dice
- José Luis Sánchez
- Posts: 556
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
Muchas gracias Antonio.
Re: DBLCLICK en TCALeNDAR no funciona
Jose Luis, he estado haciendo pruebas y he conseguido que funcione haciendo los siguientes cambios en la clase
Prueba y me dices
Code: Select all | Expand
METHOD HandleEvent() //VIRTUAL
.../...
//----------------------------------------------------------------------------//
METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TCalendar
Do Case
case nMsg == WM_LBUTTONDOWN
return ::LButtonDown( nHiWord( nLParam ), nLoWord( nLParam ), nWParam )
case nMsg == WM_LBUTTONUP
return ::LButtonUp( nHiWord( nLParam ), nLoWord( nLParam ), nWParam )
EndCase
return ::Super:HandleEvent( nMsg, nWParam, nLParam )
//----------------------------------------------------------------------------//
// En los Methods LBUTTONDOWN y LBUTTONUP, comentar la llamada a la function IsOverDay, que siempre devuelve falso y hay que ver por qué
// Así que, de momento, prueba asi
// LButtonUp
IF ValType( ::nRowDbl ) == "N" .and. ; //IsOverDay( ::hWnd, nRow, nCol ) .AND. ;
Abs( ::nRowDbl - nRow ) <= HEIGHTDBLCLICK .AND. Abs( ::nColDbl - nCol ) <= WIDTHDBLCLICK
// LButtonDown
IF ! ::lDblClick //.and. IsOverDay( ::hWnd, nRow, nCol )
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
- José Luis Sánchez
- Posts: 556
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
Gracias Cristóbal, lo pruebo esta tarde y te comento.
Saludos,
Saludos,
- José Luis Sánchez
- Posts: 556
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
Cristóbal,
lo acabo de probar con tus modificaciones, cuando hago dobleclick sobre un calendario se ejecuta este código
y se ilumina el dia pulsado correctamente, pero lo que no hace es cerrar el calendario y devolver la fecha en oCalendar:dDate como hacía hasta ahora.
En mi código tengo:
y el comportamiento hasta ahora era que al hacer dobleclick se cerraba el calendario por la acción del DBLCLICK.
Saludos,
José Luis
lo acabo de probar con tus modificaciones, cuando hago dobleclick sobre un calendario se ejecuta este código
Code: Select all | Expand
IF ! ::lDblClick //.and. IsOverDay( ::hWnd, nRow, nCol )
::nRowDbl = nRow
::nColDbl = nCol
ENDIF
En mi código tengo:
Code: Select all | Expand
REDEFINE CALENDAR oCalendar VAR dFecha ;
ID 11 OF oDlg DBLCLICK { || ( lOk := .t., oDlg:End()) }
Saludos,
José Luis
- Antonio Linares
- Site Admin
- Posts: 42259
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
José Luis,
Estoy probándolo, modificando samples\testcal.prg de esta forma:
Y lo curioso es que la acción del segundo calendario se ejecuta tanto desde el primero como desde el segundo y si se cierra la ventana
Lo que no entiendo es porque el codeblock del segundo calendar es usado desde el primer calendar tambien. Estoy revisándolo...
Estoy probándolo, modificando samples\testcal.prg de esta forma:
Code: Select all | Expand
@ 001, 205 CALENDAR oCal VAR dDate1 OF oWnd PIXEL;
DBLCLICK ( MsgInfo( oCal:GetDate() ), MsgInfo( "primero" ), oWnd:End() ) ;
ON CHANGE oDtp2:cText := oCal:GetDate() SIZE 200, 170;
ACTION( MsgInfo( "ok" ) );
WEEKNUMBER
Code: Select all | Expand
@ 250, 001 CALENDAR oCal2 VAR dDate3, dDate4 OF oWnd PIXEL MULTISELECT DAYSTATE;
DBLCLICK ( MsgInfo( oCal2:GetDate() ), MsgInfo( "segundo" ), oWnd:End() ) SIZE 550, 170 COLOR CLR_BLACK, CLR_HRED
Lo que no entiendo es porque el codeblock del segundo calendar es usado desde el primer calendar tambien. Estoy revisándolo...
- José Luis Sánchez
- Posts: 556
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
Alguna novedad al respecto de TCalendar ? Creo que el problema que he planteado es algo a corregir, pues estoy seguro que afecta a muchos programas.
Saludos,
Saludos,
- Antonio Linares
- Site Admin
- Posts: 42259
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
Buenos dias Jose Luis,
Puedes proporcionarnos un pequeño ejemplo autocontenido de lo que necesitas hacer ?
Aqui funciona bien con las correcciones de Cristobal a excepción de ese extraño efecto que hemos detectado cuando se usa más de un calendar en el mismo diálogo
Puedes proporcionarnos un pequeño ejemplo autocontenido de lo que necesitas hacer ?
Aqui funciona bien con las correcciones de Cristobal a excepción de ese extraño efecto que hemos detectado cuando se usa más de un calendar en el mismo diálogo
- José Luis Sánchez
- Posts: 556
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
Hola Antonio:
el código es este:
y los recursos estos:
Saludos,
el código es este:
Code: Select all | Expand
#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
Code: Select all | Expand
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
}
- Antonio Linares
- Site Admin
- Posts: 42259
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
José Luis,
Tu ejemplo funciona aqui bien
Dime que compilador de C usas y te envio el EXE y las libs
Tu ejemplo funciona aqui bien
Dime que compilador de C usas y te envio el EXE y las libs
- José Luis Sánchez
- Posts: 556
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact:
Re: DBLCLICK en TCALeNDAR no funciona
Antonio,
uso BCC7, FWH2210 y harbour_win32_bcc_2020_10_19
¿ Es posible que el problema sea mi versión de BCC ?
Saludos,
uso BCC7, FWH2210 y harbour_win32_bcc_2020_10_19
¿ Es posible que el problema sea mi versión de BCC ?
Saludos,