Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   pasar el nombre de una forma como parametro (https://www.clubdelphi.com/foros/showthread.php?t=63938)

Willo 09-03-2009 23:18:30

pasar el nombre de una forma como parametro
 
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...

Código:

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.

Código Delphi [-]
 
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

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

Cita:

Empezado por Willo (Mensaje 340766)
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...85&postcount=2
http://clubdelphi.com/foros/showpost...11&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.


La franja horaria es GMT +2. Ahora son las 12:31:19.

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