Ver la Versión Completa : pasar el nombre de una forma como parametro
Willo
09-03-2009, 23:18:30
Buen dia a todos;
como podria pasarle el nombre de una forma como parametro a una funcion/procedimiento y tratarla como un Tform valido ahi?; es decir, poder modificar su anchura y altura, desplegarla, etc.
Gracias de antemano!
Saludos
Neftali [Germán.Estévez]
09-03-2009, 23:38:38
Si le pasas el nombre, luego puedes recorrer los forms abiertos (revisa la variable Screen) y comprobar cual es el que coincide con el nombre del parámetro.
Willo
10-03-2009, 00:23:08
Gracias por la respuesta Neftali;
en mi caso la forma en cuestion no va a estar abierta, de hecho la funcion a la que le paso el nombre, la abre....
Esta es la funcion actual, usando como parametro un Tform; quiero cambiarlo a un string...
procedure Tfmenu.Abreforma(F: TForm; ParentControl:TWinControl);
begin
if (GformaActiva<>F) then
begin
if Assigned(GformaActiva) then
GformaActiva.Close;
F.BorderStyle := bsNone;
F.Parent := ParentControl;
F.Align := alClient;
GformaActiva := F;
if skindata1.active then
skindata1.AddNestForm(self,F);
F.Show;
end
else
F.Show;
end;
[quote=Willo;340766
Esta es la funcion actual, usando como parametro un Tform; quiero cambiarlo a un string...
[/quote]
Hola, si quieres pasar el form como String entonces tienes que utilizar FindComponent.
procedure Tfmenu.Abreforma(StrForm: String .....);
var
Forma :TComponent;
begin
Forma := Application.FindComponent(StrForm);
..........................
Forma.BorderStyle := bsNone;
Forma.Parent := ParentControl;
Forma.Align := alClient;
...........................
Forma.Show;
end;
Saluditos
AzidRain
10-03-2009, 04:22:01
ZArko Gajic tiene precisamente un ejemplo de esto:
Crear una forma a partir de su nombre (http://delphi.about.com/library/weekly/aa080905a.htm)
Ahi viene precisamente lo que quieres, te enseña como hacer una función " CreateFormFromName(s);" que recibe una cadena que es el nombre del form.
Neftali [Germán.Estévez]
10-03-2009, 13:52:16
en mi caso la forma en cuestion no va a estar abierta, de hecho la funcion a la que le paso el nombre, la abre...
En ese caso la opción de buscarlo está claro que no sirve. :(
Para crearlo a partir del nombre, debes tener el algun sitio la correspondencia entre el nombre y el apuntador a la clase que te permita crearlo.
O lo matienes tú (por ejemplo una lista con nmbre y apuntadores a las clases) o como se ve en el ejemplo de Zarko Registrando las clases de los formularios (RegisterClass) y accediendo luego a ellas por RTTI (FindClass).
roman
10-03-2009, 19:15:22
Aqui en casa, también tenemos algunos ejemplos ;)
http://clubdelphi.com/foros/showpost.php?p=80285&postcount=2
http://clubdelphi.com/foros/showpost.php?p=10811&postcount=4
// Saludos
Kipow
10-03-2009, 23:17:05
Yo utilizo con mucho exito la opcion que das en el link 2 roman, por cierto gracias jaja creo que la uso desde ya hace un par de ańos.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.