Aporte para TCalex: Navegación con teclas en Vista Dia

Aporte para TCalex: Navegación con teclas en Vista Dia

Postby hmpaquito » Mon Nov 26, 2018 5:20 pm

Code: Select all  Expand view


METHOD KeyDown() CLASS TCalex

....
 case ::oView:IsKindOf( "TDAYVIEW" )
      do case
         case nKey == VK_UP
              IF ::oDayView:nRowDown > 1
                 ::oDayView:aSelectedRow:= {}
                 ::oDayView:nRowDown-= 1.0001
                 AAdd( ::oDayView:aSelectedRow, { ::oDayView:nRowDown, ::oDayView:nColDown } )
                 ::Refresh()
              ENDIF
              *
         case nKey == VK_DOWN
              IF ::oDayView:nRowDown < ::oDayView:nRowCount
                 ::oDayView:aSelectedRow:= {}
                 ::oDayView:nRowDown+= 1.0001
                 AAdd( ::oDayView:aSelectedRow, {::oDayView:nRowDown , ::oDayView:nColDown } )
                 ::Refresh()
              ENDIF
              *
         case nKey == VK_PRIOR
                *
                ::oDayView:GoNext()
                *
         case nKey == VK_NEXT
                *
                ::oDayView:GoPrev()
                *
endase
...
 
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby cmsoft » Mon Nov 26, 2018 7:14 pm

Muchas gracias por compartirlo...
Funciona muy bien!
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby hmpaquito » Mon Nov 26, 2018 7:44 pm

Gracias ! :D

Estoy intentando editar con intro y no necesitar hacerlo con mouse. Necesitariamos asignar la data oCalInfoSelected despues de navegar up/ down.
Le estoy dando más vueltas que a un mono pero no veo cómo hacerlo. Ahora lo tengo que dejar. Si alguien quiere echar una mano, sería muy de agradecer.

Saludos

=========================
EDITADO.

Creo que ya lo tengo. Cuando lo pruebe mejor lo subo.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby hmpaquito » Tue Nov 27, 2018 11:07 am

Bueno, conseguido.. añadida edicion con Intro.

Así tenemos que el codigo de debajo incluye, para la vista diaria: edicion de cita con intro, navegacion entre horas con flecha up/down y navegacion entre dias con avance y retroceso de pagina.


Code: Select all  Expand view
case ::oView:IsKindOf( "TDAYVIEW" )
      do case
         case nKey == VK_RETURN

          ::oDayView:HitTest2()
          #Define oCALINFO_  ::oDayView:oCalex:oCalInfo
          ::oDayView:oCalex:oCalInfoSelected:= oCALINFO_

          IF oCALINFO_ != NIL
             // Modificacion de agenda
             ::oSample:BuildDialog( ::oDayView, oCALINFO_:dStart, oCALINFO_:dEnd, oCALINFO_:nStart, oCALINFO_:nEnd)
          ELSE
             // Nueva cita
             #Define nAtColDown_ ::oDayView:nColDown
             #Define nTime_      ::oDayView:GetTimeFromRow( (::oDayView:nRowDown)+ 1 )
             #Define nTimeDown_  ::oDayView:GetTimeFromRow( (::oDayView:nRowDown) )


             ::oSample:BuildDialog( ::oDayView,;
                               ::GetFirstDateWeek() + nAtColDown_ - 1, ;
                               ::GetFirstDateWeek() + ::oDayView:nAtCol - 1, ;
                               nTimeDown_,;
                               nTime_ )

          ENDIF

          ::oDayView:SetFocus()


         case nKey == VK_UP
              IF ::oDayView:nRowDown > 1
                 ::oDayView:aSelectedRow:= {}
                 ::oDayView:nRowDown-= 0.9999999
                 ::oDayView:nRowDown:= Max(::oDayView:nRowDown, 1)
                 AAdd( ::oDayView:aSelectedRow, { ::oDayView:nRowDown, ::oDayView:nColDown } )
                 ::Refresh()
              ENDIF
              *
         case nKey == VK_DOWN
              IF ::oDayView:nRowDown < ::oDayView:nRowCount
                 ::oDayView:aSelectedRow:= {}
                 ::oDayView:nRowDown+= 1.0001
                 AAdd( ::oDayView:aSelectedRow, {::oDayView:nRowDown , ::oDayView:nColDown } )
                 ::Refresh()
              ENDIF
              *
         case nKey == VK_PRIOR
              *
              ::oDayView:GoNext()
              *
         case nKey == VK_NEXT
              *
              ::oDayView:GoPrev()
              *
         case nKey == VK_LEFT
         case nKey == VK_RIGHT
         otherwise
            return ::Super:KeyDown( nKey, nFlags )
      endcase
 
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby cmsoft » Tue Nov 27, 2018 11:30 am

Muchas gracias nuevamente por compartirlo!
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby AngelSalom » Tue Nov 27, 2018 6:53 pm

Genial aporte. Quería consultarte si en la clase que tu tienes está solucionado este problema que planteé hace algún tiempo :
http://forums.fivetechsupport.com/viewtopic.php?f=6&t=36079&p=214995&hilit=tcalex#p214995

Si miras Septiembre o Diciembre de este año por ejemplo y está el calendario configurado para que el primer día de la semana sea lunes (calendario de España) no "pinta" bien la vista mensual .

Gracias,
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby hmpaquito » Tue Nov 27, 2018 7:10 pm

Hola Ángel,

No se me mostraban bien. Miré en el foro a ver qué tal y vi tu mensaje viewtopic.php?f=6&t=33878&start=15#p206676 donde Cristóbal te decía que compararas con el bitbucket de Daniel.
Eso hice, copié un par de trozos de código que estaban distintos y se me arregló. Si quieres inténtalo y si no te funciona intento buscar cuales son los cambios que hice.


Saludos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby cnavarro » Tue Nov 27, 2018 8:18 pm

Gracias por tu aporte
No lo he podido probar, ando liadillo, pero seguro que funciona correctamente
Saludos
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: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby hmpaquito » Tue Nov 27, 2018 8:25 pm

Cristóbal,

No lo he podido probar, ando liadillo, pero seguro que funciona correctamente

Hasta ahora nadie las ha probado, salvo yo. Así que no deben ser muy de fiar :wink:

He seguido haciendo modificaciones. La verdad es que la zona de vista diaria, poco a poco, se está quedando muy bien. Es increíble el trabajo de Daniel.

Saludos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby cnavarro » Tue Nov 27, 2018 8:27 pm

Lo repito, seguro que funciona correctamente
Cuando lo pruebe te digo
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: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby AngelSalom » Sun Dec 02, 2018 8:53 pm

hmpaquito wrote:Hola Ángel,

No se me mostraban bien. Miré en el foro a ver qué tal y vi tu mensaje viewtopic.php?f=6&t=33878&start=15#p206676 donde Cristóbal te decía que compararas con el bitbucket de Daniel.
Eso hice, copié un par de trozos de código que estaban distintos y se me arregló. Si quieres inténtalo y si no te funciona intento buscar cuales son los cambios que hice.


Saludos

Lo encontré, gracias. Se trataba de modificar el método SetDate() de la clase TMonthView
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby AngelSalom » Sun Dec 02, 2018 9:14 pm

hmpaquito wrote:Bueno, conseguido.. añadida edicion con Intro.

Así tenemos que el codigo de debajo incluye, para la vista diaria: edicion de cita con intro, navegacion entre horas con flecha up/down y navegacion entre dias con avance y retroceso de pagina.


Code: Select all  Expand view
case ::oView:IsKindOf( "TDAYVIEW" )
      do case
         case nKey == VK_RETURN

          ::oDayView:HitTest2()
          #Define oCALINFO_  ::oDayView:oCalex:oCalInfo
          ::oDayView:oCalex:oCalInfoSelected:= oCALINFO_

          IF oCALINFO_ != NIL
             // Modificacion de agenda
             ::oSample:BuildDialog( ::oDayView, oCALINFO_:dStart, oCALINFO_:dEnd, oCALINFO_:nStart, oCALINFO_:nEnd)
          ELSE
             // Nueva cita
             #Define nAtColDown_ ::oDayView:nColDown
             #Define nTime_      ::oDayView:GetTimeFromRow( (::oDayView:nRowDown)+ 1 )
             #Define nTimeDown_  ::oDayView:GetTimeFromRow( (::oDayView:nRowDown) )


             ::oSample:BuildDialog( ::oDayView,;
                               ::GetFirstDateWeek() + nAtColDown_ - 1, ;
                               ::GetFirstDateWeek() + ::oDayView:nAtCol - 1, ;
                               nTimeDown_,;
                               nTime_ )

          ENDIF

          ::oDayView:SetFocus()


         case nKey == VK_UP
              IF ::oDayView:nRowDown > 1
                 ::oDayView:aSelectedRow:= {}
                 ::oDayView:nRowDown-= 0.9999999
                 ::oDayView:nRowDown:= Max(::oDayView:nRowDown, 1)
                 AAdd( ::oDayView:aSelectedRow, { ::oDayView:nRowDown, ::oDayView:nColDown } )
                 ::Refresh()
              ENDIF
              *
         case nKey == VK_DOWN
              IF ::oDayView:nRowDown < ::oDayView:nRowCount
                 ::oDayView:aSelectedRow:= {}
                 ::oDayView:nRowDown+= 1.0001
                 AAdd( ::oDayView:aSelectedRow, {::oDayView:nRowDown , ::oDayView:nColDown } )
                 ::Refresh()
              ENDIF
              *
         case nKey == VK_PRIOR
              *
              ::oDayView:GoNext()
              *
         case nKey == VK_NEXT
              *
              ::oDayView:GoPrev()
              *
         case nKey == VK_LEFT
         case nKey == VK_RIGHT
         otherwise
            return ::Super:KeyDown( nKey, nFlags )
      endcase
 


Sólo un par de ajustes, intercambiar VK_NEXT y VK_PRIOR y saber qué hace HitTest2()
Code: Select all  Expand view
case ::oView:IsKindOf( "TDAYVIEW" )
      do case
         case nKey == VK_RETURN

//          ::oDayView:HitTest2()
          #Define oCALINFO_  ::oDayView:oCalex:oCalInfo
          ::oDayView:oCalex:oCalInfoSelected:= oCALINFO_

          IF oCALINFO_ != NIL
             // Modificacion de agenda
             ::oSample:BuildDialog( ::oDayView, oCALINFO_:dStart, oCALINFO_:dEnd, oCALINFO_:nStart, oCALINFO_:nEnd)
          ELSE
             // Nueva cita
             #Define nAtColDown_ ::oDayView:nColDown
             #Define nTime_      ::oDayView:GetTimeFromRow( (::oDayView:nRowDown)+ 1 )
             #Define nTimeDown_  ::oDayView:GetTimeFromRow( (::oDayView:nRowDown) )


             ::oSample:BuildDialog( ::oDayView,;
                               ::GetFirstDateWeek() + nAtColDown_ - 1, ;
                               ::GetFirstDateWeek() + ::oDayView:nAtCol - 1, ;
                               nTimeDown_,;
                               nTime_ )

          ENDIF

          ::oDayView:SetFocus()


         case nKey == VK_UP
              IF ::oDayView:nRowDown > 1
                 ::oDayView:aSelectedRow:= {}
                 ::oDayView:nRowDown-= 0.9999999
                 ::oDayView:nRowDown:= Max(::oDayView:nRowDown, 1)
                 AAdd( ::oDayView:aSelectedRow, { ::oDayView:nRowDown, ::oDayView:nColDown } )
                 ::Refresh()
              ENDIF
              *
         case nKey == VK_DOWN
              IF ::oDayView:nRowDown < ::oDayView:nRowCount
                 ::oDayView:aSelectedRow:= {}
                 ::oDayView:nRowDown+= 1.0001
                 AAdd( ::oDayView:aSelectedRow, {::oDayView:nRowDown , ::oDayView:nColDown } )
                 ::Refresh()
              ENDIF
              *
         case nKey == VK_NEXT
              *
              ::oDayView:GoNext()
              *
         case nKey == VK_PRIOR
              *
              ::oDayView:GoPrev()
              *
         case nKey == VK_LEFT
         case nKey == VK_RIGHT
         otherwise
            return ::Super:KeyDown( nKey, nFlags )
      endcase
 
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby jnavas » Mon Dec 03, 2018 11:02 pm

Saludos
Puedes publica el código Completo?
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby albeiroval » Tue Dec 04, 2018 1:47 am

+1
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 359
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Aporte para TCalex: Navegación con teclas en Vista Dia

Postby hmpaquito » Tue Dec 04, 2018 9:07 am

Ángel,

Code: Select all  Expand view
METHOD HitTest2( ) CLASS TCalEx
   local aCoor, aRet
 
   aCoor = ::GetCoorFromPos( ::nRowDown, ::nColDown )

   //verify is over oCalInfo object
   ::oCalex:oCalInfo := ::GetInfoFromCoors( aCoor[CI_TOP], aCoor[CI_LEFT], ::dDateSelected )

   aRet = { HITTEST_BODY, If( ::oCalex:oCalInfo != NIL, NIL, aCoor ) }

return aRet
 


Cuando tenga una ventana de oportunidad publicaré el resto de mejoras de movimiento con teclas (y otras). Todo el código, más adelante, porque lleva particularidades que tengo que sacar con codeblocks.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 64 guests