Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
En pratique : Professional Page - numéroter automatiquement plusieurs pages
(Article écrit par Marcel Duruflé et extrait d'Amiga News - juin 1994)
|
|
La fois dernière, nous avons vu comment dater
une lettre en cliquant sur un Genie, et comment numéroter une page quelconque de votre
document sous Pro Page. Nous allons poursuivre notre chemin en essayant de voir comment
numéroter automatiquement toutes les pages de votre document.
Pour rappel, nous avions concocté le programme permettant de dater une lettre.
Pour numéroter une page, il nous suffisait de changer la ligne d'insertion du
texte :
call TextIntoBox(newbox,' à Toulouse, le 18/07/1991')
|
En...
call ppm_TextIntoBox(newbox,'1')
|
...pour pouvoir numéroter tout le document, nous allons avoir besoin de trois commandes
supplémentaires : PageDebut=ppm_DocFirstPage(), PageFin=ppm_DocLastPage() et
Page=ppm_GotoPage([page]).
La commande ppm_DocFirstPage(), comme son nom l'indique, donne
le numéro de la première page. c'est-à-dire 1 et 0, si le document ne possède
aucune page. ppm_DocLastPage() indique la dernière page du document
et ppm_GotoPage([page] va à la page indiquée entre crochets, c'est-à-dire
que cette page indiquée s'a s'afficher à l'écran et devenir la page où vous
allez travailler. Nous allons donc taper les lignes suivantes :
PageDebut=ppm_DocFirstPage()
PageFin=ppm_DocLastPage()
if pageDebut=0 then exit_msg('Il n'y a pas de pages: document vide!')
do pageCourante=PageDebut to PageFin
page=ppm_GotoPage(pageCourante)
/* lignes action à insérer */
end
/* ligne à mettre à la fin
|
Où allons-nous insérer ces lignes ? Entre la dernière ligne du commentaire
"Départ module Date" qui est "/* --- */" et la ligne "ancienne_ancienne_fonte=ppm_GetFont()".
La ligne "do "pageCourante=PageDebut to PageFin"" doit arriver avant "ancienne_fonte=ppm_GetFont()".
La ligne "end" doit être mise avant la ligne de commentaire "fin module Date", de telle
manière que la ligne action soit les lignes nécessaires à la création d'une boîte
et l'insertion du numéro de page. Voir listing n°2. Sauvez le programme sous le nom
"Numéroter.pages.pprx" dans le répertoire où sont tous les Genies. Logiquement, vous
ne devriez pas avoir de problèmes.
Choix des pages fin et début
Mais peut-être n'aimeriez-vous numéroter qu'un certain bloc de pages, par exemple
la page 6 à la page 120, les autres pages servant aux notices, sommaire, bibliographie,
index, auxquelles vous désireriez donner une autre numérotation. Pour cela, nous aurons
besoin de la commande form=ppm_GetForm(Titre, Longueur, lignes).
Cette commande permet à l'utilisateur d'entrer des valeurs, autant qu'il le désire, et
de les récupérer pour le programme. "Titre" est un texte qui s'inscrit dans la barre
de la fenêtre de requête qui s'affiche. "Longueur" est la largeur des gadget-chaînes où
vous inscrivez vos données, il s'exprime en nombre de caractères. "Lignes" est une
chaîne de caractères qui est composée comme suit : texte1 <CR>
texte2 <CR> texte3 <CR>...
Exemple :
PageDebut=1
PageFin=12
lignes="PageDébut :" PageDebut cr " Page de Fin: "PageFin
form=ppm_GetForm("Choix Pages à numéroter: ",15,lignes)
|
La commande "GetForm" affichera une fenêtre de requête
avec un texte-barre "Choix Pages à numéroter: " et deux
lignes libellées " PageDébut :" et " Page de Fin: " et
les variables 1 et 12 s'afficheront dans les gadgets correspondants.
Nous allons à la lumière de cette commande réécrire les dernières lignes
comme suit :
PageDebut=ppm_DocFirstPage()
PageFin=ppm_DocLastPage()
if pageDebut=0 then exit_msg('Il n'y a pas de pages: document vide!')
/* lignes ajoutées -> */
lignes="PageDébut :" PageDebut cr " Page de Fin: "PageFin
form=ppm_GetForm("Choix Pages à numéroter: ",15,lignes)
parse var form Page1 '0a'x Page2
if form=" then exit_msg()
do numeroPage= Page1 to Page2
...
|
Nous avons remplacé dans la boucle "numero-Page" le départ par Page1
et la fin par Page2. D'où le listing n°3. Attention, ne pas mettre de
"é" dans une variable ARexx. ARexx ne prend que l'alphabet américain.
Variantes possibles
La numérotation des pages se fait soit en chiffres romains majuscules ("XIV"),
soit en chiffres romains minuscules ("xiv"), soit en chiffres arabes ("14").
Pour choisir le type de numérotation, changez "63" en "LXIII" ou "lxiii".
En prenant "63", vous avez l'option par défaut.
Conclusion
Vous avez certainement apprécié le confort d'utilisation apporté par ces
quelques lignes supplémentaires. Dites-vous bien qu'il est possible de programmer
d'autres petits modules très efficaces sans avoir besoin de transcrire des dizaines
de lignes, l'important étant d'utiliser la commande ad hoc. La fois prochaine, nous
allons voir comment grouper ces modules de numérotation de page et de datation en un
macro-module qui d'un seul clic vous permettra de choisir le module que vous désirez.
|