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 11-02-2004
cht666cht cht666cht is offline
Miembro
 
Registrado: nov 2003
Posts: 14
Poder: 0
cht666cht Va por buen camino
Hombre a mi la solución mas sencilla me parece que es declarar un campo público de tipo TForm en el formulario que muestras al pulsar el botón en uno de los dos formularios anteriores, y en el momento de pulsar el botón le asignas el formulario de origen (Self)

En el formulario a mostrar:

TForm2 = class(TObject)
...
public
FormOrigen: TForm;
end;

...

procedure TForm2.DBGridDblClick(Sender: TObject);
begin
// por ejemplo, mostrar el formulario de origen
FormOrigen.Show;
end;




En el formulario de origen:

procedure Form1.Button1Click(Sender: TObject);
begin
Form2.FormOrigen := Self;
Form2.Show;
end;
Responder Con Cita
  #2  
Antiguo 11-02-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Efectivamente, ese es un método sencillo y válido... pero ¿y si necesitas acceder a métodos que no estén en TForm si no en tus forms que heredan? Si sólo es un form, haces el cast y ya está, pero si es más de uno tienes que empezar a hacer comprobación de tipos, y demás. Todo eso te lo ahorras definiendo una interfaz.
__________________
E pur si muove
Responder Con Cita
  #3  
Antiguo 11-02-2004
cht666cht cht666cht is offline
Miembro
 
Registrado: nov 2003
Posts: 14
Poder: 0
cht666cht Va por buen camino
no se podría hacer algo parecido a lo que tu dices pero sin utilizar interfaces?
me refiero a definir una clase TFormOrigen con el método virtual 'Responder', y hacer que los dos formularios de origen desciendan del TFormOrigen, implementado cada uno el método 'Responder'. En el formulario que se muestra en vez de tener un campo de tipo TForm, se declara de tipo TFormOrigen por lo que ya se puede llamar al método 'Responder' sin hacer ningún cast.
Bueno yo lo haria asi más que nada por que no tengo ni idea de interfaces
Responder Con Cita
  #4  
Antiguo 12-02-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Claro, eso es viable, pero tiene dos limitaciones. Primero, te obliga a hacer que todos tus forms hereden de uno base y a lo mejor no te interesa. Segundo, ¿y que pasa si quieres que tambien se puedan almacenar objetos no descendientes de TForm, pero que tengan algo en comun? Por ejemplo, te interesa que pueda responder un TDataModule o alguna otra clase creada por ti. Con las interfaces es simple, haces que esa clase la implemente y listos
__________________
E pur si muove
Responder Con Cita
  #5  
Antiguo 12-02-2004
cht666cht cht666cht is offline
Miembro
 
Registrado: nov 2003
Posts: 14
Poder: 0
cht666cht Va por buen camino
Bueno supongo que el método a usar dependerá de la complejidad del programa. Me voy a tener que mirar esto de las interfaces por que seguro que me serán útiles en más de una ocasión, ahora que veo un poco como se usan.
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 16:13:38.


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