Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Crear Form en tiempo de ejecución (https://www.clubdelphi.com/foros/showthread.php?t=77373)

mjjj 19-01-2012 16:41:01

Crear Form en tiempo de ejecución
 
Amigos, tengo un problemita, estoy creando un TForm tipo fsMDIChild en tiempo ejecucion con el siguiente código.

Código Delphi [-]
var form: Tform;
begin
Form := FindComponent ('Proveedores') as TForm;
if Assigned (Form) then Form.BringToFront
else
begin
    Form := Tproveedoresform.Create(self);
    Form.Name := 'Proveedores';
end;

Hasta aquí todo bien, el problema surge cuando desde otro form (puede ser el principal o algún otro), quiero ejecutar alguna acción en el form creado en ejecucción.

Al parecer no se cual es el nombre del form creado, a pesar que tiene el nombre proveedores... Como puedo identificar el nombre real??

Es este el problema?

Gracias.

mjjj 19-01-2012 17:40:27

Un ejemplo cuando ocurre el problema, este codigo ejecutado desde un boton del formulario principal, el dmMainForm

Código Delphi [-]
uses proveedores; {nombre del formulario que se crea en tiempo de ejecucion}
.
.
.
 
procedure Tmainform.Button1Click(Sender: TObject);
begin
proveedoresform.Button1.Caption := 'hola';
end;

Que podrá ser?
Como lo resuelvo?

Gracias

ecfisa 19-01-2012 19:11:54

Hola mjjj.

Probá de este modo:
Código Delphi [-]
type
  TfrmMain = class(TForm)
   ...
  private
    function GetForm(AName: string): TForm;
  ...
  end;
...

implementation
...

function TfrmMain.GetForm(AName: string): TForm;
var
  i: Integer;
begin
  Result:= nil ;
  for i:= MDIChildCount-1 downto 0 do
    if MDIChildren[i].Name = AName then
      Result:= MDIChildren[i];
end;
...

LLamada de ejemplo:
Código Delphi [-]
procedure TfrmMain.Button1Click(Sender: TObject);
begin
  GetForm('Form2').Caption:= 'Nuevo Caption';
  GetForm('Form2').Color:= clLime;
  ...
end;

Saludos.


La franja horaria es GMT +2. Ahora son las 06:31:23.

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