Bonjour à tous,

Je tourne en rond sur un problème.

J'ai une procédure qui affiche des Forms dans dans des TControl (principalement des Layouts et TabControl).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
procedure TFMain.FormCreate(Sender: TObject);
begin
  EmbeddForm(pagesControl, TFPageAccueil.Create(Self),          0);
  EmbeddForm(pagesControl, TFPageAuto.Create(Self),             1);
  EmbeddForm(pagesControl, TFPageMenuProfil.Create(Owner),   2);
  EmbeddForm(pagesControl, TFPageManuel.Create(Self),          3);
  EmbeddForm(pagesControl, TFPageMaintenance.Create(Self),  4);
end;
 
procedure TFMain.EmbeddForm(AParent:TControl; AForm:TCustomForm; Index: Integer);
begin
  if (AParent is TTabControl) then
  begin
    while AForm.ChildrenCount>0 do
      AForm.Children[0].Parent:= TTabControl(AParent).Tabs[index];
  end
  else
  begin
    while AForm.ChildrenCount>0 do
      AForm.Children[0].Parent:= AParent;
  end;
end;
Jusque là aucun souci. Mes forms sont bien créés dans mes controls.

Le truc, c'est que mes Forms sont inaccessibles entre eux. Pour faire simple, je peux pas accéder aux composants d'un Form B depuis un Form A sans être en violation d’adresse.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
procedure TFPageProfil.btnRetourClick(Sender: TObject);
begin
  FormB.Bouton1.Visible := FALSE; // Ceci ne fonctionne pas
end;
En revanche, si je procède de façon classique en laissant l'appli créer automatiquement mes forms et en utilisant form.Show, aucun problèmes.

Je pense que ma façon de créer mes forms les rendrent en instance inaccessible.

Avez-vous des idées?

PS: Appli FireMonkey.
Merci d'avance pour votre aide.