PDA

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;

Caro
10-03-2009, 01:40:08
[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.