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.

Rotar texto

Foro de Xailer profesional en español
Responder
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Rotar texto

Mensaje por jose.luis »

Hola,
No se como hacer que un tlabel tenga el texto con rotación 900. Tampoco se
como hacer lo mismo en btnbmp (¿se puede?). Os dejo un proyecto donde
intento cambiar la rotación de un label, u btnbmp y un button. Aunque el
texto si gira, no se como hacer que cambie el origen del pintado del texto.
Espero vuestros comentarios. Por cierto, fijaros en el comportamiento de
button respecto al resto. Parece que algo no le gusta.
Saludos,
José Luis Capel


Attached files pruebas6.zip (1.9 KB)Â
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Rotar texto

Mensaje por jose.luis »

Hola,
Por cierto... Desde el IDE no hay ninguna opción, en un tLabel, para rotar
el texto.
Y otra... es una curiosidad. Si ejecutáis el ejemplo y haceis click
repetidas veces sobre el botón 'Rotar' da la sensación de que a cada click
comienza de nuevo el bucle de rotación (lanza el evento onclick). Y si
cerráis el formulario por la x podréis observar que aunque el formulario no
está, el programa sigue en memoria ejecutando toooodos los clicks que hemos
hecho. Entonces...
a. ¿¿ Cada click lanza un nuevo evento sin esperar a que termine el
anterior? ?? ¿¿ O los pone a la cola, uno detrás del otro ??
b. Al cerrar el formulario.. ¿No debería matar todos los procesos? ¿Hay
alguna manera de saber si queda algo 'vivo' por ahí?
Saludos y gracias,
José Luis Capel
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=45110342@news.xailer.com...]45110342@news.xailer.com...[/email]
> Hola,
>
> No se como hacer que un tlabel tenga el texto con rotación 900. Tampoco
> se como hacer lo mismo en btnbmp (¿se puede?). Os dejo un proyecto donde
> intento cambiar la rotación de un label, u btnbmp y un button. Aunque el
> texto si gira, no se como hacer que cambie el origen del pintado del
> texto.
>
> Espero vuestros comentarios. Por cierto, fijaros en el comportamiento de
> button respecto al resto. Parece que algo no le gusta.
>
> Saludos,
> José Luis Capel
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9457
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Rotar texto

Mensaje por ignacio »

José Luis,
Los controles TBtnbmp y TLabel NO están preparados para utilizar fonts con
orientación distinta de horizontal. Lo siento.
Para pintar texto con orientación vertical lo más sencillo es utilizar el
evento OnPaint y utilizar primitvas GDI para hacer el trabajo.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=45110342@news.xailer.com...]45110342@news.xailer.com...[/email]
> Hola,
>
> No se como hacer que un tlabel tenga el texto con rotación 900. Tampoco
> se como hacer lo mismo en btnbmp (¿se puede?). Os dejo un proyecto donde
> intento cambiar la rotación de un label, u btnbmp y un button. Aunque el
> texto si gira, no se como hacer que cambie el origen del pintado del
> texto.
>
> Espero vuestros comentarios. Por cierto, fijaros en el comportamiento de
> button respecto al resto. Parece que algo no le gusta.
>
> Saludos,
> José Luis Capel
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9457
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Rotar texto

Mensaje por ignacio »

José Luis,
Al estar llamando internamente a ProcessMessages() estás permitiendo que
entren nuevos mensajes y por lo tanto funcione un nuevo click de ratón, y
por lo tanto entre en ejecución de nuevo Button2Click. En definitiva, puede
haber muchas llamadas a Button2Click en cascada. Por eso aconsejamos no usar
ProcessMessages() salvo cuando sea extricamente necesario y en dicho caso
hay que tener la precaución de inhabilitar cualquier control o formulario
que pude provocar un efecto indeseado como el que comentas.
> a. ¿¿ Cada click lanza un nuevo evento sin esperar a que termine el
> anterior? ?? ¿¿ O los pone a la cola, uno detrás del otro ??
Realmente entra el segundo en funcionamiento, y el primero retoma a su
trabajo cuando el segundo termina. En definitiva aumenta la pila de
procedimientos llamados, eso es todo.
> b. Al cerrar el formulario.. ¿No debería matar todos los procesos? ¿Hay
> alguna manera de saber si queda algo 'vivo' por ahí?
Pues no. Eso lo debes de controlar tu mismo como te he comentado al
principio, o evita llamar a ProcessMessages().
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:45110593$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Hola,
>
> Por cierto... Desde el IDE no hay ninguna opción, en un tLabel, para
> rotar el texto.
>
> Y otra... es una curiosidad. Si ejecutáis el ejemplo y haceis click
> repetidas veces sobre el botón 'Rotar' da la sensación de que a cada click
> comienza de nuevo el bucle de rotación (lanza el evento onclick). Y si
> cerráis el formulario por la x podréis observar que aunque el formulario
> no está, el programa sigue en memoria ejecutando toooodos los clicks que
> hemos hecho. Entonces...
>
> a. ¿¿ Cada click lanza un nuevo evento sin esperar a que termine el
> anterior? ?? ¿¿ O los pone a la cola, uno detrás del otro ??
>
> b. Al cerrar el formulario.. ¿No debería matar todos los procesos? ¿Hay
> alguna manera de saber si queda algo 'vivo' por ahí?
>
> Saludos y gracias,
> José Luis Capel
>
>
>
>
> "José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
> news:[email=45110342@news.xailer.com...]45110342@news.xailer.com...[/email]
>> Hola,
>>
>> No se como hacer que un tlabel tenga el texto con rotación 900. Tampoco
>> se como hacer lo mismo en btnbmp (¿se puede?). Os dejo un proyecto donde
>> intento cambiar la rotación de un label, u btnbmp y un button. Aunque el
>> texto si gira, no se como hacer que cambie el origen del pintado del
>> texto.
>>
>> Espero vuestros comentarios. Por cierto, fijaros en el comportamiento de
>> button respecto al resto. Parece que algo no le gusta.
>>
>> Saludos,
>> José Luis Capel
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Rotar texto

Mensaje por jose.luis »

Ignacio,
Gracias por tus aclaraciones. En mis aplicaciones el ProcessMessages lo
utilizo en contadas ocasiones. Básicamente cuando lanzo SELECT's muy
pesadas, entre select y select. Pero en el ejemplo lo he tenido que poner
por que no se por cuales razones el xxxx:Refresh() no refrescaba el control.
Saludos y gracias!
José Luis Capel
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:45115998$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> José Luis,
>
> Al estar llamando internamente a ProcessMessages() estás permitiendo que
> entren nuevos mensajes y por lo tanto funcione un nuevo click de ratón, y
> por lo tanto entre en ejecución de nuevo Button2Click. En definitiva,
> puede haber muchas llamadas a Button2Click en cascada. Por eso aconsejamos
> no usar ProcessMessages() salvo cuando sea extricamente necesario y en
> dicho caso hay que tener la precaución de inhabilitar cualquier control o
> formulario que pude provocar un efecto indeseado como el que comentas.
>
>> a. ¿¿ Cada click lanza un nuevo evento sin esperar a que termine el
>> anterior? ?? ¿¿ O los pone a la cola, uno detrás del otro ??
>
> Realmente entra el segundo en funcionamiento, y el primero retoma a su
> trabajo cuando el segundo termina. En definitiva aumenta la pila de
> procedimientos llamados, eso es todo.
>
>> b. Al cerrar el formulario.. ¿No debería matar todos los procesos? ¿Hay
>> alguna manera de saber si queda algo 'vivo' por ahí?
>
> Pues no. Eso lo debes de controlar tu mismo como te he comentado al
> principio, o evita llamar a ProcessMessages().
>
> Un saludo
>
> --
> Ignacio Ortiz de Zúñiga
> http://www.xailer.com
> "José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
> news:45110593$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
>> Hola,
>>
>> Por cierto... Desde el IDE no hay ninguna opción, en un tLabel, para
>> rotar el texto.
>>
>> Y otra... es una curiosidad. Si ejecutáis el ejemplo y haceis click
>> repetidas veces sobre el botón 'Rotar' da la sensación de que a cada
>> click comienza de nuevo el bucle de rotación (lanza el evento onclick).
>> Y si cerráis el formulario por la x podréis observar que aunque el
>> formulario no está, el programa sigue en memoria ejecutando toooodos los
>> clicks que hemos hecho. Entonces...
>>
>> a. ¿¿ Cada click lanza un nuevo evento sin esperar a que termine el
>> anterior? ?? ¿¿ O los pone a la cola, uno detrás del otro ??
>>
>> b. Al cerrar el formulario.. ¿No debería matar todos los procesos? ¿Hay
>> alguna manera de saber si queda algo 'vivo' por ahí?
>>
>> Saludos y gracias,
>> José Luis Capel
>>
>>
>>
>>
>> "José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
>> news:[email=45110342@news.xailer.com...]45110342@news.xailer.com...[/email]
>>> Hola,
>>>
>>> No se como hacer que un tlabel tenga el texto con rotación 900. Tampoco
>>> se como hacer lo mismo en btnbmp (¿se puede?). Os dejo un proyecto
>>> donde intento cambiar la rotación de un label, u btnbmp y un button.
>>> Aunque el texto si gira, no se como hacer que cambie el origen del
>>> pintado del texto.
>>>
>>> Espero vuestros comentarios. Por cierto, fijaros en el comportamiento
>>> de button respecto al resto. Parece que algo no le gusta.
>>>
>>> Saludos,
>>> José Luis Capel
>>>
>>>
>>
>>
>
>
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Rotar texto

Mensaje por jose.luis »

Ignacio,
Gracias por tu respuesta.
>
> Los controles TBtnbmp y TLabel NO están preparados para utilizar fonts con
> orientación distinta de horizontal. Lo siento.
>
> Para pintar texto con orientación vertical lo más sencillo es utilizar el
> evento OnPaint y utilizar primitvas GDI para hacer el trabajo.
>
Pero.... se ven como rotan ;-)
Saludos,
José Luis Capel
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Rotar texto

Mensaje por jfgimenez »

José Luis,
> Pero.... se ven como rotan ;-)
Se ve porque cuando se llama en última instancia a DrawText(), el API lo
hace así. Pero ten en cuenta que al llamar a esa función se le está pasando
un rectángulo que está calculado en base a un texto horizontal; por eso se
ve cortado.
--
Un saludo,
José F. Giménez
http://www.xailer.com
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder