Ouvrir plusieur form dans un panel [Résolu]

Messages postés
25
Date d'inscription
samedi 17 novembre 2007
Dernière intervention
4 mars 2011
- - Dernière réponse : Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
3
Merci
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]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
Salut,

avant d'aller plus loin est ce que t'avais vu ce code ?

ça résoudrait ton problème


[hr]@+Cirec
[hr]
Commenter la réponse de Cirec
Messages postés
25
Date d'inscription
samedi 17 novembre 2007
Dernière intervention
4 mars 2011
0
Merci
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
Commenter la réponse de tof62bis
Messages postés
25
Date d'inscription
samedi 17 novembre 2007
Dernière intervention
4 mars 2011
0
Merci
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
Commenter la réponse de tof62bis
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
0
Merci
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
Commenter la réponse de Caribensila
Messages postés
25
Date d'inscription
samedi 17 novembre 2007
Dernière intervention
4 mars 2011
0
Merci
Salut,

non Caribensila mais je regarde ca de suite

merci de ton aide
Commenter la réponse de tof62bis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.