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

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

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

Post by hmpaquito »

Code: Select all | Expand



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
...
 
User avatar
cmsoft
Posts: 1297
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina
Been thanked: 2 times

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

Post by cmsoft »

Muchas gracias por compartirlo...
Funciona muy bien!
hmpaquito
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

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

Post by hmpaquito »

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

Post by hmpaquito »

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

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
 
User avatar
cmsoft
Posts: 1297
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina
Been thanked: 2 times

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

Post by cmsoft »

Muchas gracias nuevamente por compartirlo!
User avatar
AngelSalom
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España
Has thanked: 1 time
Contact:

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

Post by AngelSalom »

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
hmpaquito
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

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

Post by hmpaquito »

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
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

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

Post by cnavarro »

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
hmpaquito
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

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

Post by hmpaquito »

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
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

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

Post by cnavarro »

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
AngelSalom
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España
Has thanked: 1 time
Contact:

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

Post by AngelSalom »

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: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España
Has thanked: 1 time
Contact:

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

Post by AngelSalom »

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

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

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
jnavas
Posts: 482
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Been thanked: 2 times
Contact:

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

Post by jnavas »

Saludos
Puedes publica el código Completo?
User avatar
albeiroval
Posts: 383
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

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

Post by albeiroval »

+1
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
hmpaquito
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

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

Post by hmpaquito »

Ángel,

Code: Select all | Expand

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.
Post Reply