Accès à différentes proprités d'une forme parent à partir de son enfant

Description

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

Codes Sources

A voir également

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.