FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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); begin If sender=Button1 then else If sender=Button2 then [...] end; |
#3
|
||||
|
||||
Hola Firewind y bienvenido, para acceder por su nombre puedes hacerlo con FindComponent:
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#4
|
|||
|
|||
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 |
#5
|
|||
|
|||
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... |
#6
|
||||
|
||||
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.
__________________
Herr Heins Faust Última edición por Faust fecha: 19-05-2010 a las 16:47:09. Razón: corrección |
#7
|
|||
|
|||
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... |
#8
|
||||
|
||||
Cita:
ALguna vez hice una parecia a TryStrToInt... era igualita, gracias por el dato...
__________________
Herr Heins Faust |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
El virus del TButton | roman | La Taberna | 23 | 03-10-2008 18:10:23 |
como acceder a un objeto si el nombre es pasado como un string | marcelinux | Varios | 4 | 08-11-2007 00:20:39 |
Imagen en TButton | albion | Varios | 8 | 27-08-2007 22:30:15 |
componente tbutton | ercrizeporta | Varios | 2 | 25-07-2007 12:26:46 |
TButton | Humberto Pertuz | API de Windows | 3 | 17-12-2003 19:04:13 |
|