mercredi 29 décembre 2010

Pagination alternée avec Microsoft Word 2007

Comment faire pour avoir un super document super top classe avec des numérotations différentes en fonction, par exemple, que l'on soit dans la table des matières et dans le reste du document avec Word 2007 ? Le principe qui permet cela se base sur les sections. La stratégie consiste à définir des sections différentes en fonction de la numérotation à utiliser. C'est bien beau de parler de sections et compagnie mais comment le faire en pratique ?

Le contexte :

Le document sur lequel nous travaillerons se compose de cette manière :
  • 1 page de garde
  • 1 page blanche
  • La table des matières
  • 1 page blanche
  • Le contenu du document 
Nous aimerions avoir une numérotation en chiffres romains sur la table des matières et une numérotation en chiffres arabes dans le document. Evidemment, la page de garde et les pages blanches ne doivent pas être numérotée et la première page du contenu du document doit commencer la numérotation (commencer à 1)

La solution :
Afin de différencier les zones de numérotations, il est nécessaire de définir des sections. Dans notre cas, il est nécessaire d'avoir 4 sections. Nous allons en mettre 5 afin d'avoir une section propre à la page de garde :
  1. Page de garde : pas de numérotation
  2. Première page blanche : pas de numérotation
  3. Table des matières : numérotation en chiffre romain
  4. Page blanche : pas de numérotation
  5. Contenu : numérotation en chiffres arabes.
La mise en place de sections se fait via l'onglet "Page Layout" en cliquant sur le bouton "breaks"(sauts en français). L'image ci dessous indique la positions du boutons "Breaks"(cliquer sur l'image pour agrandir)


 Les pages étant déja définies, nous plaçons des sauts de sections de type "Next Page" car la numérotation travaille par page. On place donc nos 5 sauts de sections aux endroits adéquats. Maintenant, nous pouvons définir nos différentes numérotations.

En double cliquant sur le dessus d'une page (ou en dessous), le mode footer/header de Word s'affiche. Ce mode permet d'éditer les entêtes et les pieds de pages. Pour quitter ce mode il suffit de double cliquer sur le milieu d'une page.

Si vos sauts de sections sont bien définis, vous devriez voir les 5 sections et la dernière sections (le contenu du document) sera marquée comme étant la 5ieme. Sur la capture ci-dessous, il est noté au niveau de l'entête : "Header - Section 5" ce qui indique bien que le contenu du document se trouve dans la 5ieme section.

Il vous suffit, alors, de vous déplacer de sections en sections pour rajouter la numérotation de page via le bouton "Page Number" de l'onglet "Header & Footer Tools" :
Les options proposées permettent de rajouter la numérotation a différents endroits de la page. Il permet également de définir le format de la numérotation (Format Page Numbers) et de supprimer la numérotation (Remove Page Number).

La numérotation recommence à 1 dans chacune des sections. Si il est nécessaire de ne pas réinitialiser le compteur de pages, il vous suffit de le spécifier dans les options du format de la numérotation  (Format Page Numbers)

Par défaut, la numérotation utilise les chiffres usuels (chiffres arabes). Pour changer le type de numérotation, il est également nécessaire de passer par les options du format de la numérotation  (Format Page Numbers)



Et hop un document top classe avec une numérotation correcte !

Les sections ne servent pas uniquement à définir une numérotation différentes. Elles permettent de définir des zones ou la mise en page est différente, par exemple, lorsque l'on souhaite avoir une page dans son document qui est horizontale(landscape) au lieu de verticale. Les autres versions de Word se basent sur le même principe même si les accès à ces options sont différents. Pour plus d'informations, chercher le mot clé "section" dans l'aide de Microsoft Word.

mercredi 22 décembre 2010

Assurer l'unicité d'un process

Certaines applications nécessitent qu'une seule instance à la fois soit exécutée sur une machine. Il existe sans doute d'autres stratégies pour réaliser cette unicité, mais une méthode assez simple consiste à utiliser un Mutex (Mutual Exclusion).

La classe Mutex du .NET framework se trouve dans le namespace System.Threading. Ce namespace contient d'autres composants tel que des sémaphores ou des moniteurs.

La technique consiste tenter de créer un mutex et d'essayer d'avoir le mutex. Si on arrive pas à l'avoir c'est qu'il est pris par un autre processus. Le mutex étant nommé, c'est qu'une autre instance de l'application est en train de s’exécuter.

La première exécution va créer le mutex et l'acquérir. Lorsque l'application se termine, elle relâche le mutex. Si on démarre simultanément plusieurs applications, la première obtiendra le mutex, les autres seront bloqués pendant 1000 ms lors de l'appel à la fonction WaitOne qui retournera faux car la première instance aura le mutex. Une fois l'application terminée, le mutex est relâché et une autre instance de l'application peut récupérer le mutex et s'exécuter.

Initialisation statique en C# (constructeur statique)

Une variable statique peut-être initialisée de la même manière qu'une variable de classe directement lors de sa déclaration. L'instanciation de la variable se fera alors automatiquement :


Cependant, il est parfois nécessaire de réaliser une instantiation plus complexe qui n'est pas possible en une seule commande. Il existe en C# l'équivalent du bloc static Java : Le constructeur statique.

La constructeur statique se déclare comme un constructeur sauf qu'il a le mot clé static qui le précède. Dedans, vous pouvez y instancier ou modifier tout ce qui est statique.

Ci dessous, un exemple de programme appelant ces 2 variables statiques avec le résultat de l'exécution du programme pour montrer que ca marche !