Monday, December 03, 2007

WIN32OLE Le retour :-)

Je viens de découvrir une méthode de classe très intéressante, surtout qu'elle appartient à la classe WIN32OLE. Il s'agit de la méthode

WIN32OLE::const_load( ole_object, module_or_class )
Vous souvenez-vous du code de mon précédent article ? J'avais défini un ensemble de constantes hiérarchisées à l'aide de modules.
module Word 
  module PageSetup
    module Orientation
      Portrait = 0
      Landscape = 1
    end
  end
  .....
end
En découvrant cette méthode, j'ai pû refactoriser mon code, afin de le rendre plus lisible et d'utiliser directement les constantes définies par la couche OLE. Voici donc, un peu de refactorisation de mon précédent code.
# Définition d'un module qui va servir à agréger les différentes constantes 
# qui sont définie dans le composant OLE de Word.
module Word
end

begin
    word = WIN32OLE.new( "Word.Application" )
    # Lé méthode WIN32OLE::const_load charge les différentes constantes 
    # qui peuvent être chargées depuis l'instance Word.
    # De cette manière, il n'est pas nécessaire que je crée un ensemble 
    # de constantes pour représenter toutes les valeus possibles.
    WIN32OLE.const_load( word, Word )

    document = word.Documents.Add()
    document.PageSetup.PaperSize = Word::WdPaperA4
    document.PageSetup.Orientation = Word::WdOrientLandscape
ensure
    word.Quit()
end
Je vous donne un avis, je n'ai pas pû complètement la documentation lors de l'article précédent, ce qui m'a fait perdre du temps. Un conseil, lisez les exemples, la documentation et tout ce qui peut aider. Références

No comments: