Frame et Docking de Forme
FMX ne semble pas connaitre ces termes .
Après maints essais et recherches google , j'ai plus ou moins réussi une pseudo frame selon la méthode indiquée dans le wiki
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
type
TForm15 = class(TForm)
Button1: TButton;
Button2: TButton;
Lang1: TLang;
Layout1: TLayout;
procedure AjouterClick(Sender: TObject);
procedure EffacerClick(Sender: TObject);
private
{ Déclarations privées }
procedure EmbeddForm(AParent:TControl; AForm:TCustomForm);
public
{ Déclarations publiques }
end;
var
Form15: TForm15;
implementation
{$R *.fmx}
uses Unit16;
procedure TForm15.AjouterClick(Sender: TObject);
begin
EmbeddForm(Layout1, TForm16.Create(self)); // afficher la 'fausse frame'
end;
// équivaut a la frame
procedure TForm15.EmbeddForm(AParent:TControl; AForm:TCustomForm);
begin
while AForm.ChildrenCount>0 do
AForm.Children[0].Parent:=AParent;
end;
procedure TForm15.EffacerClick(Sender: TObject);
begin
Layout1.DeleteChildren; // efface bien les enfants
// cependant les contrôles apparaissent toujours
end; |
si la méthode fonctionne pour l'ajout des composants , par contre impossible de l'effacer . Dans mon test , la TForm16 contient un label et un bouton . Après la procedure effacerClick le bouton et le label sont toujours visible , cependant le bouton ne fonctionne plus .
j'ai essayé plusieurs choses pour effacer :
- Encadré le deletechildren avec un BeginUpdate et EndUpdate
- Ajouté un repaint etc...
Rien n'y fait
n'y aurait t-il aucun moyen d'avoir du docking avec FMX ?! c'est bien beau des applications 'mono forme' mais pour une bonne grosse application c'est un peu léger . FMX me semble bien jeune :calim2: