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

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

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

Post by hmpaquito »

Code: Select all


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: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

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

Post by cmsoft »

Muchas gracias por compartirlo...
Funciona muy bien!
hmpaquito
Posts: 1200
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: 1200
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

 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: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

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

Post by cmsoft »

Muchas gracias nuevamente por compartirlo!
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
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/viewt ... ex#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
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
hmpaquito
Posts: 1200
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 http://forums.fivetechsupport.com/viewt ... 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 _ que hice.


Saludos
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
hmpaquito
Posts: 1200
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: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
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 http://forums.fivetechsupport.com/viewt ... 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 _ que hice.


Saludos
Lo encontré, gracias. Se trataba de modificar el método SetDate() de la clase TMonthView
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
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

 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

 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
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
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: 323
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: 1200
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

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