Ouvrir plusieur form dans un panel [Résolu]

Signaler
Messages postés
25
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
4 mars 2011
-
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
-
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

Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
44
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]
Messages postés
25
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
4 mars 2011

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
Messages postés
25
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
4 mars 2011

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
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
17
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
Messages postés
25
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
4 mars 2011

Salut,

non Caribensila mais je regarde ca de suite

merci de ton aide