In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Dudas sobre TUpDown y TMonthCalendar

Foro público de Xailer en español
Responder
Avatar de Usuario
Shadax
Mensajes: 104
Registrado: Lun Mar 14, 2011 12:32 pm

Dudas sobre TUpDown y TMonthCalendar

Mensaje por Shadax »

No suelo utilizar este tipo de controles, pero en esta ocasión he decidido utilizarlos porque se ajustan a lo que busco.
TUpDown()
El problema que me he encontrado es que al establecer el :nWidth al objeto, éste me ha ignorado olí­mpicamente y sigue trabado en el valor 16 ( que viene por defecto ).
TMonthCalendar
El problema en este objeto viene cuando trato de establecer una tipografí­a distinta a la que viene por defecto en su objeto oFont. Me ignora totalmente.
Gracias por todo y un saludo.
Avatar de Usuario
Shadax
Mensajes: 104
Registrado: Lun Mar 14, 2011 12:32 pm

Dudas sobre TUpDown y TMonthCalendar

Mensaje por Shadax »

Up!
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Dudas sobre TUpDown y TMonthCalendar

Mensaje por jlalin »

Joan Ramón,
> TUpDown()
> El problema que me he encontrado es que al establecer el
> :nWidth al objeto, éste me ha ignorado olí­mpicamente y
> sigue trabado en el valor 16 ( que viene por defecto ).
Parece que aunque el IDE muestre la propiedad nWidth luego el sistema la
ignora.
> TMonthCalendar
> El problema en este objeto viene cuando trato de establecer
> una tipografí­a distinta a la que viene por defecto en su
> objeto oFont. Me ignora totalmente.
Acabo de probarlo en XP usando todo tipo de fuentes y tamaños y lo hace
bien tanto en diseño como en ejecución.
Saludos,
José Lalí­n
--
Avatar de Usuario
Shadax
Mensajes: 104
Registrado: Lun Mar 14, 2011 12:32 pm

Dudas sobre TUpDown y TMonthCalendar

Mensaje por Shadax »

Gracias por la respuesta.
Solventaré el asunto del TUpDown a base de emularlo con un par de botones.
Sobre el calendario, en Windows 7 32Bits Profesional parece que me ignora... le echaré un ojo.
TSALES
Mensajes: 15
Registrado: Lun Ago 09, 2010 10:40 am

Dudas sobre TUpDown y TMonthCalendar

Mensaje por TSALES »

Jose
Ya pero si se utiliza W7 no funciona correctamente ¿Teneis prevista alguna solución?. No creo que sea un comportamiento normal
Saludos
Toni Sales
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9252
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Dudas sobre TUpDown y TMonthCalendar

Mensaje por ignacio »

Shadax escribió el mié, 21 diciembre 2011 16:26No suelo utilizar este tipo de controles, pero en esta ocasión he decidido utilizarlos porque se ajustan a lo que busco.
TUpDown()
El problema que me he encontrado es que al establecer el :nWidth al objeto, éste me ha ignorado olí­mpicamente y sigue trabado en el valor 16 ( que viene por defecto ).
TMonthCalendar
El problema en este objeto viene cuando trato de establecer una tipografí­a distinta a la que viene por defecto en su objeto oFont. Me ignora totalmente.
Gracias por todo y un saludo.
Confirmo que la asignación del font en TMonthCalendar funciona perfectamente en Windows 7 y Xailer 2.51 cuando no se usan los temas visuales de XP
En cuanto al TUpDown, el problema se produce debido a un error en el control nativo de Windows al utilizar el mensaje UDM_SETBUDDY. Con el siguiente 'work-around' en la clase TUpDown parece que funciona correctamente:
METHOD SetBuddy( oBuddy ) CLASS XUpDown
LOCAL nWidth

UPDATE ::FoBuddy TO oBuddy
IF ! Empty( ::Handle )
IF ::FoBuddy == Nil
::SendMsg( UDM_SETBUDDY, 0 )
ELSE
nWidth := ::nWidth
IF ::nBuddyAlign != alNONE
::FoBuddy:nWidth += ::nWidth - IIf( Empty( ::SendMsg( UDM_GETBUDDY, 0, 0 ) ), 1, 0 )
ENDIF
::SendMsg( UDM_SETBUDDY, ::FoBuddy:Handle )
::nWidth := nWidth
ENDIF
ENDIF
RETURN ::FoBuddy
Tambien se puede resolver en TForm:OnInitialize de la siguiente forma:
::oUpDown1:nWidth := ???
Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
Shadax
Mensajes: 104
Registrado: Lun Mar 14, 2011 12:32 pm

Dudas sobre TUpDown y TMonthCalendar

Mensaje por Shadax »

Gracias por tu respuesta Ignacio.
Es cierto que si funciona cuando deshabilitas el tema visual. ¿Tendréis en cuenta este comportamiento para la próxima versión y así­ parchearlo?, ¿O es algo que no podrá ser tocado?
Un saludo.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9252
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Dudas sobre TUpDown y TMonthCalendar

Mensaje por ignacio »

Shadax escribió el jue, 05 enero 2012 16:12Gracias por tu respuesta Ignacio.
Es cierto que si funciona cuando deshabilitas el tema visual. ¿Tendréis en cuenta este comportamiento para la próxima versión y así­ parchearlo?, ¿O es algo que no podrá ser tocado?
Un saludo.
Me temo que eso se lo deberí­as preguntar a Bill Gates.
Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Dudas sobre TUpDown y TMonthCalendar

Mensaje por jfgimenez »

Toni, Joan Ramón,
> Ya pero si se utiliza W7 no funciona correctamente ¿Teneis
> prevista alguna solución?. No creo que sea un
> comportamiento normal
Me temo que es "cosa" de los temas visuales. Este es un asunto que yo
estudié a fondo hace mucho tiempo, en los inicios de Xailer, y por lo
tanto creo que puedo aportar más luz sobre este tema.
El sistema de temas visuales (que existe a partir de Windows XP),
permite a los desarrolladores de los temas definir cómo se pinta cada
control. Y no sólo cómo se pinta, sino incluso los colores y las fuentes
que va a utilizar. Pero claro, si el desarrollador decide que no va a
utilizar un color o una fuente determinada, entonces se utilizan los que
tenga definidos el control, que serí­an los que se utilizarí­an si el
control no tuviese los temas activados. Pero si el desarrollador decide
utilizar una fuente o un color concretos, entonces nosotros no podemos
hacer absolutamente nada.
Y eso tiene todo el sentido del mundo. Imagí­nate, por ejemplo, un tema
con colores oscuros (que los hay, y muchos). En esas circunstancias, si
se pinta el texto de un botón de una toolbar en negro, no se verí­a. En
cambio, un radiobutton depende completamente del contenedor que tenga
debajo. De ahí­ que el desarrollador del tema debe elegir un color claro
para el texto de los botones de una toolbar mientras que el color de los
radiobutton los deja sin definir. Es por eso que cada control es
distinto, porque depende de la decisión del desarrollador del tema. Y
aunque tenga menos lógica, también ocurre con la fuente y con el tamaño
de la fuente, supongo que por coherencia con la apariencia general del
tema activo.
La única forma de obligar a usar una fuente y/o un color concreto es
quitando el tema visual del control. Yo no lo aconsejo, porque con
muchos temas va a desentonar, pero si lo necesitáis, la forma de hacerlo
es así­:
SetWindowTheme( <control>:Handle, "", "" )
Esa llamada la podéis poner en el evento OnInitialize del formulario.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
TSALES
Mensajes: 15
Registrado: Lun Ago 09, 2010 10:40 am

Dudas sobre TUpDown y TMonthCalendar

Mensaje por TSALES »

OK
Entendido y explicado perfectamente.
Saludos
Responder