Re: Positionnement des morphs : Layout et compagnie

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: Positionnement des morphs : Layout et compagnie

Alain Plantec
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
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Reply | Threaded
Open this post in threaded view
|

RE : Re: Positionnement des morphs : Layout et compagnie

Dreyfuss Pierre-André (EDUM)

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: [hidden email] 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
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr

_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Reply | Threaded
Open this post in threaded view
|

Re: Re: Positionnement des morphs : Layout et compagnie

Frédéric Ferrère-2
In reply to this post by Alain Plantec
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 mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr