FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Formularios creados por referencia
Llamo a un formulario con:
Código:
FormaClase:=TFormClass(GetClass('TExp'+inttostr((Sender as TToolButton).Tag))); if FormaClase<>nil then begin Forma:=FormaClase.Create(Self); Forma.ShowModal; Forma.Free; end; |
#2
|
||||
|
||||
Si las variables, son comunes entre todos tus formularios, puedes crear TAbstractForm o similar, del que hereden todos estos formularios y en lugar de hacer el cast a esta clase. Otra opción es usar RTTI, te recomiendo buscar en el histórico del foro.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
||||
|
||||
También podes simplemente hacer un cast de la forma... o tener una variable del tipo adecuado..
y hacer luego: Código:
Forma.Metodo; Forma.Variable := Valor; o bien (Forma as TForm1).Metodo; (Forma as TForm1).Variable := Valor;
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#4
|
||||
|
||||
Cita:
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
||||
|
||||
Cita:
// Saludos |
#6
|
||||
|
||||
Creo que depende de las habilidades del programador. Si son dos o tres clases, y el programador no sabe, no puede o no tiene tiempo de crear una clase base de la que hereden las demás... puede adoptar esta solución (que no es la ideal, por supuesto).
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#7
|
||||
|
||||
Cita:
// Saludos |
#8
|
|||
|
|||
Código:
Forma.Metodo; Forma.Variable := Valor; o bien (Forma as TForm1).Metodo; (Forma as TForm1).Variable := Valor; El caso es que los formulario llamados son diferentes entre ellos y necesito pasarles tres variables, que siempre son las mismas y de recuperar el valor que tienen despues del showmodal. |
#9
|
||||
|
||||
Cita:
Código:
var MiObjeto: OleVariant; begin {Prueba esto, vas a ver que compila} MiObjeto.MandarFruta; end; ¿Cómo haría lo tuyo? Código:
unit MiCustomForm; type TMiCustom = class(TForm) published property Propiedad1.... property Propiedad2.... end; Código:
TForm1 = class(TMiCustom) .. [quote=cervexa]Forma.Metodo; Forma.Variable := Valor; [quote] Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#10
|
||||
|
||||
Holap,
en este hilo http://www.clubdelphi.com/foros/showthread.php?t=7307 explico como hacer algo muy parecido mediante interfaces... espero te sirva
__________________
E pur si muove |
#11
|
|||
|
|||
A pesar de la sabiduría que me supone Román mi ignorancia es maxima. Despues de intentar todo lo que se me sugiere, no consigo aprobechar vuestros consejos.
He llegado hasta aqui: He creado un formulario y lo he añadido al proyecto: Código:
type TExpTramites = class(TForm) private FCodigo:Integer; FTexto:String; public { Public declarations } published property Codigo:Integer Read FCodigo write FCodigo; property Texto:String Read FTexto write FTexto; end; Código:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,UExpTramites; type TExpTra999 = class(TExpTramites) Button1: TButton; procedure Button1Click(Sender: TObject); Código:
procedure TExpedientes.ToolButton1Click(Sender: TObject); var FormaClase : TFormClass; Forma : TExpTramites; begin FormaClase:=TFormClass(GetClass('TExp'+inttostr((Sender as TToolButton).Tag))); if FormaClase<>nil then begin Forma:=FormaClase.Create(Self); Forma.codigo:=1; Forma.ShowModal; Forma.Free; end; end; initialization RegisterClass(TExpTramites); RegisterClass(TExp999); |
#12
|
||||
|
||||
Sería bueno saber porqué no compila.. ¿Cuál es el error?
PD: Te recomiedo crear el tipo de referencia de clase propio: Código:
TExpFormClass = class of TExpTramites;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#13
|
|||
|
|||
Código:
TExpFormClass = class of TExpTramites; |
#14
|
||||
|
||||
Para hacer eso, tienes que usar herencia visual.
File \ New \ (Buscar la paleta con el nombre del proyecto) \ (Buscar el Formulario ) Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#15
|
|||
|
|||
Gracias por la ayuda.
|
|
|
|