Sign in Join
Wiki copytemporary

Anchor Sides/fr

Deutsch · English · Français · Русский · 日本語

Il y a quelques nouvelles propriétés et méthodes pour la disposition automatique des contrôles. Vous pouvez maintenant paramétrer des contrôles pour conserver une certaine distance à d'autres contrôles, ou se centrer relativement à d'autres contrôles. Voir ci-dessous pour des exemples.

Chacun des quatre côtés d'un contrôles (Gauche, Haut, Droit, Bas) peut maintenant être ancré/contraint à un côté d'un autre contrôle. Par exemple vous pouvez maintenant ancrer le côté gauche d'un TEdit au coté droit d'un TLabel. Chaque fois que le Label est déplacé ou redimensionné, le côté gauche du contrôle Edit suivra, ce qui se traduit normalement par un déplacement parallèlement au Label.

Exemple 1

+--------+ +-------+
| Label1 | | Edit1 |
+--------+ |       |
           +-------+

En code

pascal
 Edit1.AnchorSide[akLeft].Side:=asrRight;
 Edit1.AnchorSide[akLeft].Control:=Label1;
 Edit1.Anchors:=Edit1.Anchors+[akLeft];

Vous pouvez définir la distance par l'intermédiaire des propriétés d'espacement de bordure:

pascal
 Edit1.BorderSpacing.Left:=10;

La chose même peut être fait avec la méthode :

pascal
 Edit1.AnchorToNeighbour(akLeft,10,Label1);

Notes

Edit1.Left suivra Label1.Left+Label1.Width, pas les autres contours. Cela signifie, que le déplacement du Label1 déplacera Edit1. Mais le déplacement de Edit1 sera défait par la bibliothèque LCL. Si vous ancrez également le côté droit du Label1 au côté gauche de Edit1, vous avez créé un cercle vicieux, et ceci peut résulter comme avec d'autres propriétés de redimensionnement automatique en une boucle infinie. La détection de ces cercles vicieux n'est pas encore implémentée.

Exemple 2

Vous pouvez ancrer le côté supérieur du contrôle Edit pour suivre le côté supérieur du Label:

pascal
+--------+ +-------+
| Label1 | | Edit1 |
+--------+ |       |
           +-------+
pascal
Edit1.AnchorSide[akTop].Side:=asrTop;
Edit1.AnchorSide[akTop].Control:=Label1;
Edit1.Anchors:=Edit1.Anchors+[akTop];

La même chose peut être fait avec la méthode:

pascal
Edit1.AnchorParallel(akTop,0,Label1);

Exemple 3

Centrage du Label verticalement au Edit:

pascal
+-------+
pascal
+--------+ |       |
| Label1 | | Edit1 |
+--------+ |       |
           +-------+
pascal
Edit1.AnchorSide[akTop].Side:=asrCenter;
Edit1.AnchorSide[akTop].Control:=Label1;
Edit1.Anchors:=Edit1.Anchors+[akTop]-[akBottom];

La même chose peut être fait avec la méthode:

pascal
Edit1.AnchorVerticalCenterTo(Label1);

Evidemment, Ancrer le côté inférieur du Edit1 n'a pas de sens avec le centrage.

Nouvelle propriété

pascal
property AnchorSide[Kind: TAnchorKind]: TAnchorSide read GetAnchorSide;

Cette propriété n'est pas édité dans l'inspecteur d' objets. Vous pouvez l'éditer dans le concepteur par l'intermédiaire de l'éditeur d'ancres (Menu: Voir -> Afficher l'éditeur d'ancres, ou cliquez sur le bouton de propriété 'Anchors').

Nouvelles méthodes pour configurer facilement des dispositions (de contrôles) communes

pascal
procedure AnchorToNeighbour(Side: TAnchorKind; Space: integer;
                            Sibling: TControl);
procedure AnchorParallel(Side: TAnchorKind; Space: integer;
                         Sibling: TControl);
procedure AnchorHorizontalCenterTo(Sibling: TControl);
procedure AnchorVerticalCenterTo(Sibling: TControl);

See also


From the Free Pascal wiki, page "Anchor Sides/fr", as it stood on 2020-02-09 after a change by GAN, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.