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
3832
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
17 février 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
3832
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
17 février 2022
48
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