Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-06-2010
kdemia kdemia is offline
Miembro
 
Registrado: may 2010
Posts: 109
Poder: 14
kdemia Va por buen camino
Question [AYUDA]De Object.ClassName a Objeto

que tal lo que quiero hacer (si se puede) es convertir un string en un objeto.. una variable TObject como saben, tiene la propiedad ClassName que devuelve un string con la clase, yo lo que quiero es convertir esa clase en el Objeto en tiempo de ejecucion algo como


procedure TForm1.Button1Click(Sender: TObject);
begin
Sender.ClassName(Sender).Tag
end;


entienden?

muchas gracias
Responder Con Cita
  #2  
Antiguo 18-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No se si te he entendido bien,...

A partir del nombre de una clase, puedes crear un objeto de esa clase (con algunas restricciones) si la clase está registrada. Pare ello puedes buscar ayuda sobre GetClass; En los foros encontrarás mensajes y ejemplos.
Esto te puede servir, por ejemplo, para crear un formulario a partir del nombre de su clase.

Lo otro que puedes hacer es, a partir del nombre (prop. Name) de un objeto buscar ese objeto y acceder a sus propedades. Pare ello puedes utilizar FindComponent. Si buscas ejemplos en los foros también encontrarás muchos.

Creo que lo que tú necesitras no es ni lo uno, ni lo otro. Si lo que quieres es acceder al objeto que se envía como parámetro de un evento (como se hace en el código de ejemplo) sólo te queda realizar el CAST de ese objeto con su clase. Es decir algo así:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Sender is TEdit) then begin
    TEdit(Sender).Tag := 1;
  end
  else if (Sender is TDBEdit) then begin
    ....
  end;
end;

En el caso de la propiedad Tag, por ejemplo, como pertenece a TComponent, podrías hacer algo como esto:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
 begin
  if (Sender is TComponent) then begin
    TComponent(Sender).Tag := 1;
  end
  else if  ....
  end;
 end;

Funcionaría para todos los componentes derivados de TComponent.

Esto no es muy "académico" por decirlo así, sobre todo si la variedad de los componentes es grande. Para solventarlo puedes utilizar RTTI. Te dejo este link, donde está explicado con detalle y con el código necesario modificar propiedades utilizando RTTI.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Object Persistance pcpower OOP 5 04-03-2008 16:20:36
Acceso a un <object></object> carpato18 HTML, Javascript y otros 1 22-01-2008 10:18:01
Saber el ClassNAme de una ventana Faust API de Windows 4 30-07-2007 11:03:00
Sobre error "Object reference not set to an instance of an object" fer21unmsm .NET 2 11-05-2007 22:56:46
Install Com+ Object mrojass Providers 0 20-09-2004 19:13:05


La franja horaria es GMT +2. Ahora son las 19:26:11.


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