Soyez le premier à donner votre avis sur cette source.
Vue 2 790 fois - Téléchargée 432 fois
//Ma forme 1 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; //Je supprime ces variables par réflexe, comme ça je suis sûr quand je crée ma forme qu'elle est seulement dans la procédure qui la crée //var // Form1: TForm1; implementation //Use de ma forme 2 pour pouvoir la créer et y accéder uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var lUnit2 := TForm2; begin //Crée ma forme lUnit2 := TForm.Create(Self); lUnit2.Parent := Self; //Ici j'assigne le edit de la forme1 à la propriété de ma forme2 pour pouvoir y avoir accès dedans lUnit2.p_EditForm1 := Edit1; //L'affiche en show modal lUnit2.ShowModal; //Vérifie si elle existe toujours et la libère if Assigned(lUnit2) then FreeAndNil(lUnit2); end; end. //Ma forme 2 unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Déclarations privées } FEdit : TEdit; public { Déclarations publiques } property p_EditForm1 : TEdit read FEdit write FEdit; end; //Je supprime ces variables par réflexe, comme ça je suis sûr quand je cré ma forme qu'elle est seulement dans la procédure qui la crée. //var // Form2: TForm2; implementation //En principe j'aurais fait un use de ma forme 1 ici. Mais comme j'enlève la variable globale de la forme, je ne pourrais plus y accéder de toute façon {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin //Si ma propriété à été défini if Assigned(p_EditForm1) then //Je change le text de la forme1 pour celui de la forme 2 p_EditForm1.Text := Edit1.Text; end; end.
18 nov. 2011 à 17:25
alors qe c'est le contriaire que tu veux et que tu fais
et en ligne 86 tu dis que tu change le texte de la fiche1 par celui de la fiche2
82.procedure TForm1.Button1Click(Sender: TObject);
83.begin
84. //Si ma propriété à été défini
85. if Assigned(p_EditForm1) then
86. //Je change le text de la forme1 pour celui de la forme 2
87. p_EditForm1.Text := Edit1.Text;
88.end;
En programmation objet, il n'y a que la fiche principale qui connait (uses) les autres fiches, les autres fiches doivent être indépendantes l'une de l'autre.
Pour que la fiche2 reçoive des informations de la fiche1 et sans que la fiche2 connaissent(uses) la fiche1, il faut créer un objet intermédiaire, qui lui sera connue des deux fiches, tu le crées et tu le remplis dans la première fiche et tu le transmets à la seconde de la même manière que tu as fait avec p_editForm1. A l'affichage de la fiche2, tu vérifies que la propriété est assignée et si oui tu en extrais les informations sur les propriétés de la fiche2
15 nov. 2011 à 22:40
Par contre, dans le cas d'une forme complexe avec beaucoup de code, ça deviendrais assez spaghetti comme code je crois.
14 nov. 2011 à 10:26
En fait dans ce genre de cas de figure tu peux aussi ne pas créer visuellement de Unit2, et créer avec du code, ta deuxième TForm.
13 nov. 2011 à 13:54
11 nov. 2011 à 22:23
pour le SE ça dépend mais plus à 90% du temps WindowsXP
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.