FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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; |
#2
|
||||
|
||||
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 |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
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 |
#5
|
|||
|
|||
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 |
|
|
|