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
|

Positionnement des morphs : Layout et compagnie

Frédéric Ferrère-2
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: Positionnement des morphs : Layout et compagnie

Hilaire Fernandes-5
En ajoutant listSpacing: #equal; ça peut aider, mais tu n'as pas la bordure

Hilaire



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: Positionnement des morphs : Layout et compagnie

Alain Plantec
In reply to this post by Frédéric Ferrère-2
Bonjour Frédéric,
Sur le fond, a ma connaissance il n'y a pas d'autre solution.
voici une version peut-etre un peu simplifiée mais qui ne change pas
grand chose.

 | contener rect1 rect2 rect3 vide |
   contener := AlignmentMorph new <-- TableLayout par défaut
            color: Color black;
             layoutInset: 0; <-- espace bords intérieurs
             hResizing: #shrinkWrap;   <-- si tu veux que la dim
horizontale soit calculée à partir du contenu
             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.
   vide := (RectangleMorph new extent: 50@20) color: Color transparent.
   contener addMorph:  vide;
        addMorph:  rect1 ;
          addMorph: (vide veryDeepCopy ) ;
          addMorph: rect2;
          addMorph: (vide veryDeepCopy) ;
          addMorph: rect3;
          addMorph: (vide veryDeepCopy) ;
          openInWorld.


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