Ouvrir plusieur form dans un panel

Résolu
tof62bis Messages postés 25 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 4 mars 2011 - 4 mars 2011 à 12:36
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 4 mars 2011 à 21:46
Bonjour a tous
Voila après un petit moment d'absence
Je me remet a faire su delphi
Voici mon petit soucis
J'essaye d'ouvrir plusieur form dans un panel, j'arrive a ouvrir ma form2 comme je le souhaite
mais arriver a ma form3 ca ne marche plus
Voici la source et merci d'avance pour votre aide

Unit Unit1;
Interface
Uses Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, StdCtrls;

Type
TForm1 = Class(TForm)
Panel1: TPanel;
Ouvrir: TButton;
Button1: TButton;
Procedure FormCreate(Sender: TObject);
Procedure FormActivate(Sender: TObject);
Procedure OuvrirClick(Sender: TObject);
Procedure Panel1Resize(Sender: TObject);
procedure Button1Click(Sender: TObject);
End;

Var
Form1: TForm1;


{----------------------------------------------------------------}
{ }Implementation{ }
{----------------------------------------------------------------}
{$R *.DFM} Uses Unit2, Unit3;


{----------------------------------------------------------------}
Procedure TForm1.FormCreate(Sender: TObject);
Begin
Form2 := TForm2.Create(Form1);
Windows.SetParent(Form2.Handle, Panel1.Handle);
Form3 := TForm3.Create(Form1);
Windows.SetParent(Form3.Handle, Panel1.Handle)
end;



{----------------------------------------------------------------}
Procedure TForm1.OuvrirClick(Sender: TObject);
Begin
Form2.Show;
SetWindowPos(Form2.Handle, 0, 0, 0,
Panel1.ClientWidth, Panel1.ClientHeight, SWP_NOACTIVATE);
End;

{----------------------------------------------------------------}
Procedure TForm1.Panel1Resize(Sender: TObject);
Begin
SetWindowPos(Form2.Handle, 0, 0, 0,
Panel1.ClientWidth, Panel1.ClientHeight, SWP_NOACTIVATE);
SetWindowPos(Form3.Handle, 0, 0, 0,
Panel1.ClientWidth, Panel1.ClientHeight, SWP_NOACTIVATE);
End;


{----------------------------------------------------------------}
Procedure TForm1.FormActivate(Sender: TObject);
Begin
Panel1.Height := ClientHeight - Panel1.Top - Panel1.Left;
Panel1.Width := ClientWidth - Panel1.Left * 2;
Panel1.Anchors := [akLeft, akTop, akRight, akBottom];
End;


{----------------------------------------------------------------}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form3.Show;
SetWindowPos(Form3.Handle, 0, 0, 0,
Panel1.ClientWidth, Panel1.ClientHeight, SWP_NOACTIVATE);
end;

End.


Voila et encore merci d'avance pour votre aide

5 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
4 mars 2011 à 21:46
re,
essaye comme ça.
ça devrait le faire:

[b]implementation

/b{$R *.dfm}
uses USecondFrm, UThirdFrm;
procedure TMainFrm.FormCreate(Sender: TObject);
[b]begin
  /bSecondFrm := TSecondFrm.Create(MainFrm);
  SecondFrm.Parent := Panel1;
  SecondFrm.Align := alLeft;
  SecondFrm.Show;
  ThirdFrm := TThirdFrm.Create(MainFrm);
  ThirdFrm.Parent := Panel1;
  ThirdFrm.Align := alRight; // ou alClient
  ThirdFrm.Show;
end;


et tu peux virer tout le reste ... Panel1Resize & FormActivate


[hr]@+Cirec
[hr]
3
tof62bis Messages postés 25 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 4 mars 2011
4 mars 2011 à 13:48
Re Merci cirec pour ton aide
Mais non j'aimerai bien que ma form2 et ma form3 dans ma form1
sans que ma form2 et ma form3 sorte de ma form1
sans utilise de pagecontrol

Voila j'espere que je m'explique bien
0
tof62bis Messages postés 25 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 4 mars 2011
4 mars 2011 à 14:38
re tous le monde
bon voila j'ai trouvé la solution
mais j'ai un message d'erreur que je ne comprend pas quand je le compile

Projet Project1.exe raised exception class EAccessViolationvith message 'Access violation
at adress 0043496b in module 'Projet1.exe'
Read of address 00000180'; Process stopped. Use Step or Run to continue.

Voila merci de votre aide
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
4 mars 2011 à 14:42
Salut,

As-tu pensé aux cadres (TFrame) ?
C'est plus léger et plus pratique que TForm dans un cas comme le tien.


_______________________________________
Soutenez Wikimédia France aujourd'hui : http://dons.wikimedia.fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tof62bis Messages postés 25 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 4 mars 2011
4 mars 2011 à 14:56
Salut,

non Caribensila mais je regarde ca de suite

merci de ton aide
0
Rejoignez-nous