[Squeak-fr] Re: [TableLayout] Peut-on faire des tableaux avec ce Layout ?

ALR alr.dev at free.fr
Mar 30 Sep 21:27:28 CEST 2003


Salut

(Chantal) la désous  un bout de code si ca peut t'aider  :o)
Mets le ds un wokspace, selectionne en entier (C-A)  et évalues.

Le TableLayout ne peut pas garantir la même taille pour toutes les lignes,
le layout
proportionnel est mieux pour cela.

Est cequ'y a qqu'un qui a écrit-refléchit-..??##**..- sur un layout plus
sioux, style gridbalyout de java (mais en + simple :-))
qui éviterait d'imbriquer douze millions de layouts et morphs pour faire un
écran de saisie à 10 champs?


cordialement,
Alain



| t |
" le morph principal rectangulaire, arrangé avec un tablelayout de haut vers
le bas.
le resizing est #spaceFill pour occuper tt l'espace du morph"
t _ RectangleMorph new beTransparent ; borderWidth: 0;
 layoutPolicy: TableLayout new; hResizing: #spaceFill; vResizing:
#spaceFill;
 listDirection: #topToBottom ; cellPositioning: #topLeft ; extent:200 at 150.

"Ajouter 4 lignes"
1 to: 4 do: [ :l | | r |

 "la ligne est un morph arrangé avec un layout proportionel, les cellules
seront
 ajoutées avec un LayoutFrame qui indiquera la position ds la ligne : 1/4 en
largeur, 1 en hauteur"
 r _ RectangleMorph new beTransparent ;  borderWidth: 0;
   layoutPolicy: ProportionalLayout new ;
   hResizing: #spaceFill ; vResizing: #spaceFill.

 " ajout de la ligne au tableau"
 t addMorphBack: r.

 " ajout de 4 cellules à la ligne"
 1 to: 4 do: [ :c | | cell text string |

  " la cellule a un layout proportionnel pour pouvoir centrer le texte (tip
NedKonz)"
  cell _ RectangleMorph new borderWidth: 1 ; layoutPolicy:
ProportionalLayout new ;
       borderStyle: (BorderStyle raised width: 2).
  string _ ''.
  (l = 1 and: [ c = 1 ]) ifTrue: [ string _ 'x'].
  (l = 1 and: [ c > 1 ]) ifTrue: [ string _ 'e', c asString ].
  (l > 1 and: [ c = 1 ]) ifTrue: [ string _ 'e', (l + 2) asString ].
  text _ StringMorph new contents: string.

  " le textmorph est ajouté à la cellule, centré en lui donnant un offset
égal à la moité
  de la largeur et hauteur du texte"
  cell addMorph: text fullFrame: (LayoutFrame new leftFraction: 0.5 offset:
text width // -2 ;
          topFraction: 0.5 offset: text height // -2 ).

  "Ajoute la cellule à la ligne, occupe 1/4 (0.25) de largeur de la ligne et
hauteur 1 (100%)"
  r addMorph: cell fullFrame: (LayoutFrame fractions: (c-1*0.25 at 0 extent:
0.25 at 1)).
 ].
].

t openInWorld.


"Alexandre Benoit"
<alexandre.benoit13 at wanadoo.fr> a écrit dans le
message de news: 3F71EE21.1060501 at wanadoo.fr...
>     Bonjour,
> Je sais utiliser TableLayout pour aligner verticalement ou
> horizontalement des Morphs.
> Mais est-il possible de créer un tableau de Morph autrement qu'en
> alignant verticalement des Morphs qui sont eux-mêmes des alignements
> horizontaux de Morph ?
> Je pose la question par ce que pour moi ça revient pas au même. J'essaye
> de coder un jeu de logigramme où l'écran est divisé en trois parties.
> 1) Une matrice de cases noires ou blanches.
> 2) Une zone d'énoncé au dessus de la matrice avec un énoncé pour chaque
> colonne.
> 3) Une zone d'énoncé à gauche de la matrice avec un énoncé par ligne.
> Les problèmes c'est qu'il faut mettre les énoncés bien en regard avec la
> matrice. En plus en haut à gauche il y a une zone vide qui décale tout.
> Schéma :
> =======
> Vide e1 e2 e3
>     e4  x    x    x
>     e5  x    x    x
>     e6  x    x    x
> Si je fais un alignement vertical d'alignements horizontaux j'aurai du
> mal à faire coïncidé e1 e2 et e3 avec leurs colonnes respectives.
> Si je fais un alignement horizontal d'alignements verticaux j'aurai du
> mal à faire coïncidé e4 e5 et e6 avec leurs lignes respectives.
>
> Avez-vous une suggestion à me faire ?
> Remarque j'ai pas envie d'utiliser un truc rigide avec placement "à la
> main" des sous Morphs comme dans MinesBoard>>adjustTiles par ce que ça
> supprime la possibilité de tout redimensionné en redimensionnant le
> Morph par exemple à l'aide du halo.
> Peut-être ma solution c'est le ProportionnalLayout, mais je connais pas
> bien ce Layout les tutoriaux parlent surtout de l'autre.
>
> Merci de vos suggestions





Plus d'informations sur la liste de diffusion Squeak-fr