Ouvrir plusieur form dans un panel [Résolu]

tof62bis 25 Messages postés samedi 17 novembre 2007Date d'inscription 4 mars 2011 Dernière intervention - 4 mars 2011 à 12:36 - Dernière réponse : Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention
- 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
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 4 mars 2011 à 21:46
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]

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de Cirec
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 4 mars 2011 à 13:16
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
tof62bis 25 Messages postés samedi 17 novembre 2007Date d'inscription 4 mars 2011 Dernière intervention - 4 mars 2011 à 13:48
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
tof62bis 25 Messages postés samedi 17 novembre 2007Date d'inscription 4 mars 2011 Dernière intervention - 4 mars 2011 à 14:38
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
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 4 mars 2011 à 14:42
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
tof62bis 25 Messages postés samedi 17 novembre 2007Date d'inscription 4 mars 2011 Dernière intervention - 4 mars 2011 à 14:56
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.