Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Form dentro de otro (https://www.clubdelphi.com/foros/showthread.php?t=71783)

Malparo 11-01-2011 06:09:08

Form dentro de otro
 
Hola,

Podran ayudarme por favor....

Tengo el siguiente codigo...

Form2 := TFrm2.Create( Self );
Form2.Parent := Panel2;
Form2.Align := AlTop;
Form2.Align := alClient;
Form2.OnClose := AlCerrar;
Form2.ShowModal;


La idea es llamar un Form, dentro de un Panel y dejar el control en el nuevo..
Pero se bloquea toda la aplicación, si cambio Form2.ShowModal por Form2.Show, al parece no toma los procedimiento de creación ni de activación del nuevo Form.

escafandra 11-01-2011 08:42:54

Código Delphi [-]
Form2 := TFrm2.Create( Self );
Form2.Parent := Panel2;
Form2.Align  := AlTop;
Form2.Align  := alClient;
Form2.OnClose := AlCerrar;
Form2.Showl
Form2.SetFocus;

La barra del Caption de Form2 nunca se pondrá de color azul oscuro porque el foco principal lo tiene Form1. Sin embargo los controles de Form2 tomarán el foco. Si Tienes un control en Form2, debes darle el foco.

Saludos.

Malparo 11-01-2011 12:18:51

Gracias Escafandra,

Pero sigue igual, muesta el form dentro del Panel, las instrucciones que estan en el creator y activate del Form, no las toma encuenta, y el boton izquierdo del mouse no responde para las ediciones solo el derecho...

Tendras alguna idea, como resolver este problemilla.......

Aleca 11-01-2011 16:58:43

proba de esta forma
Código Delphi [-]
...
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  tForm2: TForm4;
begin
  tForm2 := TForm4.Create(nil);
  tForm2.Parent := Panel1;
  tForm2.Height := 100;
  tForm2.Width := 120;
  tForm2.Top := 0;
  tForm2.Left := 0;
  tForm2.Show;
end;
form4 tiene un panel al cual le cambio el color en el oncreate de form4.
Saludos :)

Ñuño Martínez 11-01-2011 19:09:19

¿Un TForm dentro de otro TForm? Creo que lo que necesitas es un Frame (Ya, ya, el enlace es de Lazarus, pero es que no he encontrado ninguno de Delphi y el funcionamiento en la práctica es el mismo).

escafandra 12-01-2011 00:11:19

Echemos mano a la API:


Código Delphi [-]
Form2 := TFrm2.Create( Self );
Form2.Left:= 0;
Form2.Top:= 0;
Form2.Width:= Panel2.Width;
Form2.Height:= Panel2.Height;
Windows.SetParent(Form2.Handle, Panel2.Handle);
Form2.OnClose := AlCerrar;
Form2.Show;


Saludos.

Malparo 12-01-2011 12:20:08

Gracias , por su respuesta...

Escafandra, la ultimas instrucciones resultaron perfecto, para lo que andaba buscando.....

Y lo ultimo, como puedo evitar que habran dos form similares, probe con if not Assigned(Form2) Then..... pero no resulta

escafandra 12-01-2011 13:25:11

No termino de entender. ¿Dos Form similares?, ¿Abiertos al mismo tiempo y en el mismo TPanel?.

Antes piensa una cosa. ¿Form2 es un formulario autocreado o disponible?

Si es autocreado, una instancia de Form2 siempre estará creada y por lo tanto Assigned(Form2) siempre será true.

Saludos.

Neftali [Germán.Estévez] 12-01-2011 13:49:38

Acabo de subir un par de ejemplos al FTP relacionados con esto (no son míos); Revisa el código:

Form dentro de otro movible y redimensionable
Form dentro de otro no movible y redimensionable

Creo que ya te han comentado también el tema de Frames.


La franja horaria es GMT +2. Ahora son las 07:41:56.

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