![]() |
Acceder a un TButton por su nombre
Hola.
Despues de 7 años sin programar en delphi, he tenido que retomar la programacion de escritorio. El problema que tengo es que hay 60 botones y dependiendo de las acciones del usuario, debo cambiar el estado de un boton en concreto.Por ejemplo si uso la llamada MarcaBoton(boton:integer) , en la funcion tengo 60 IF, lo cual es una burrada, por lo que me gustaria saber si puedo hacer un BtnX.disabled, donde X es el valor pasado al procedimiento. Uso Lazarus + FireBird para el proyecto. Un saludo. |
Asignales a todos la misma funcion clik y los discriminas/diferencias de uno u otro por el Sender
Código:
procedure TfrmMain.Button1Click(Sender: TObject); |
Hola Firewind y bienvenido, para acceder por su nombre puedes hacerlo con FindComponent:
Saluditos |
Gracias a los dos por vuestras respuestas, al final he usado la opcion de Caro y funciona a la perfección.
Un saludo. PD.- es mi primer mensaje despues de muchos años sin usar pascal, entre el 199x y 2002 si estaba por aqui a menudo :) |
Hola...
Otra opción sería que guardes los botones en una lista al crear la forma, así los buscas por medio de su index:
Aquí lo único es que el rango sería de 0 a n - 1... Saludos... |
Se me ocurre otra que he usado en estos casos:
Lla función:
Recibe como parámetros el nombre de un contenedor, en este caso un Form, y un nombre de un componente, te devuelve ese componente. Este es un ejemplo de como usarlo:
Para realizar este ejemplo pon varios controles en un formulario, además un botón llamado btnTest y un stringgrid llamado grdAquiEstoy, en el OnClick del botón btnTest inserta este código y afectará las columnas y filas del stringgrid, espero te sirva. NOTA: Este no verifica si existe o no el componente, tal y como lo hace el ejemplo de Caro, el control debe existir o debes escribir código para manejar la situación en caso de que no exista. |
Hola...
Faust, siento que estás reinventando la rueda con tu función FindCompByName, ya que la función FindComponent hace exactamente lo mismo... Saludos... |
Cita:
ALguna vez hice una parecia a TryStrToInt... era igualita, gracias por el dato... |
| La franja horaria es GMT +2. Ahora son las 21:53:15. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi