Difference between revisions of "Anchor Sides/fr"
Paulatreides (talk | contribs) |
m (Fixed syntax highlighting) |
||
(35 intermediate revisions by 4 users not shown) | |||
Line 2: | Line 2: | ||
Il y a quelques nouvelles propriétés et méthodes pour la disposition automatique des contrôles. | Il y a quelques nouvelles propriétés et méthodes pour la disposition automatique des contrôles. | ||
− | Vous pouvez maintenant | + | Vous pouvez maintenant paramétrer des contrôles pour conserver une certaine distance à d'autres contrôles, |
− | ou centrer relativement | + | 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) | + | 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. |
− | peut maintenant être ancré/ | ||
− | Par exemple vous pouvez maintenant ancrer le côté gauche d'un TEdit | ||
− | |||
− | ou | ||
− | |||
=Exemple 1= | =Exemple 1= | ||
+--------+ +-------+ | +--------+ +-------+ | ||
Line 17: | Line 12: | ||
+-------+ | +-------+ | ||
==En code== | ==En code== | ||
+ | <syntaxhighlight lang=pascal> | ||
Edit1.AnchorSide[akLeft].Side:=asrRight; | Edit1.AnchorSide[akLeft].Side:=asrRight; | ||
Edit1.AnchorSide[akLeft].Control:=Label1; | Edit1.AnchorSide[akLeft].Control:=Label1; | ||
Edit1.Anchors:=Edit1.Anchors+[akLeft]; | Edit1.Anchors:=Edit1.Anchors+[akLeft]; | ||
− | Vous pouvez définir la distance | + | </syntaxhighlight> |
− | + | Vous pouvez définir la distance par l'intermédiaire des propriétés d'espacement de bordure: | |
+ | <syntaxhighlight lang=pascal> Edit1.BorderSpacing.Left:=10;</syntaxhighlight> | ||
La chose même peut être fait avec la méthode : | La chose même peut être fait avec la méthode : | ||
− | + | <syntaxhighlight lang=pascal> Edit1.AnchorToNeighbour(akLeft,10,Label1);</syntaxhighlight> | |
==Notes== | ==Notes== | ||
− | Edit1.Left suivra Label1.Left Label1.Width, pas les | + | 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. |
− | Cela signifie, que le déplacement du Label1 déplacera Edit1. | ||
− | Mais le déplacement de Edit1 sera défait par la LCL. | ||
− | Si vous ancrez également le | ||
− | vous avez créé un cercle, et ceci peut résulter | ||
=Exemple 2= | =Exemple 2= | ||
− | Vous pouvez ancrer le côté supérieur du Edit pour suivre le côté supérieur du Label: | + | Vous pouvez ancrer le côté supérieur du contrôle Edit pour suivre le côté supérieur du Label: |
<pre> | <pre> | ||
+--------+ +-------+ | +--------+ +-------+ | ||
Line 41: | Line 34: | ||
+-------+ | +-------+ | ||
</pre> | </pre> | ||
− | < | + | <syntaxhighlight lang=pascal> |
Edit1.AnchorSide[akTop].Side:=asrTop; | Edit1.AnchorSide[akTop].Side:=asrTop; | ||
Edit1.AnchorSide[akTop].Control:=Label1; | Edit1.AnchorSide[akTop].Control:=Label1; | ||
Edit1.Anchors:=Edit1.Anchors+[akTop]; | Edit1.Anchors:=Edit1.Anchors+[akTop]; | ||
− | </ | + | </syntaxhighlight> |
La même chose peut être fait avec la méthode: | La même chose peut être fait avec la méthode: | ||
− | < | + | <syntaxhighlight lang=pascal>Edit1.AnchorParallel(akTop,0,Label1);</syntaxhighlight> |
=Exemple 3= | =Exemple 3= | ||
Line 59: | Line 52: | ||
+-------+ | +-------+ | ||
</pre> | </pre> | ||
− | < | + | <syntaxhighlight lang=pascal> |
Edit1.AnchorSide[akTop].Side:=asrCenter; | Edit1.AnchorSide[akTop].Side:=asrCenter; | ||
Edit1.AnchorSide[akTop].Control:=Label1; | Edit1.AnchorSide[akTop].Control:=Label1; | ||
Edit1.Anchors:=Edit1.Anchors+[akTop]-[akBottom]; | Edit1.Anchors:=Edit1.Anchors+[akTop]-[akBottom]; | ||
− | </ | + | </syntaxhighlight> |
La même chose peut être fait avec la méthode: | La même chose peut être fait avec la méthode: | ||
− | < | + | <syntaxhighlight lang=pascal>Edit1.AnchorVerticalCenterTo(Label1);</syntaxhighlight> |
− | Evidemment Ancrer le côté inférieur du Edit1 | + | Evidemment, Ancrer le côté inférieur du Edit1 n'a pas de sens avec le centrage. |
=Nouvelle propriété= | =Nouvelle propriété= | ||
− | < | + | <syntaxhighlight lang=pascal>property AnchorSide[Kind: TAnchorKind]: TAnchorSide read GetAnchorSide;</syntaxhighlight> |
− | + | Cette propriété n'est pas édité dans l'[http://wiki.lazarus.freepascal.org/IDE_Window:_Object_Inspector/fr inspecteur d' objets]. Vous pouvez l'éditer dans le concepteur par l'intermédiaire de l'éditeur d'ancres (Menu: Voir -> Afficher l'[http://wiki.lazarus.freepascal.org/IDE_Window:_Anchor_Editor/fr éditeur d'ancres], ou cliquez sur le bouton de propriété 'Anchors'). | |
− | |||
− | =Nouvelles méthodes pour configurer facilement des dispositions ( | + | =Nouvelles méthodes pour configurer facilement des dispositions (de contrôles) communes= |
− | < | + | <syntaxhighlight lang=pascal> |
procedure AnchorToNeighbour(Side: TAnchorKind; Space: integer; | procedure AnchorToNeighbour(Side: TAnchorKind; Space: integer; | ||
Sibling: TControl); | Sibling: TControl); | ||
Line 82: | Line 74: | ||
procedure AnchorHorizontalCenterTo(Sibling: TControl); | procedure AnchorHorizontalCenterTo(Sibling: TControl); | ||
procedure AnchorVerticalCenterTo(Sibling: TControl); | procedure AnchorVerticalCenterTo(Sibling: TControl); | ||
− | </ | + | </syntaxhighlight> |
+ | |||
+ | =See also= | ||
+ | |||
+ | *[[Autosize / Layout]] | ||
+ | *[[Example: Anchors. How to reliably align dynamically created controls under changing visibility]] |
Latest revision as of 08:11, 9 February 2020
│
Deutsch (de) │
English (en) │
français (fr) │
日本語 (ja) │
русский (ru) │
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
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:
Edit1.BorderSpacing.Left:=10;
La chose même peut être fait avec la méthode :
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:
+--------+ +-------+ | Label1 | | Edit1 | +--------+ | | +-------+
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:
Edit1.AnchorParallel(akTop,0,Label1);
Exemple 3
Centrage du Label verticalement au Edit:
+-------+ +--------+ | | | Label1 | | Edit1 | +--------+ | | +-------+
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:
Edit1.AnchorVerticalCenterTo(Label1);
Evidemment, Ancrer le côté inférieur du Edit1 n'a pas de sens avec le centrage.
Nouvelle propriété
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
procedure AnchorToNeighbour(Side: TAnchorKind; Space: integer;
Sibling: TControl);
procedure AnchorParallel(Side: TAnchorKind; Space: integer;
Sibling: TControl);
procedure AnchorHorizontalCenterTo(Sibling: TControl);
procedure AnchorVerticalCenterTo(Sibling: TControl);