PDA

Ver la Versión Completa : Adicionar propiedad a boton


mosorio
10-05-2003, 10:24:58
Hola compañeros!
En vista que he perdido mi información y no he podido descargar el ocmponente de la web del club, he decidido derivar el componente y adicionarle la propiedad, pero al comprobar, el funcionamiento no es correcto. He adicionado la propiedad Align al boton speedbutton, pero solo funciona en el formulario, si lo coloco en otro objeto no funciona, es decir no responde a la propiedad.

He adicionado la propiedad en published como aparece en los otros componentes pero nada.

published
property Align;
end;

Agradecería me hecharan una mano.

Marco Aurelio

andres1569
10-05-2003, 12:52:26
Hola Mosorio:

He probado de hacer lo que dices, heredar de un TSpeedButton y publicar la propiedad Align, y sí me funciona, lo he insertado en un formulario, en un TPanel y en u TGroupBox y sí responde al funcionamiento deseado. Supongo que lo insertas en un control contenedor (los que pueden hacer de Parent de otros controles son los descendientes de TWinControl).

Un saludo

mosorio
12-05-2003, 13:02:55
Hola andres, gracias por responder, pero donde necesito colocar el componente es en una toolbar, al colocarlo aqui no me ha funcionado, no se si el componente toolbar tenga alguna propiedad que sea parent, que depronto sea la que no permite que active la propiedad align del componente, por eso digo que no me funcionaba y are la prueba cuando llegue a casa.

Gracias

andres1569
12-05-2003, 19:45:09
Hola Mosorio:

Efectivamente, lo he probado en un ToolBar y falla el funcionamiento de la propiedad Align. Husmeando en el código fuente de la TToolBar, he visto que esta clase (que sí deriva de TWinControl) sobreescribe el método AlignControls que es el encargado de redistribuir los controles hijos según sus propiedades Align y Anchors, de modo que, como conclusión, la "culpa" no es de tu componente sino de la clase TToolBar, que por lo visto no hace caso de dichas propiedades.

Saludos

mosorio
12-05-2003, 21:05:54
Hola nuevamente

He mirado también y tienes razón, pero ahora como hago para que este procedimiento que esta sobreesccrito en mi componente lo pueda ignorar y se pueda comportar como quiero??

Gracias de antemano

andres1569
12-05-2003, 23:06:35
Hola:

Lo veo difícil, no es cuestión del SpeedButton sino del TToolBar y ponerse a derivar de un TToolBar para sobreecribir precisamente ese método es meterse en un buen berenjenal. Si el TToolBar sobreescribe el método AlignControls es porque se encarga de distribuir los botones en su interior de modo que ocupen un ancho y alto similar, "pasando olímpicamente" de la propiedad Align.

Un saludo

roman
12-05-2003, 23:43:06
He seguido este hilo desde el principio pero siento que hace referencia a algún otro mensaje anterior de manera que no sé con exactitud qué es lo que se desea. Hasta donde entiendo se quiere colocar un SpeedButton en un Toolbar pero con un alineamiento distinto del que impone el Toolbar a sus hijos (a la izquierda).

Si lo que desean es alinearlo a la derecha yo haría lo siguiente:

1. Antes del SpeedButton coloco un separador

2. Este separador deberá tener un ancho (width) igual al ancho del Toolbar menos el ancho total de todos los demás controles dentro del Toolbar (incluido el SpeedButton). Esto colocará el SpeedButon a la extrema derecha.

3. Para que el alineamiento se preserve al redimensionar el formulario, el ancho del SpeedButton (como se calcula en el punto anterior) deberá ajustarse en el evento OnResize del Toolbar.

// Saludos

mosorio
13-05-2003, 10:46:56
Hola Roman,
Gracias por la idea, pero no es el objetivo de colocar un boton de espacion o separador para colocarloa en la posición que deseo, ya que adicionaría más codigo al modulo, el boton que esta en la web del club funcionaba perfectamente, solo que lo perdí por no hacer backup, claro que me confie tambien en que éste estaría en el club y que no habría problemas para descargarlo.
Se que hay una manera de resolver esto pero no se como, no sabría como eliminar o obviar el procedimiento que tiene sobreescrito el toolbar, claro que intente copiar el mismo procedimiento Align de Twincontrol para poder volver a este.
Como se podría hacer en POO de retornar a un procedimiento o funcoinalidad de un ascendiente si esta está sobreescrita es su ascendiente mas inmediato??, esa es la cuestión

Gracias,
PD:espero que este punto de pautas para que entren más respuestas y opiniones.

roman
13-05-2003, 17:11:02
El problema es que haces referencia a una componente que no conozco y muy posiblemente a otros les suceda lo mismo. Si explicas tu problema desde el principio tendrás más posibilidades de obtener más respuestas.

// Saludos

mosorio
14-05-2003, 09:54:08
Hola,
El problema es el siguiente, tengo unas plantillas que utilizao para desarrollar y esas tienen una toolbar con los botones respectivos de salvar, etc., solo que estos botones los tengo alineados de tal forma que sea facil para el usuario las acciones y los que no tengan que ver con acciones que el usuario ejecute constantemente los alínio a la derecha, dependiendo del caso y asi evitar que el usuario por error presione esos botones. Por eso el componente que estaba utilizando era este que estaba en esta web, pero hasta ahora no me han hecho caso los webmaster del club habiendo enviado un correo para que verificaran este fallo. Por tal motivo me he visto obligado de derivar el componente para poder alinearlo como deseo y no he podido. La idea que me han dado sobre colocar separadores no me es optima ya que en algunos casos estos botones no estaran y me complicaría más tratando de buscar una formula para ordenar, corregir, centrar los componente en el/los formularios.

Gracias de todas formas, si hay alguien o si el autor del componente lee este hilo que tambien le he enviado un mensaje para ver si me podría facilitar el componente, pero hasta ahora no he obtenido respuestas.

Seguiré esperando y buscando en la "redaraña"