Mittwoch, 21. November 2007

Welche WORD-Version liegt auf dem aktuellen System vor? / Which version of Word is installed on the current system?

Mit jeder Word-Version stehen neue Funktionen für die OLE-Automation zur Verfügung oder das Interface wurde in Kleinigkeiten modifiziert. 

Somit ist es nicht ausreichend, dem Anwender mitzuteilen, dass für bestimmte Funktionen der eigenen Software einfach nur Word installiert sein muss. 

Vielmehr sollten wir als Entwickler dafür Sorge tragen, dass unsere Software auf die verschiedenen Versionen mit individuellen Klassen reagiert. 

Zumindest muss jedoch eine Mitteilung an den Anwender erfolgen, dass u.U. eine neuere Version benötigt wird.
 
FUNCTION LoadWord
    LOCAL liVersion as Integer, lcMsg as String
    liVersion = 0

    * Für diese Demo dem _Screen-Objekt eine Property hinzufügen
    * in der anschliessend das OLE-Objekt abgelegt wird
    IF !PEMSTATUS(_screen,[oWord],5)
        _screen.AddProperty([oWord])
    ENDIF

    * Jetzt versuchen wir eine Instanziierung von Word
    TRY
        _screen.oWord = CREATEOBJECT([Word.Application])
    CATCH
        TEXT TO lcMsg TEXTMERGE NOSHOW PRETEXT 3
            Anscheinend ist Word nicht auf Ihrem Rechner installiert.
            Diese Anwendung wird jedoch benötigt um fortzufahren.
        ENDTEXT
        MESSAGEBOX(lcMsg,0+64+0,[Programminformation])
    ENDTRY

    * Wenn es das Wordobjekt gibt, dann gehts weiter mit der Versionsprüfung
    IF VARTYPE(_screen.oWord) = [O]
        WITH _screen.oWord
         
            IF INLIST(ALLTRIM(.version), [9.0], [10.0], [11.0], [12.0])
                liVersion = INT(VAL(.Version))
            ELSE
                * Office 97 und älter wird nicht mehr unterstützt
                TEXT TO lcMsg TEXTMERGE NOSHOW PRETEXT 3
                    Auf Ihrem Rechner muss Word 2000 oder höher installiert sein,
                    damit die gewünschte Funktionalität bereitgestellt werden kann.
                ENDTEXT
                MESSAGEBOX(lcMsg,0+64+0,[Programminformation])
                .Quit()
             
            ENDIF

        ENDWITH
    ENDIF

    RETURN liVersion
ENDFUNC

Keine Kommentare:

Kommentar veröffentlichen