Delphi - Operacion sobre varios TButton

 
Vista:

Operacion sobre varios TButton

Publicado por Jose Mariano (5 intervenciones) el 04/03/2003 13:57:28
Hola a todos. Voy a desarrollar una aplicacion en la que necesito declarar un monton de elementos de tipo TButton. Necesito que cada vez que se pulse sobre alguno de ellos, se modifique una estructura de tipo Array (Tabla).
Lo que quisiera saber es si puedo declarar alguna funcion de algun tipo para que no sea necesario escribir todo el codigo para cada uno de los botones. Es decir, una funcion que detecte el boton que se ha pulsado y directamente realice la funcion deseada. Los botones pueden disponerse en forma de tabla y cada boton se relaciona con una celda de la tabla. Tambien necesitaría que se modificaran las propiedades del boton, por ejemplo, el color de la fuente, tamaño, etc...
Muchas gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Operacion sobre varios TButton

Publicado por Ernesto D'Spirito (706 intervenciones) el 04/03/2003 14:58:56
Por empezar, todos los TButton pueden compartir el mismo procedimiento para el evento Click. Genera el evento para el primer botón, y para los demás botones en el Inspector de Objetos ve a la ficha Eventos en haz click en la casilla del evento OnClick y luego en el botón de la derecha para desplegar la lista. Allí selecciona el evento del primer botón.

El parámetro Sender apuntará al botón que generó el evento, así puedes saber cual fue. Nota que Sender es de tipo TObject, por lo que deberás hacer uso de la expresión TButton(Sender) para acceder a las propiedades y métodos del botón (mira los ejemplos más abajo).

Puedes hacer uso de la propiedad Tag de los botones para asignarles un número a cada uno. Numera los Tag de los botones comenzando por cero de izquierda a derecha y de arriba hacia abajo. Eso te permitirá con un simple cálculo matemático saber que fila y columna ocupa en la matriz.

Si por ejemplo tu matriz es de 3 filas (horizontales) por 5 columnas (verticales):

matriz: array [0..2, 0..4] of tipo;

entonces con las siguientes fórmulas obtendrás la fila y columna correspondiente al botón:

fila := TButton(Sender).Tag div 5;
columna := TButton(Sender).Tag mod 5;

Si los índices tienen base 1, o sea si la matriz es así:

matriz: array [1..3, 1..5] of tipo;

entonces debes sumar 1 en las fórmulas anteriores:

fila := TButton(Sender).Tag div 5 + 1;
columna := TButton(Sender).Tag mod 5 + 1;

Espero que te sirva.

Ernesto D'Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Muchas gracias Ernesto. Creo que me servirá. Sa

Publicado por Jose Mariano (46 intervenciones) el 04/03/2003 20:37:25
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar