Sign in Join
Wiki copytemporary

Anchor Sides/fr: what changed

Revision 2 to 3. 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-```
7+```text
88+--------+ +-------+
99| Label1 | | Edit1 |
1010+--------+ | |
1111 +-------+
1212```
1313
1414## En code
1515
1616``` pascal
1717 Edit1.AnchorSide[akLeft].Side:=asrRight;
1818 Edit1.AnchorSide[akLeft].Control:=Label1;
1919 Edit1.Anchors:=Edit1.Anchors+[akLeft];
2020```
2121
2222Vous pouvez définir la distance par l'intermédiaire des propriétés d'espacement de bordure:
2323
2424``` pascal
2525 Edit1.BorderSpacing.Left:=10;
2626```
2727
2828La chose même peut être fait avec la méthode :
2929
3030``` pascal
3131 Edit1.AnchorToNeighbour(akLeft,10,Label1);
3232```
3333
3434## Notes
3535
3636Edit1.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.
3737
3838# Exemple 2
3939
4040Vous pouvez ancrer le côté supérieur du contrôle Edit pour suivre le côté supérieur du Label:
4141
4242 +--------+ +-------+
4343 | Label1 | | Edit1 |
4444 +--------+ | |
4545 +-------+
4646
4747``` pascal
4848Edit1.AnchorSide[akTop].Side:=asrTop;
4949Edit1.AnchorSide[akTop].Control:=Label1;
5050Edit1.Anchors:=Edit1.Anchors+[akTop];
5151```
5252
5353La même chose peut être fait avec la méthode:
5454
5555``` pascal
5656Edit1.AnchorParallel(akTop,0,Label1);
5757```
5858
5959# Exemple 3
6060
6161Centrage du Label verticalement au Edit:
6262
6363 +-------+
6464 +--------+ | |
6565 | Label1 | | Edit1 |
6666 +--------+ | |
6767 +-------+
6868
6969``` pascal
7070Edit1.AnchorSide[akTop].Side:=asrCenter;
7171Edit1.AnchorSide[akTop].Control:=Label1;
7272Edit1.Anchors:=Edit1.Anchors+[akTop]-[akBottom];
7373```
7474
7575La même chose peut être fait avec la méthode:
7676
7777``` pascal
7878Edit1.AnchorVerticalCenterTo(Label1);
7979```
8080
8181Evidemment, Ancrer le côté inférieur du Edit1 n'a pas de sens avec le centrage.
8282
8383# Nouvelle propriété
8484
8585``` pascal
8686property AnchorSide[Kind: TAnchorKind]: TAnchorSide read GetAnchorSide;
8787```
8888
8989Cette 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').
9090
9191# Nouvelles méthodes pour configurer facilement des dispositions (de contrôles) communes
9292
9393``` pascal
9494procedure AnchorToNeighbour(Side: TAnchorKind; Space: integer;
9595 Sibling: TControl);
9696procedure AnchorParallel(Side: TAnchorKind; Space: integer;
9797 Sibling: TControl);
9898procedure AnchorHorizontalCenterTo(Sibling: TControl);
9999procedure AnchorVerticalCenterTo(Sibling: TControl);
100100```
101101
102102# See also
103103
104104- [[Autosize / Layout]]
105105- [[Example: Anchors. How to reliably align dynamically created controls under changing visibility]]
106106
107107---
108108*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