DBLCLICK en TCALeNDAR no funciona

DBLCLICK en TCALeNDAR no funciona

Postby José Luis Sánchez » Mon Dec 12, 2022 9:54 am

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 los calendarios de los 3 meses desplegados sobre el formulario no muestra el msginfo() con la fecha seleccionada.
Saludos,
José Luis
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: DBLCLICK en TCALeNDAR no funciona

Postby Antonio Linares » Mon Dec 12, 2022 10:06 am

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: DBLCLICK en TCALeNDAR no funciona

Postby José Luis Sánchez » Mon Dec 12, 2022 10:08 am

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,
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: DBLCLICK en TCALeNDAR no funciona

Postby Ariel » Mon Dec 12, 2022 10:55 am

Jose luis,

Prueba de comentar en el prg :

// METHOD HandleEvent() VIRTUAL

Saludos.
Ariel
 
Posts: 376
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: DBLCLICK en TCALeNDAR no funciona

Postby Antonio Linares » Mon Dec 12, 2022 11:21 am

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 :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: DBLCLICK en TCALeNDAR no funciona

Postby José Luis Sánchez » Mon Dec 12, 2022 3:47 pm

Muchas gracias Antonio.
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: DBLCLICK en TCALeNDAR no funciona

Postby cnavarro » Tue Dec 13, 2022 8:05 pm

Jose Luis, he estado haciendo pruebas y he conseguido que funcione haciendo los siguientes cambios en la clase
Code: Select all  Expand view


   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 )

 


Prueba y me dices
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
User avatar
cnavarro
 
Posts: 6548
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: DBLCLICK en TCALeNDAR no funciona

Postby José Luis Sánchez » Wed Dec 14, 2022 6:53 am

Gracias Cristóbal, lo pruebo esta tarde y te comento.
Saludos,
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: DBLCLICK en TCALeNDAR no funciona

Postby José Luis Sánchez » Wed Dec 14, 2022 3:53 pm

Cristóbal,
lo acabo de probar con tus modificaciones, cuando hago dobleclick sobre un calendario se ejecuta este código
Code: Select all  Expand view
     IF ! ::lDblClick //.and. IsOverDay( ::hWnd, nRow, nCol )
         ::nRowDbl   = nRow
         ::nColDbl   = nCol
      ENDIF

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:
Code: Select all  Expand view
  REDEFINE CALENDAR oCalendar VAR dFecha ;
      ID 11 OF oDlg DBLCLICK { || ( lOk := .t., oDlg:End()) }

y el comportamiento hasta ahora era que al hacer dobleclick se cerraba el calendario por la acción del DBLCLICK.
Saludos,
José Luis
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: DBLCLICK en TCALeNDAR no funciona

Postby Antonio Linares » Wed Dec 14, 2022 4:45 pm

José Luis,

Estoy probándolo, modificando samples\testcal.prg de esta forma:
Code: Select all  Expand view
 @ 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 view
@ 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
 

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...
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: DBLCLICK en TCALeNDAR no funciona

Postby José Luis Sánchez » Fri Dec 16, 2022 7:07 am

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,
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: DBLCLICK en TCALeNDAR no funciona

Postby Antonio Linares » Fri Dec 16, 2022 8:51 am

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: DBLCLICK en TCALeNDAR no funciona

Postby José Luis Sánchez » Fri Dec 16, 2022 5:10 pm

Hola Antonio:
el código es este:

Code: Select all  Expand view
#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:
Code: Select all  Expand view

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,
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: DBLCLICK en TCALeNDAR no funciona

Postby Antonio Linares » Fri Dec 16, 2022 9:15 pm

José Luis,

Tu ejemplo funciona aqui bien :-)

Dime que compilador de C usas y te envio el EXE y las libs
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: DBLCLICK en TCALeNDAR no funciona

Postby José Luis Sánchez » Sat Dec 17, 2022 7:13 am

Antonio,
uso BCC7, FWH2210 y harbour_win32_bcc_2020_10_19
¿ Es posible que el problema sea mi versión de BCC ?
Saludos,
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], jvtecheto and 60 guests