Sign in Join
Wiki copytemporary

Anchor Sides/fr: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Il 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.
22
33Chacun 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.
44
55# Exemple 1
66
7-`+--------+ +-------+`\
8-`| Label1 | | Edit1 |`\
9-`+--------+ |       |`\
10-`           +-------+`
7+```
8++--------+ +-------+
9+| Label1 | | Edit1 |
10++--------+ | |
11+ +-------+
12+```
1113
1214## En code
1315
1416``` pascal
1517 Edit1.AnchorSide[akLeft].Side:=asrRight;
1618 Edit1.AnchorSide[akLeft].Control:=Label1;
1719 Edit1.Anchors:=Edit1.Anchors+[akLeft];
1820```
1921
2022Vous pouvez définir la distance par l'intermédiaire des propriétés d'espacement de bordure:
2123
2224``` pascal
2325 Edit1.BorderSpacing.Left:=10;
2426```
2527
2628La chose même peut être fait avec la méthode :
2729
2830``` pascal
2931 Edit1.AnchorToNeighbour(akLeft,10,Label1);
3032```
3133
3234## Notes
3335
3436Edit1.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.
3537
3638# Exemple 2
3739
3840Vous pouvez ancrer le côté supérieur du contrôle Edit pour suivre le côté supérieur du Label:
3941
4042 +--------+ +-------+
4143 | Label1 | | Edit1 |
4244 +--------+ | |
4345 +-------+
4446
4547``` pascal
4648Edit1.AnchorSide[akTop].Side:=asrTop;
4749Edit1.AnchorSide[akTop].Control:=Label1;
4850Edit1.Anchors:=Edit1.Anchors+[akTop];
4951```
5052
5153La même chose peut être fait avec la méthode:
5254
5355``` pascal
5456Edit1.AnchorParallel(akTop,0,Label1);
5557```
5658
5759# Exemple 3
5860
5961Centrage du Label verticalement au Edit:
6062
6163 +-------+
6264 +--------+ | |
6365 | Label1 | | Edit1 |
6466 +--------+ | |
6567 +-------+
6668
6769``` pascal
6870Edit1.AnchorSide[akTop].Side:=asrCenter;
6971Edit1.AnchorSide[akTop].Control:=Label1;
7072Edit1.Anchors:=Edit1.Anchors+[akTop]-[akBottom];
7173```
7274
7375La même chose peut être fait avec la méthode:
7476
7577``` pascal
7678Edit1.AnchorVerticalCenterTo(Label1);
7779```
7880
7981Evidemment, Ancrer le côté inférieur du Edit1 n'a pas de sens avec le centrage.
8082
8183# Nouvelle propriété
8284
8385``` pascal
8486property AnchorSide[Kind: TAnchorKind]: TAnchorSide read GetAnchorSide;
8587```
8688
8789Cette propriété n'est pas édité dans l'[inspecteur d' objets](http://wiki.lazarus.freepascal.org/IDE_Window:_Object_Inspector/fr). Vous pouvez l'éditer dans le concepteur par l'intermédiaire de l'éditeur d'ancres (Menu: Voir -\> Afficher l'[éditeur d'ancres](http://wiki.lazarus.freepascal.org/IDE_Window:_Anchor_Editor/fr), ou cliquez sur le bouton de propriété 'Anchors').
8890
8991# Nouvelles méthodes pour configurer facilement des dispositions (de contrôles) communes
9092
9193``` pascal
9294procedure AnchorToNeighbour(Side: TAnchorKind; Space: integer;
9395 Sibling: TControl);
9496procedure AnchorParallel(Side: TAnchorKind; Space: integer;
9597 Sibling: TControl);
9698procedure AnchorHorizontalCenterTo(Sibling: TControl);
9799procedure AnchorVerticalCenterTo(Sibling: TControl);
98100```
99101
100102# See also
101103
102104- [[Autosize / Layout]]
103105- [[Example: Anchors. How to reliably align dynamically created controls under changing visibility]]
104106
105107---
106108*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](/wiki-contact).*

Back to history