[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