FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Referenciar componente con un string
Hola a todos..
Lo que quiero hacer el lo siguiente ..si se puede...Tengo una tabla donde tengo 3 campos : NombreFormulario (string) , NombreComponente (string), Visible(boolean).. entonces cada vez que entro a un formulario quiero filtrar esa tabla y habilitar los componentes segun esten en true o false en dicha tabla.. Saludos a todos Gracias |
#2
|
||||
|
||||
No sé si te he entendido muy bien...
Podrías usar FindComponent... Siento no ser más explícito... tengo un poco de prisa, si puedo luego sigo. Saludos.
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
#3
|
|||
|
|||
me explico un poco mejor..
lo que yo voy a obtener en variables es :
var1:= TTable.fieldbyname('NOMBRECOMPONENTE).asstring; res := TTable.fieldbyname('ES_VISIBLE').asboolean; de la tabla filtrada segun el nombre del formulario donde ingrese. entonces Var1 valdrá por ej. 'Button1' lo que quiero hacer en el show del Formx es : Formx.var1.visible := res; que equivaldria a poner Formx.button1.visible := true; (o false) Saludos y gracias |
#4
|
||||
|
||||
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#5
|
|||
|
|||
disculpa si no te comprendo pero..
como le indico que el componente que leo en un string tiene la propiedad VISIBLE..o sea que es un boton por ejemplo..
el codigo que hice es... Procedure HabilitaComp(Formulario:TForm); var vis:boolean;var1:string; comp:Tcomponent; begin with FDatos.TControlComp do begin filter := 'NOMBREFORM='+#39+Formulario.Name+#39; filtered := true; while Not eof do begin vis :=fieldbyname('VISIBLE').asboolean; var1:=fieldbyname('NOMBRECOMP').asstring; with (formulario as TForm) do begin comp:=findcomponent(var1); comp.visible := vis; end; next; end; end; end; obviamente no me compila porque no reconoce a VISIBLE.... quise declarar en una VAR tipo TBitBtn pero no me dejo... como le indico que comp es un boton? Saludos gracias.. |
#6
|
||||
|
||||
Hola. En primer lugar, después de 44 mensajes, es de esperar que publiques los trozos de código entre etiquetas [ delphi ], [ sql ] o [ code ], según corresponda. El código que publicaste es realmente dificil de leer!!
Dado que no lo leí, pues me baso en el texto. El punto es que aqui estamos tratando polimorficamente a los controles, y todos los controles, al heredar de TControl, tienen la propiedad visible. Ya el hecho de que se muestren o se dejen de mostrar en pantalla cada uno con su forma específica se lo dejamos a la herencia (maravilla de POO!). Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#7
|
||||
|
||||
Cita:
// Saludos |
#8
|
||||
|
||||
Tienes que hacer un moldeo de tipos. FindComponent regresa una referencia de tipo TComponent así que debes moldearla a TButton.
Por favor usa las etiquetas [ code ] o [ delphi ] para que tu código sea legible. Podrás encontrar ayuda de cómo hacerlo en los mensajes que aparecen al principio de cada foro. // Saludos |
|
|
|