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
Salut
j'avoue que je suis nul en morph. Par contre il y a un projet sur BobSuperSwki qui contient un tres bon tutorial sur les TableLayout. L'as-t regarde?
Stef
On Mercredi, sep 24, 2003, at 21:18 Europe/Zurich, Alexandre Benoit wrote:
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.
- Une matrice de cases noires ou blanches.
- 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
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
Salut
j'avoue que je suis nul en morph. Par contre il y a un projet sur BobSuperSwki qui contient un tres bon tutorial sur les TableLayout. L'as-t regarde?
Oui ce tutoriel est vraiment bien. Faire un google Bob's SuperSwiki puis une fois sur le Swiki faire search: "TableLayout". Adresse: http://209.143.91.36/super/70 En fait le TableLayout porte mal son nom je trouve par ce qu'il ne permet pas vraiment de faire des tables. Il gère des lignes ou des colonnes avec passage à la ligne si il manque de place. En gros ça résoud pas vraiment mon problème.
Je vais donc utiliser ce que propose Julien à savoir utiliser #rigid comme le fait par exemple Mines ou SameGame.
Toujours à propos des Layouts, j'ai résolu seul un problème et donc je donne le problème et la solution : Problème : le halo est plus petit que mon Morph avec tous ses sous Morphs. Solution : le initialize du Morph doit contenir self layoutPolicy: TableLayout new. self vResizing: #shrinkWrap. self hResizing: #shrinkWrap. Ceci revient à mettre un Layout pour le Morph et à lui dire de contenir ses enfants. Ainsi le halo qui est je suppose à la taille du Morph du haut de l'arborescence des Morphs est bien positionné.
Alexandre
Merci
c'est important e partager les solutions. Une fois que ton jeux fonctionne cela serait chouette que tu l'envoies que l'on regarde cela ou qu'onle garde comme exemple
Stef (Programmeur VisualWorks au boulot et Squeak la nuit :))
On Vendredi, sep 26, 2003, at 20:46 Europe/Zurich, Alexandre Benoit wrote:
Salut
j'avoue que je suis nul en morph. Par contre il y a un projet sur BobSuperSwki qui contient un tres bon tutorial sur les TableLayout. L'as-t regarde?
Oui ce tutoriel est vraiment bien. Faire un google Bob's SuperSwiki puis une fois sur le Swiki faire search: "TableLayout". Adresse: http://209.143.91.36/super/70 En fait le TableLayout porte mal son nom je trouve par ce qu'il ne permet pas vraiment de faire des tables. Il gère des lignes ou des colonnes avec passage à la ligne si il manque de place. En gros ça résoud pas vraiment mon problème.
Je vais donc utiliser ce que propose Julien à savoir utiliser #rigid comme le fait par exemple Mines ou SameGame.
Toujours à propos des Layouts, j'ai résolu seul un problème et donc je donne le problème et la solution : Problème : le halo est plus petit que mon Morph avec tous ses sous Morphs. Solution : le initialize du Morph doit contenir self layoutPolicy: TableLayout new. self vResizing: #shrinkWrap. self hResizing: #shrinkWrap. Ceci revient à mettre un Layout pour le Morph et à lui dire de contenir ses enfants. Ainsi le halo qui est je suppose à la taille du Morph du haut de l'arborescence des Morphs est bien positionné.
Alexandre
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
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@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@0 extent: 0.25@1)). ]. ].
t openInWorld.
"Alexandre Benoit" alexandre.benoit13@wanadoo.fr a écrit dans le message de news: 3F71EE21.1060501@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.
- Une matrice de cases noires ou blanches.
- 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
salut alain
as-tu regarde le package (en cours) nomme Brick developpe par todd blanchar? Il a un modele inspire de NextStep. Je n'ai jamais joue avec.
Stef
On Mardi, sep 30, 2003, at 20:27 Europe/Zurich, ALR wrote:
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@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@0 extent: 0.25@1)). ]. ].
t openInWorld.
"Alexandre Benoit" alexandre.benoit13@wanadoo.fr a écrit dans le message de news: 3F71EE21.1060501@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.
- Une matrice de cases noires ou blanches.
- 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
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
salut
je viens de jeter un oeil, et ca a l'aie interessant.
je suis assez d'accord avec le début : "... I simply couldn't ... predictably control layout of morphs...." : entre les evénements layoutChanged, les changements de focus, les paramèters divers (autofit, autowrap etc) + les imbrications de morphs et de layout, c'est pas trop étanche tout ca... par exple ds un écran j'ai un champ qui fait de la saisie à l'envers, mais pas toujours - on va dire 3 fois sur 4- et pas s'il remplit entièrement son morph parent (et j'ai essayé un paquet de combinaisons de layout, resizing rigid, shrinkwrap etc). apparemmetn le curseur se remet au début du champ lors du layout, à cause de ??? qui entrainerait une perte (temporaire) de focus... bref pas très pratique hein.
merci pour le tuyau
A+
"ducasse" ducasse@iam.unibe.ch a écrit dans le message de news: D1903E08-F376-11D7-A767-000A9573EAE2@iam.unibe.ch... salut alain
as-tu regarde le package (en cours) nomme Brick developpe par todd blanchar? Il a un modele inspire de NextStep. Je n'ai jamais joue avec.
Stef
On Mardi, sep 30, 2003, at 20:27 Europe/Zurich, ALR wrote:
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@
"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@
extent: 0.25@)). ]. ].
t openInWorld.
"Alexandre Benoit" alexandre.benoit139ZsbGIQGT5GWvitb5QawA@public.gmane.org a écrit dans le message de news: 3F71EE21.10605019ZsbGIQGT40+RUStk7vmg@public.gmane.org
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.
- Une matrice de cases noires ou blanches.
- 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
Squeak-fr mailing list Squeak-frœ51WKytQuJI8mQ4nJOOf3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org http://lists.squeakfoundation.org/listinfo/squeak-fr
C'est clair Morph vu comme est monstrueux et que peu de gens font du fric avec Squeak ben c'est dans un etat pas trop mal je dirais.
Stef
On Mardi, sep 30, 2003, at 21:19 Europe/Zurich, ALR wrote:
salut
je viens de jeter un oeil, et ca a l'aie interessant.
je suis assez d'accord avec le début : "... I simply couldn't ... predictably control layout of morphs...." : entre les evénements layoutChanged, les changements de focus, les paramèters divers (autofit, autowrap etc) + les imbrications de morphs et de layout, c'est pas trop étanche tout ca... par exple ds un écran j'ai un champ qui fait de la saisie à l'envers, mais pas toujours - on va dire 3 fois sur 4- et pas s'il remplit entièrement son morph parent (et j'ai essayé un paquet de combinaisons de layout, resizing rigid, shrinkwrap etc). apparemmetn le curseur se remet au début du champ lors du layout, à cause de ??? qui entrainerait une perte (temporaire) de focus... bref pas très pratique hein.
merci pour le tuyau
A+
"ducasse" ducasse@iam.unibe.ch a écrit dans le message de news: D1903E08-F376-11D7-A767-000A9573EAE2@iam.unibe.ch... salut alain
as-tu regarde le package (en cours) nomme Brick developpe par todd blanchar? Il a un modele inspire de NextStep. Je n'ai jamais joue avec.
Stef
On Mardi, sep 30, 2003, at 20:27 Europe/Zurich, ALR wrote:
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@
"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@
extent: 0.25@)). ]. ].
t openInWorld.
"Alexandre Benoit" alexandre.benoit139ZsbGIQGT5GWvitb5QawA@public.gmane.org a écrit dans le message de news: 3F71EE21.10605019ZsbGIQGT40+RUStk7vmg@public.gmane.org
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.
- Une matrice de cases noires ou blanches.
- 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
Squeak-fr mailing list Squeak-fr½51WKytQuJI8mQ4nJOOf3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org http://lists.squeakfoundation.org/listinfo/squeak-fr
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
Alain il faut reporter les bugs dans la mailing-list c'est important. :)
Stef
On Mardi, sep 30, 2003, at 21:19 Europe/Zurich, ALR wrote:
salut
je viens de jeter un oeil, et ca a l'aie interessant.
je suis assez d'accord avec le début : "... I simply couldn't ... predictably control layout of morphs...." : entre les evénements layoutChanged, les changements de focus, les paramèters divers (autofit, autowrap etc) + les imbrications de morphs et de layout, c'est pas trop étanche tout ca... par exple ds un écran j'ai un champ qui fait de la saisie à l'envers, mais pas toujours - on va dire 3 fois sur 4- et pas s'il remplit entièrement son morph parent (et j'ai essayé un paquet de combinaisons de layout, resizing rigid, shrinkwrap etc). apparemmetn le curseur se remet au début du champ lors du layout, à cause de ??? qui entrainerait une perte (temporaire) de focus... bref pas très pratique hein.
merci pour le tuyau
A+
"ducasse" ducasse@iam.unibe.ch a écrit dans le message de news: D1903E08-F376-11D7-A767-000A9573EAE2@iam.unibe.ch... salut alain
as-tu regarde le package (en cours) nomme Brick developpe par todd blanchar? Il a un modele inspire de NextStep. Je n'ai jamais joue avec.
Stef
On Mardi, sep 30, 2003, at 20:27 Europe/Zurich, ALR wrote:
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@
"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@
extent: 0.25@)). ]. ].
t openInWorld.
"Alexandre Benoit" alexandre.benoit139ZsbGIQGT5GWvitb5QawA@public.gmane.org a écrit dans le message de news: 3F71EE21.10605019ZsbGIQGT40+RUStk7vmg@public.gmane.org
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.
- Une matrice de cases noires ou blanches.
- 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
Squeak-fr mailing list Squeak-fr½51WKytQuJI8mQ4nJOOf3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org http://lists.squeakfoundation.org/listinfo/squeak-fr
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
Le pb c'est que mon code est un peu tordu ( :-o ) et que je n'arrive pas à identifier clairement le pb. En fait le plus dur est de debugger ou tracer ce genre de chose (layoutchanged, focus) car il y a évidemment plein d'effets de bord, ne serait-ce qu'en utilisant le debugger, le transcript etc...
D'ailleurs (et je réponds en même tps à ton autre post), l'ensemble est d'un niveau impressionant, ca n'est pas moi qui dirait le contraire. Et il est clair que je ne le maitrise pas. Le fait que le Morph soit un peu 'fourre-tout' ne me gêne pas trop, et il a été pensé pour une utilisation + multi-média, donc il y a forcément des manques pour une autre utilisation.
"ducasse" ducasse@iam.unibe.ch a écrit dans le message de news: D3CF946E-F37E-11D7-A767-000A9573EAE2@iam.unibe.ch... Alain il faut reporter les bugs dans la mailing-list c'est important. :)
Stef
On Mardi, sep 30, 2003, at 21:19 Europe/Zurich, ALR wrote:
salut
je viens de jeter un oeil, et ca a l'aie interessant.
je suis assez d'accord avec le début : "... I simply couldn't ... predictably control layout of morphs...." : entre les evénements layoutChanged, les changements de focus, les paramèters divers (autofit, autowrap etc) + les imbrications de morphs et de layout, c'est pas trop étanche tout ca... par exple ds un écran j'ai un champ qui fait de la saisie à l'envers, mais pas toujours - on va dire 3 fois sur 4- et pas s'il remplit entièrement son morph parent (et j'ai essayé un paquet de combinaisons de layout, resizing rigid, shrinkwrap etc). apparemmetn le curseur se remet au début du champ lors du layout, à cause de ??? qui entrainerait une perte (temporaire) de focus... bref pas très pratique hein.
merci pour le tuyau
A+
"ducasse" ducasse.mivuzZTYAXXHkOk0aIfQ@public.gmane.org a écrit dans le message de news:
D1903E08-F376-11D7-A767-000A9573EAE2.mivuzZTYA0OjJJzJGcfA@public.gmane.org
salut alain
as-tu regarde le package (en cours) nomme Brick developpe par todd blanchar? Il a un modele inspire de NextStep. Je n'ai jamais joue avec.
Stef
On Mardi, sep 30, 2003, at 20:27 Europe/Zurich, ALR wrote:
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@
"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@
extent: 0.25@)). ]. ].
t openInWorld.
"Alexandre Benoit"
<alexandre.benoit139ZsbGIQGT5GWvitb5QawA=D5yJDbdMReXY1tMh2IBg@public.gmane.o rg> a écrit
dans le message de news:
3F71EE21.10605019ZsbGIQGT40+RUStk7vmg@s»œØJCñ
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.
- Une matrice de cases noires ou blanches.
- 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
Squeak-fr mailing list
Squeak-frœ51WKytQuJI8mQ4nJOOf3xJsTq8ys+cHZ5vskTnxNA=D5yJDbdMReXY1tMh2IBg@pub lic.gmane.org
Squeak-fr mailing list Squeak-frœ51WKytQuJI8mQ4nJOOf3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org http://lists.squeakfoundation.org/listinfo/squeak-fr
En relisant mon post je viens de me rendre compte le formatage est pas terrible et que certains bouts de code ont été un peu "traduits" par l'antispam gmane:
Remplacer _AT_ par le symbole qui va bien (le arobase)
... la 3 ou 4eme ligne listDirection: #topToBottom ; cellPositioning: #topLeft ; extent:200_AT_150.
... et vers la fin ... r addMorph: cell fullFrame: (LayoutFrame fractions: ( c - 1 * 0.25 _AT_ 0 extent: 0.25 _AT_ 1 )).
"ALR" alr.dev@free.fr a écrit dans le message de news: blchum$pov$1@sea.gmane.org...
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@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@0 extent:
0.25@1)). ]. ].
t openInWorld.
"Alexandre Benoit" alexandre.benoit13@wanadoo.fr a écrit dans
le
message de news: 3F71EE21.1060501@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.
- Une matrice de cases noires ou blanches.
- 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
---------------------------------------------------------------------------- ----
_______________________________________________ Squeak-fr mailing list Squeak-frœ51WKytQuJI8mQ4nJOOf3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org http://lists.squeakfoundation.org/listinfo/squeak-fr
En relisant mon post je viens de me rendre compte le formatage est pas terrible et que certains bouts de code ont été un peu "traduits" par l'antispam gmane:
Aucun problèmes pour moi un simple copié collé et ton code a fonctionné. Là ça devient une utilisation vraiment technique des Layout puisque tu mixes des TableLayout et des ProportionnalLayout. J'essaye de mettre une ellipse dans la case du miileu en faisant au milieu des deux boucles : (l = 3 and: [ c = 3 ]) ifTrue: [ cell := (EllipseMorph new) extent: 80@20 ] ifFalse: [ cell addMorph: text fullFrame: (LayoutFrame new leftFraction: 0.5 offset: text width // -2 ; topFraction: 0.5 offset: text height // -2 )].
Résultat la taille de l'ellipse est ignorée et elle priée de prendre la taille de la case. Pour contre le redimensionnement à l'aide de la poignée jaune fournie par le halo fonctionne très bien : les lignes et les colonnes forment toujours un tableau régulier.
Alexandre
J'ai ajouté ton code et effectivement, l'ellipse prend la taille de la case, mais c'est normal, vu qu'à la fin il y a: r addMorph: cell fullFrame: (LayoutFrame fractions: etc...) la cell (l'ellipse ds ce cas) est dimensionnée à la taille de la grille.
En fait, il faut ajouter l'ellipse à la 'cell', de la même façon que pour le texte, et non faire 'cell :=...'
(l = 3 and: [ c = 3 ]) ifTrue: [ e := (EllipseMorph new) extent: 20@20. cell addMorph: e fullFrame: (LayoutFrame new leftFraction: 0.5 offset: e width // -2 ; topFraction: 0.5 offset: e height // -2 ). ] ifFalse: [ cell addMorph: text fullFrame: (LayoutFrame new leftFraction: 0.5 offset: text width // -2 ; topFraction: 0.5 offset: text height // -2 ). ].
squeak-fr@lists.squeakfoundation.org