Création de plusieurs forms

Résolu
Messages postés
10
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
24 juillet 2006
-
Messages postés
10
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
24 juillet 2006
-
Bonjour à tous,


Voilà, j’ai un programme en delphi de ce type :


 MainForm.pas :
Procedure Button1Click
Begin 
            CreateMDIChild; End; <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>



 
Procedure CreateMDIChild

Begin 


            Application.CreateForm(Tform1, Form1);


            Form1.caption:=’Form1’;           

End;





 


Form1Unit.pas

:

Type


            TForm1:=class(TForm);

Var


            Form1: Tform1

Implementation







 Alors, je voudrais créer plusieurs fenêtres de type Form1 dans MainForm.Là, ça marche à chaque fois que je clique sur Button1 dans MainForm mais seulement, je crois que j’utilise la même Form parce que les variables globales dans Form1Unit ont les mêmes valeurs dans toutes les fenêtres créées.
Je sais pas si c’est un problème au niveau de la création de la form, ou un problème d’accès aux variables globales.
Y a-t’il un autre moyen de créer plusieurs Form de même type pour ne pas avoir  des problèmes de ce genre?


Merci !!

3 réponses

Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
Une variable globale est... globale. Ca signifie qu'elle a la même valeur quel que soit l'endroit du programme depuis lequel tu la lis. J'imagine que pour créer des nouvelles fiches, tu utilises:

Application.CreateForm(TForm1,Form1);

ou encore:

Form1:=TForm1.Create(Application);

A chaque fois que tu crées une fiche avec cette méthode, LA variable Form1 prend comme valeur la dernière fiche créée. Si tu veux garder la liste des fiches que tu crées il faut utiliser une liste ou un tableau. Par exemple:

var
FormList:TComponentList;

FormList:=TComponentList.Create;
FormList.Add(TForm1.Create(Application));
FormList.Add(TForm1.Create(Application));
FormList.Add(TForm1.Create(Application));

Si tu exécutes ce code, FormList contiendra 3 fiches différentes.
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

Si tu as des paramêtres propres à un type fiche, il te faut crée un champ (field) dans ta class TForm1. Tu l'utilise comme une var local à une procedure, sauf qu'elle est local à ta form. aussi elle serra unique par form1 crée.

Type
            TForm1:=class(TForm);
private
fmaVar : TMonType;
public
property MaPorperty : TMonType read fmaVar;
end;

Un exemple de champ existant dans une Tform : .Caption, .FormStyle, ...

je te conseille de jeter un coup d'oeil à un tuto sur la prog objet pour comprendre mieux ce type (extrêment puissant) de structure.

bon code,
Messages postés
10
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
24 juillet 2006

j'ai enfin résolu mon problème.
merci à vous!!

@+

tsiky