Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-06-2005
ingel ingel is offline
Miembro
 
Registrado: jun 2003
Posts: 239
Poder: 21
ingel Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 21-06-2005
Avatar de Ohcan
[Ohcan] Ohcan is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: Madrid (España)
Posts: 119
Poder: 20
Ohcan Va por buen camino
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)
Responder Con Cita
  #3  
Antiguo 21-06-2005
ingel ingel is offline
Miembro
 
Registrado: jun 2003
Posts: 239
Poder: 21
ingel Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 21-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Pues lo ya dicho te sirve.

Código Delphi [-]
  FindComponent(Var1).Visible := res;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 21-06-2005
ingel ingel is offline
Miembro
 
Registrado: jun 2003
Posts: 239
Poder: 21
ingel Va por buen camino
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..
Responder Con Cita
  #6  
Antiguo 21-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 21-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
al heredar de TControl, tienen la propiedad visible.
Sólo que FindComponent regresa TComponent y no TControl.

// Saludos
Responder Con Cita
  #8  
Antiguo 21-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:02:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi