Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Un boton 3D con color con componentes de la VCL (https://www.clubdelphi.com/foros/showthread.php?t=63209)

rrf 03-02-2009 17:47:35

Un boton 3D con color con componentes de la VCL
 
1 Archivos Adjunto(s)
Hola a tod@s.

Esto no es una pregunta, sino que trata de ser una aportación a quien le pueda interesar. Aclaro que uso Delphi 5 Pro.

Me gusta usar botones que den la sensación de 3 dimensiones, pero hasta ahora me resultaba complicadillo porque no quería usar componentes de terceros y la forma en que lo hacía era bastante engorrosa.

Sin embargo, en un hilo que leí hace unos días, se sugería el usar un componente Panel para simular un botón en color.

Partiendo de esa idea y añadiéndole algunas otras cositas, he hecho un combinado de 4 componentes (3 etiquetas y 1 panel, con 2 eventos) que, en conjunto funcionan como un botón 3D. Bueno, la verdad es que me ha gustado tanto que me he atrevido a compartirlo, por si a otras personas le puede resultar útil.

Parece demasiado engorroso trabajar con 4 componentes para crear un botón; sin embargo, aquí hay que aplicar un truco para crear un Template (que viene a ser como un componente en la práctica).

Para crear el Template, se marcan todos los componentes. Se abre el menú COMPONENT y se selecciona CREATE COMPONENT TEMPLATE. Luego se le da un nombre y se indica en qué paleta de la VCL queremos que nos lo grabe.

Cuando lo hayamos hecho ya tenemos un "componente" con el nombre que le hayamos dado que, además, se acuerda de los eventos; con lo que no hay que escribirlos otra vez.

Lo anterior es un truquito de Ian Maters (creo) y aclaro que, cuando lo hice para guardar el botón, no siempre me salió bien y no tengo muy claro la causa. Tras un par de pruebas, finalmente salió como buscaba

Cuando le pongamos un evento OnClick al panel y las 2 etiquetas con el texto, funcionará como un botón.

¿Qué contiene?. Bueno, incluyo un ejemplo para que sea más claro; pero trataré de explicarlo:

Hay una etiqueta sin caption y desconectado el autosize, que también tiene activado Transparent, situada "debajo" del panel para que el cursor active su evento OnMouseMove cuando el puntero "salga" del panel.

"Encima" está el panel. Encima del panel están 2 etiquetas con igual caption, de las cuales, la que está "debajo" está ligeramente desplazada con respecto a la que está "arriba", para crear el efecto de ser una sombra.

Al pasar el puntero del ratón sobre el botón, su apariencia de sobrerrelieve cambia a la de bajorrelieve. Cuando el puntero del ratón sale del botón, ocurre lo contrario.

Una vez que se guarda en la VCL, se puede usar como un componente y, cuando se coloca en el Form, las referencias a los componentes son correctas, es decir, que no hay que ir repasándolas una a una.


Bueno, quizás creo que he descubierto la pólvora o el Mediterráneo y realmente esto está totalmente desarrollado hace tiempo; pero he buscado algo parecido para usarlo en el pasado y no lo encontré. Por ello, creo que quizás le pueda resultar útil a alguien.

Salu2 para to2 y todas.

Ramón.

P.D. : para trabajar con colores, hay un programa que convierte los colores que vemos visualmente en una paleta, en el valor que tenemos que asignar en Delphi. Ej. Form1.color := $00C19D57 ; Ese valor, después de elegir visualmente un color, lo da un programa llamado ColorMania.
A mí me resultó muy útil y desconocía su existencia hasta hace poco. Así que les paso el dato por si puede resultar útil a alguien.


La franja horaria es GMT +2. Ahora son las 14:13:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi