Comme avec n'importe quelle fenêtre de votre PC, il est possible d'agrandir ou de réduire la taille de la fenêtre de votre pile, en tirant sur le point bas droit de la fenêtre.
À cette action LiveCode envoie un message "resizeStack". Il vous faut donc mettre dans chaque carte un :
on resizeStack
end resizeStack
Il faudra aussi récupérer la nouvelle taille de la fenêtre par :
put width of this card into largeur
put height of this card into hauteur
Et appliquer ces nouvelles valeurs, par exemple avec la commande location ou rectangle etc...
on resizeStack
put height of this stack into hauteur
put width of this stack into largeur
set location of "Back" to largeur-20, hauteur-20
--rectangle c'est left, top, right, bottom
set rectangle of button "Utility" to 180, hauteur-30, 220, hauteur-10
end resizeStack
Nous étudierons les propriétés de placement dans un autre chapitre. Les principaux sont location et rectangle. Location donne la position du milieu de l'objet. Rectangle donne les quatre points cardinaux de l'objet.
En mettant le script resizeStack au niveau carte, il faudrait dupliquer le code des backgrounds dans chaque carte. C'est faisable. Mais, fastidieux en cas de modification.
Pour cela, nous mettrons au niveau de la carte que les objets locaux à redimensionner et pour les objets backgrounds nous terminerons le script par la commande "pass resizeStack".
on resizeStack
put width of this card into largeur
put height of this card into hauteur
-- Commande pour local field, button
pass resizeStack -- for common bg field .....
end resizeStack
Et nous mettrons un nouveau script resizeStack au niveau supérieur, mais, attention il y a un piège si il y a des sub-stacks, ils sont dans le chemin d'accès des messages.
Le chemin des messages est : objets, background, sub-stack, stack principal.
Donc, le resizeStack d'une carte de la pile principale passe par le niveau sub-stack. Confusion avec le resizeStack de la sub-stack. Il n'y a pas d'erreur de généré. Le script s'arrête ne trouvant pas les objets, sans que vous sachiez pourquoi.
Pour éviter cela, il y a deux solutions :
if the short name of this stack is not "sub-stack-name"
then pass resizeStack
else traitement resize sub-stack
Téléchargez la pile initTuto
Cette pile ne contient que deux cartes. la première carte est la carte de contrôle de la pile et la deuxième carte la carte "Template".
La carte "Template" ne contient que des backgrounds. Elle ne doit pas être modifiée et sert comme son nom l'indique comme base pour créer des nouvelles cartes.
on resizeStack
put width of this card into Largeur
put height of this card into Hauteur
-- for card1 local field, button
set the rectangle of card field "versionText" to 55, 0, Largeur - 50, Hauteur
-- Bouton administrateur
set location of card button "show working" to ((Largeur/2)-60), Hauteur-15
set location of card button "Create Card" to 80 , Hauteur-15
pass resizeStack -- for common bg field Next, .....
end resizeStack
Les boutons administrateurs "show working", "Create Card" sont rendus visibles par Cd+clic sur le bouton "help".
Il n'y a que le "pass resizeStack" puisque les objets sont tous des backgrounds. C'est juste un squelette pour les futures cartes de votre future application.
on resizeStack
put width of this card into Largeur
put height of this card into Hauteur
-- for cardX local field, button
pass resizeStack -- for common bg field Next, .....
end resizeStack
Je l'ai mis dans un background invisible appelé "commonScript".
Utilisez "Project Browser" pour le voir.
on resizeStack
put width of this card into Largeur
put height of this card into Hauteur
-- Bg common to all cards
set bottomLeft of bg image "Previous" to 0, Hauteur -- left, bottom
set bottomRight of bg image "Next" to Largeur, Hauteur -- right, bottom
set bottomRight of bg button "Back" to Largeur, Hauteur-30 -- right, bottom
set location of bg field "cardNum" to Largeur/2, Hauteur-10 -- right, bottom
set topLeft of bg field "cardNb" to 0 , 0 -- left, top
set the location of bg field "Title" to Largeur/2, 20
set topRight of bg image "help" to Largeur, 0 -- right, top
set the rectangle of bg field "helpText" to 55, 0, Largeur - 40, Hauteur
set topRight of bg field "dba" to Largeur,33 -- left, top
end resizeStack
il n'a pas de "pass resizeStack " en dernière ligne. Il ne faut surtout pas passer le message, sinon il irai aux sub-stacks.
"cardNum" est le numéro de la carte.
"cardNb" est le nombre total de cartes dans la pile.
Un clic sur le bouton "help" donne de l'aide.
Un ctrl+clic sur le bouton "help" visualise les boutons d'administration. En particulier "Create card" pour à partir du template de créer une nouvelle carte avec un nouveau nom.
Le champ version donne la version et la liste des modifications.
Je vous laisse quelques temps à manipuler cette pile pour avancer dans vos connaissances.