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 01-01-2009
Luis_264 Luis_264 is offline
Miembro
 
Registrado: jun 2008
Posts: 19
Poder: 0
Luis_264 Va por buen camino
Exclamation Cómo prescindir del "casting" de tipos

function tform1.obja(cep:string):tobject;
begin
obja:=tobject(findcomponent(cep));

end;

pero lo que quiero es que la salida de la funcion sea de diferentes tipos por ejemplo


topendialog.create(self).name:='xx'; ó
tedit.create(self).name:='xx';

que se pueda hacer esto --->obja('xx').filename
o estoo obja('xx').text

y no esto (obja('xx') as topendialog).filename ó
(obja('xx') as tedit).text


si me podiran ayudarr porfaaaa!!! como le muevo a la funcion para que haga eso de salidas de difrenetes tiposs

Última edición por Luis_264 fecha: 01-01-2009 a las 19:08:19.
Responder Con Cita
  #2  
Antiguo 01-01-2009
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.048
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, bienvenido, creo que deberías leer la guía de estilo del clubdelphi
Responder Con Cita
  #3  
Antiguo 01-01-2009
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Poder: 18
DarkMan Va por buen camino
Yo no veo posible hacer lo que pides ya que no puedes devolver un componente específico como resultado cuando entran en juego otros componentes de distinto tipo. Hagas lo que hagas tendrás que utilizar ese método. Otra forma más enrevesada sería realizar diferentes funciones que fuesen específicas a cada tipo de componente, en ese caso sí podrías, pero tendrías que decidir tu que función usar en cada caso.

De todas formas si tanto te urge, porque no explicas el caso desde un punto de vista más anterior, como por ejemplo, el porqué necesitas evitar usar ese método.
__________________
"La recompensa de una buena acción está en haberla hecho"
Responder Con Cita
  #4  
Antiguo 01-01-2009
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, puedes modificar la funcion usando las TPersistentClass (link). No se bien bien como se haria, pero me da que puede hacerse. Por otra banda, no le encuentro mucho la utilidad , esto es, con el typecast al tobject te iria de perlas...
Responder Con Cita
  #5  
Antiguo 02-01-2009
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.288
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
Tal cual lo tienes, yo también creo que no se puede hacer, aunque tampoco entiendo muy bien a dónde quieres ir a parar.

Utiliza tags cuando añadas código delphi a los mensajes.

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
  #6  
Antiguo 02-01-2009
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.912
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
La unica via que veo es usar Generic y/o incorporar un lenguaje de script y evaluar dinamicamente.

Aunque el estilo por si mismo tiene su uso, tanto que en lenguajes dinamicos es la norma, igual que los otros me pregunto que es lo que buscas.
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 02-01-2009
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
rectifico, creo que no puede hacerse, a no ser que hagas un monton de overloads y pases antes que clase es como un parametro. O bien que uses olevariants, pues el compilador no revisa sus metodos, aunque ya te puedes imaginar que ese esfuerzo no valdria la pena saludos.
Responder Con Cita
  #8  
Antiguo 03-01-2009
Luis_264 Luis_264 is offline
Miembro
 
Registrado: jun 2008
Posts: 19
Poder: 0
Luis_264 Va por buen camino
mmm okk graxx ps solo lo keria para simplificar mi codigo =D pero si ya veo ke asi se va a complicarr mass =D ok grax detodos modos
Responder Con Cita
  #9  
Antiguo 03-01-2009
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
No sé, pero si no son muchas clases, con los overloads podrías hacerlo, o ya puesto con funciones:
Código Delphi [-]

function tform1.obja(cep:string):Tcomponent;
begin
  result := findcomponent(cep);
end;

function tform1.obja(cep:string):TEdit;
begin
   result := TEdit(findcomponent(cep));
end;

function tform1.obja(cep:string):TOpenDialog;
begin
   result := TOpenDialog(findcomponent(cep));
end;

o hacer una clase que lo englobe todo:
Código Delphi [-]
TBusca = class(TObject)
private
   encontrado:TComponent;
  procedure SetName(Value:String);
public
    ComponentName:string read FName write SetName;
    function AsEdit:TEdit;
    function AsOpenDialog:TOpenDialog;
end

implementation 

procedure TBusca.SetName(Value:string);
begin 
   encontrado := Form1.Findcomponet(value);
end;

function TBusca.AsEdit:TEdit;
begin
   if Assigned(encontrado) then
     result := TEdit(encontrado)
  else
    result := nil;
end;

function TBusca.AsOpenDialog:TOpenDialog;
begin
   if Assigned(encontrado) then
     result := TOpenDialog(encontrado)
  else
    result := nil;
end;
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
casting Composite Report: error al imprimir MsYo Impresión 2 24-07-2006 12:29:09
Def. de constantes - Casting Mariana OOP 3 21-10-2005 19:24:23
Casting de TComponent en TEdit jamonete2 Varios 2 12-06-2005 15:56:19
Tipos de boludos DarkByte Humor 0 29-06-2004 09:45:57
... 100 tipos... Jure Humor 0 18-03-2004 14:24:30


La franja horaria es GMT +2. Ahora son las 07:22:30.


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