Création de plusieurs forms

Résolu
cs_tsiky Messages postés 10 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 24 juillet 2006 - 21 juil. 2006 à 16:38
cs_tsiky Messages postés 10 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 24 juillet 2006 - 24 juil. 2006 à 10:08
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

cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
21 juil. 2006 à 23:09
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.
3
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
23 juil. 2006 à 23:12
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,
3
cs_tsiky Messages postés 10 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 24 juillet 2006
24 juil. 2006 à 10:08
j'ai enfin résolu mon problème.
merci à vous!!

@+

tsiky
0
Rejoignez-nous