Page 1 of 1
Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Mon Nov 26, 2018 5:20 pm
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
...
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Mon Nov 26, 2018 7:14 pm
by cmsoft
Muchas gracias por compartirlo...
Funciona muy bien!
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Mon Nov 26, 2018 7:44 pm
by hmpaquito
Gracias !
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.
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Tue Nov 27, 2018 11:07 am
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
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Tue Nov 27, 2018 11:30 am
by cmsoft
Muchas gracias nuevamente por compartirlo!
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Tue Nov 27, 2018 6:53 pm
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,
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Tue Nov 27, 2018 7:10 pm
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
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Tue Nov 27, 2018 8:18 pm
by cnavarro
Gracias por tu aporte
No lo he podido probar, ando liadillo, pero seguro que funciona correctamente
Saludos
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Tue Nov 27, 2018 8:25 pm
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
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
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Tue Nov 27, 2018 8:27 pm
by cnavarro
Lo repito, seguro que funciona correctamente
Cuando lo pruebe te digo
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Sun Dec 02, 2018 8:53 pm
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
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Sun Dec 02, 2018 9:14 pm
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
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Mon Dec 03, 2018 11:02 pm
by jnavas
Saludos
Puedes publica el código Completo?
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Tue Dec 04, 2018 1:47 am
by albeiroval
+1
Re: Aporte para TCalex: Navegación con teclas en Vista Dia
Posted: Tue Dec 04, 2018 9:07 am
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.