Bonjour,
Ceci est mon premier code et je voulais savoir comment les experts considères ma façon de penser pour ça.
Voici la situation :
J'ai une forme "FORM1" qui crée au en cliquant sur un bouton une Forme2 "FORM2". Jusque là c'est pas trop compliqué.
Par contre, j'ai besoin que la forme 2 aie accès à différentes propriété ou composant de la forme 1.
Je connais bien les uses et les références circulaire donc la plupart du monde mettre le uses de la Forme1 après l'implementation de la forme2.
Voici ce que moi je fais et je voulais savoir si c'est "mieux" que d'avoir plein de uses....
Source / Exemple :
//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.
Conclusion :
D'après vous, quoi vous en pensez
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.