viernes, 24 de mayo de 2013

Calendario y primer día de la semana

Hola a tod@s

Hace poco tiempo empece a desarrollar otra app. Esta se fundamenta en un calendario y como es lógico hay que implementarlo. Me decidí por utilizar un par de classes que ya estaban hechas y ahí llegaron los problemas...

Las dos clases que iba a probar tenian establecido, como primer día de la semana el Domingo, y en muchos paises (incluido en el que vivo) la semana comienza en Lunes así que había que cambiarlo.




Después de releer veinte veces las soluciones seguía sin enterarme, me había atascado, me pudo el desanimo y comencé a pasar un poco de esto, hasta que un día pensé... ¿Que mejor sitio para buscar ayuda que el foro de basic4android ? (recordemos que yo programo con b4a :p ).

Eso hice, pregunté en el foro y el amigo "vampirbcn" me remitió a lo mismo que había ojeado una y otra vez sin éxito...

Esta vez la cosa cambió, había estado mirando la parte difícil del código sin darme cuenta de que en la parte fácil, en la declaración de variables estaba la solución a tanto tiempo perdido.

Al final, conseguí modificar no una clase sino las dos, una de ellas gracias en gran parte a "vampirbcn" que, aunque me remitió al mismo post que había leído muchas veces, me sirvió de empujón para volver a intentarlo.

La otra ya fue mirar donde tenia que mirar y modificar :)


Os dejo las soluciones a las dos clases por si a alguien mas le viene bien.

Custom Calendar

Para cambiar los días de la semana y que comience en Lunes en vez de en Domingo vamos a cambiar la linea:

   Public NmFullday(8As String : NmFullday = Main.Local.WeekDays 'NmFullday = Array As String("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi")
Por esta otra:

    Public NmFullday(8As String : NmFullday = Array As String("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo")
Pero con esto solo no basta, de echo, solo hemos cambiado el nombre de las etiquetas, ahora para cambiar el orden de los días en el calendario cambiamos la linea:

nday = (DateTime.GetDayOfWeek(SomeTime)-1)  'FirstDayOfWeek = Sunday

Por esta otra:

nday = (DateTime.GetDayOfWeek(SomeTime)-2)  'FirstDayOfWeek = Monday

Y con esto ya tenemos nuestro calendario empezando en Lunes y totalmente funcional



AnotherDatePicker

La primera linea que vamos a cambiar cambiar es la de los label que son los que contienen el nombre de los días, así que modificamos la linea:

 daysNames = Array As Label(Label1, Label2, Label3, Label4, Label5, Label6, Label7)

Y la dejamos así:

daysNames = Array As Label(Label7, Label1, Label2, Label3, Label4, Label5, Label6)

Como veis solo hemos cambiado el orden de los label, desplazandolos una posición a la izquierda.

Y ahora cambiamos la linea:

dayOfWeekOffset = DateTime.GetDayOfWeek(firstDay) Mod 7

Por esta otra:

dayOfWeekOffset = DateTime.GetDayOfWeek(firstDay) -1 Mod 7


Y listo, ya tenemos la clase cambiada para que arranque en Lunes y funcionando ;-)




Gracias a vampirbcn por mostrarme lo que había leido 20 veces y aun así no era capaz de ver lo evidente ;-)


Enlace al post y las classes


Un saludo a tod@s


Eugenio J. Sánchez

3 comentarios:

  1. Si lo escribes en chino, entiendo exactamente lo mismo :P

    Un saludo!!!!!

    ResponderEliminar
  2. Hola, me gustaria echarle un vistazo a esas Class, pero no puedo descargarlas del foro de B4A. ¿Podrias compartirlas?...te dejo mi mail
    fl.lopezcortes@gmail.com

    Gracias y un saludo!

    ResponderEliminar
  3. Hola.
    Me gustaria darle un vistazo a esas Class, pero no puedo descargarlas del foro de B4A, asi que te agradeceria si las compartes. Te dejo mi Mail:
    fl.lopezcortes@gmail.com

    Gracias y un saludo!

    ResponderEliminar

Calendario y primer día de la semana

Hola a tod@s Hace poco tiempo empece a desarrollar otra app. Esta se fundamenta en un calendario y como es lógico hay que implementarlo. M...