Ver Mensaje Individual
  #1  
Antiguo 15-08-2016
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Reputación: 20
anubis Va por buen camino
Como abrir forms dentro de otro form

Hola amigos,

Como he visto que en varios post preguntando lo mismo para lazarus, voy a aportar lo que he recogido y resumido de otros post.

En primer lugar colocamos en el form principal un panel vacio, en la propiedad align le asignais alClient.

Si queremos que, al pulsar un boton, se abra el form debeis poner:

Código Delphi [-]
procedure TPrincipal.SpkLargeButton8Click(Sender: TObject);
begin
   if not assigned(fproveedores) then //Para verificar que no ha sido asginado/abierto el form y no lo abra mas de una vez.
   begin
   fproveedores:=tfproveedores.Create(application);
   fproveedores.Parent:=panel; //Asignamos parent al panel para que se abra dentro de él.
   fproveedores.Show;
   end;
end;

En las propiedades del form que queremos abrir, le tenemos que asignar:
Código:
align:=alNone
BorderStype:=bsSizeable
FormStyle:=fsNormal
En el evento OnClose del form le poneis
Código Delphi [-]
fproveedores.nil
, para que quede desasignado y podamos abrirlo despues.

Con eso ya nos abrira el form dentro del panel.

Una puntualizacion adicional.
Como en mi caso tengo algun problema a la hora de maximizar o cambiar el tamaño porque no refresca bien, lo que hice fue, meter en la clausula uses del form, vinculo con el form principal asi, a la hora de hacer un onResize, haga un refresh del panel.
Código Delphi [-]
procedure Tfproveedores.FormResize(Sender: TObject);
begin
  principal.contenedor.refresh;
end;

Espero que a alguien le sirva este pequeño resumen.

Gracias
Responder Con Cita