Hola ricardo_yah.
Ese error surge por que te falta declarar la cabecera de la función
MostrarChild en la Clase
TForm1, o por que la clase del Form no se llama
TForm1.
Te pongo el código completo el cuál acabo de probar para pegarte el ejemplo y funciona perfectamente:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure MostrarChild(AClass: TFormClass); public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
uses Unit2;
procedure TForm1.MostrarChild(AClass: TFormClass);
var
i: Integer;
begin
for i:= 0 to Screen.FormCount -1 do if Screen.Forms[i] is AClass then begin
Screen.Forms[i].WindowState:= wsNormal; Screen.Forms[i].BringToFront; Exit; end;
with AClass.Create(Self) do Show; end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MostrarChild(TForm2);
end;
end.
Por supuesto que
TForm1 tiene que estar como
fsMDIForm y
Form2 como
fsMDIChild respectivamente. Y si no se llamasen
TForm1 y
TForm2, cambiar los nombres por los que les hayas asignado.
Es conveniente (aunque no necesario) que quites el Form
MDIChild de la creación automática de forms:
Project -> Options -> Forms -> Auto-create forms
Saludos.