cs_tsiky
Messages postés10Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention24 juillet 2006
-
21 juil. 2006 à 16:38
cs_tsiky
Messages postés10Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention24 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?
cs_Forman
Messages postés600Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 6 avril 20101 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:
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 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.