Bonjour, je pense avoir trouvé mieux finalement, j'ai complété la FAQ sur ofset avec :
on peut utiliser Morph>>#layoutInset: et Morph>>#cellInset: : ces deux méthodes prennent un point en argument pour spécifier l'espace horizontal et vertical; #layoutInset: est pour l'espace intérieur du conteneur #cellInset: est pour l'espace intérieur entre les morphs contenus
| conteneur rect1 rect2 rect3 | conteneur := AlignmentMorph newRow color: Color black; layoutInset: 50 @ 0; cellInset: 50 @ 0; hResizing: #shrinkWrap; vResizing: #shrinkWrap. rect1 := RectangleMorph new extent: 50 @ 20; color: Color red. rect2 := RectangleMorph new extent: 50 @ 20; color: Color blue. rect3 := RectangleMorph new extent: 50 @ 20; color: Color green. conteneur addMorph: rect1 ; addMorph: rect2; addMorph: rect3; openInWorld.
C'est mieux car on évite l'utilisation d'un morph fantôme et c'est paramétrable en x et y. Il faut un morph conteneur avec un TableLayout.
alain
FERRERE Frédéric a écrit :
Bonjour,
Une petite question sur le positionnement des morphs.
Je souhaite placer 3 morphs en ligne dans un morph plus grand (un tableau à 3 colonnes), de telle sorte que l'espace entre les morphs et les bordures soient égaux.
La seule manière que j'ai trouvé pour réaliser ce placement est d'utiliser 4 morph "espace". Cette technique donne le résultat escompté mais existe t'il un moyen d'arriver au même résultat sans utiliser ces morphs supplémentaires ?
Merci.
| contener rect1 rect2 rect3 space1 space2 space3 space4 |
contener := Morph new extent: 300@300; color: Color black; layoutPolicy: (TableLayout new); listDirection: #leftToRight; listCentering: #justified; wrapCentering: #center. space1 := Morph new hResizing: #spaceFill; color: Color transparent. space2 := Morph new hResizing: #spaceFill; color: Color transparent. space3 := Morph new hResizing: #spaceFill; color: Color transparent. space4 := Morph new hResizing: #spaceFill; color: Color transparent. rect1 := RectangleMorph new extent: 50@20; color: Color red. rect2 := RectangleMorph new extent: 50@20; color: Color blue. rect3 := RectangleMorph new extent: 50@20; color: Color green. contener addMorph: space1; addMorph: rect1 ; addMorph: space2; addMorph: rect2; addMorph: space3; addMorph: rect3; addMorph: space4; openInWorld.
Cordialement,
-- Frédéric
Bonjour,
Il y a quelque jours je suis tombé sur un projet E-toy qui explique les menus de la disposition table, Je l'ai mis sur le superswiki après quelques modifications pour le rendre compatible, Curieusement il se charge mais provoquait des erreurs au moment de le sauver.
Voici l'adressse:
http://ofset.org:8000/super/165 Je pense le traduire, mais pas tout de suite
Amitiés
-------- Message d'origine-------- De: squeak-fr-bounces@lists.squeakfoundation.org de la part de Alain Plantec Date: ven. 21/07/2006 16:43 À: Squeak in french / Squeak en français Objet : [Squeak-fr] Re: Positionnement des morphs : Layout et compagnie
Bonjour, je pense avoir trouvé mieux finalement, j'ai complété la FAQ sur ofset avec :
on peut utiliser Morph>>#layoutInset: et Morph>>#cellInset: : ces deux méthodes prennent un point en argument pour spécifier l'espace horizontal et vertical; #layoutInset: est pour l'espace intérieur du conteneur #cellInset: est pour l'espace intérieur entre les morphs contenus
| conteneur rect1 rect2 rect3 | conteneur := AlignmentMorph newRow color: Color black; layoutInset: 50 @ 0; cellInset: 50 @ 0; hResizing: #shrinkWrap; vResizing: #shrinkWrap. rect1 := RectangleMorph new extent: 50 @ 20; color: Color red. rect2 := RectangleMorph new extent: 50 @ 20; color: Color blue. rect3 := RectangleMorph new extent: 50 @ 20; color: Color green. conteneur addMorph: rect1 ; addMorph: rect2; addMorph: rect3; openInWorld.
C'est mieux car on évite l'utilisation d'un morph fantôme et c'est paramétrable en x et y. Il faut un morph conteneur avec un TableLayout.
alain
FERRERE Frédéric a écrit :
Bonjour,
Une petite question sur le positionnement des morphs.
Je souhaite placer 3 morphs en ligne dans un morph plus grand (un tableau à 3 colonnes), de telle sorte que l'espace entre les morphs et les bordures soient égaux.
La seule manière que j'ai trouvé pour réaliser ce placement est d'utiliser 4 morph "espace". Cette technique donne le résultat escompté mais existe t'il un moyen d'arriver au même résultat sans utiliser ces morphs supplémentaires ?
Merci.
| contener rect1 rect2 rect3 space1 space2 space3 space4 |
contener := Morph new extent: 300@300; color: Color black; layoutPolicy: (TableLayout new); listDirection: #leftToRight; listCentering: #justified; wrapCentering: #center. space1 := Morph new hResizing: #spaceFill; color: Color transparent. space2 := Morph new hResizing: #spaceFill; color: Color transparent. space3 := Morph new hResizing: #spaceFill; color: Color transparent. space4 := Morph new hResizing: #spaceFill; color: Color transparent. rect1 := RectangleMorph new extent: 50@20; color: Color red. rect2 := RectangleMorph new extent: 50@20; color: Color blue. rect3 := RectangleMorph new extent: 50@20; color: Color green. contener addMorph: space1; addMorph: rect1 ; addMorph: space2; addMorph: rect2; addMorph: space3; addMorph: rect3; addMorph: space4; openInWorld.
Cordialement,
-- Frédéric
_______________________________________________ Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Alain Plantec a écrit :
Bonjour, je pense avoir trouvé mieux finalement, j'ai complété la FAQ sur ofset avec :
on peut utiliser Morph>>#layoutInset: et Morph>>#cellInset: : ces deux méthodes prennent un point en argument pour spécifier l'espace horizontal et vertical; #layoutInset: est pour l'espace intérieur du conteneur #cellInset: est pour l'espace intérieur entre les morphs contenus
| conteneur rect1 rect2 rect3 | conteneur := AlignmentMorph newRow color: Color black; layoutInset: 50 @ 0; cellInset: 50 @ 0; hResizing: #shrinkWrap; vResizing: #shrinkWrap. rect1 := RectangleMorph new extent: 50 @ 20; color: Color red. rect2 := RectangleMorph new extent: 50 @ 20; color: Color blue. rect3 := RectangleMorph new extent: 50 @ 20; color: Color green. conteneur addMorph: rect1 ; addMorph: rect2; addMorph: rect3; openInWorld.
C'est mieux car on évite l'utilisation d'un morph fantôme et c'est paramétrable en x et y. Il faut un morph conteneur avec un TableLayout.
alain
En effet, c'est plus "propre". Cependant, j'ai eu besoin de garder la technique des morphs fantomes car mon conteneur a une taille bien définie. En outre, la taille des morphs visibles est potentiellement modifiable ce qui implique de devoir changer le code pour adapter les valeurs de layoutInset et cellInset ; avec les morphs fantomes ce n'est pas nécessaire.
Cordialement, -- Frédéric
squeak-fr@lists.squeakfoundation.org