Exemples de correspondance entre Visual Basic et OXYGENE ++
Un exemple valant toujours mieux qu'un long discours, regardons l'exemple suivant.
Programme Visual Basic permettant d'afficher les noms de continents stockés dans le fichier Excel “\world.xls“ :
Dim shtContinent As Excel.Worksheet
On Error Resume Next ' Ignorer les erreurs
Set appWorld = GetObject(, "Excel.Application") 'Se rattacher à un Excel lancé
If Err.Number <> 0 Then 'Si Excel n'est pas lancé
Set appWorld = CreateObject("Excel.Application") 'le lancer
End If
Err.Clear ' Effacer l'objet Err si une erreur est apparue.
Set wbWorld = appWorld.Workbooks.Open("\world.xls")
' Parcourir la collection de pages :
For Each shtContinent In wbWorld.Sheets
MsgBox shtContinent.Name ‘Afficher les noms des continents
Next
Set shtContinent = Nothing ‘Effacer l'objet
‘ Forcer Excel à se décharger de la mémoire
‘ empêchant ainsi toute application de s'y connecter.
Set appWorld = Nothing
Set wbWorld = Nothing
Programme L4G correspondant :
VARIABLES : Double nombreDElements, i
Chaine nomContinent
CreerContexteComposantCom “Excel.Application“, “appWorld“
// Se rattacher à un Excel déjà lancé :
RattacherComposantCom “appWorld“
Si ErreurRendue = 1 Alors // Aucun Excel n'est lancé.
// Lancer une instance :
ConnecterComposantCom “appWorld“
FinSi
// Obtenir un objet (une interface) Workbook :
AppliquerMethodeComposantComGet “appWorld“.“Workbooks.Open“
(“wbWorld“, “\world.xls“)
// Parcourir la collection de pages :
// Commencer par obtenir le nombre d'éléments :
AppliquerMethodeComposantComGet “wbWorld“.“Sheets.Count“
(nombreDElements)
Pour i=1, i<nombreDElements Faire
// Obtenir le i-ème continent :
AppliquerMethodeComposantComGet “wbWorld“.“Sheets.Item“
(“shtContinent“, i)
AppliquerMethodeComposantComGet “shtContinent“.“Name“
(nomContinent)
BoiteMessage nomContinent //Afficher les noms des continents
FinPour
DeconnecterComposantCom “shtContinent“ //Effacer l'objet
// Forcer Excel à se décharger de la mémoire
// empêchant ainsi toute application de s'y connecter.
DeconnecterComposantCom “wbWorld“
DeconnecterComposantCom “appWorld“
L'exemple suivant montre l'équivalence L4G avec l'instruction “With“ de Visual Basic. Cette instruction permet de ne pas répéter plusieurs fois des appels de méthodes donnant accès à une interface.
Lancement d'un mailing client sous Word :
Programme Visual Basic :
. . .
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"maillingAgréés.xls", _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert :
AppliquerMethodeComposantCom "MON_DOC"."MailMerge.OpenDataSource"
("clients agréés.xls", ValeurCom("MON_DOC", "wdOpenFormatAuto"),
0, 0, -1, 0, "", "", 0, "", "", "Feuille de calcul entière", "", "")
AppliquerMethodeComposantCom "MON_DOC"."MailMerge.EditMainDocument"()
// Obtenir une connexion sur l'interface MailMerge :
AppliquerMethodeComposantComGet "MON_DOC"."MailMerge" ("MON_MAIL")
AppliquerMethodeComposantComSet "MON_MAIL"."Destination"
(ValeurCom("MON_MAIL", "wdSendToNewDocument"))
AppliquerMethodeComposantComSet "MON_MAIL"."MailAsAttachment" (0)
AppliquerMethodeComposantComSet "MON_MAIL"."MailAddressFieldName" ("")
AppliquerMethodeComposantComSet "MON_MAIL"."MailSubject" ("")
AppliquerMethodeComposantComSet "MON_MAIL"."SuppressBlankLines" (-1)
AppliquerMethodeComposantComSet "MON_MAIL"."DataSource.FirstRecord"
(ValeurCom("MON_MAIL", "wdDefaultFirstRecord"))
AppliquerMethodeComposantComSet "MON_MAIL"."DataSource.LastRecord"
(ValeurCom("MON_MAIL", "wdDefaultLastRecord"))
AppliquerMethodeComposantCom "MON_MAIL"."Execute" (-1)
Ainsi, il apparaît qu'une instruction With équivaut à définir un nouveau contexte en L4G. Ce contexte n'est pas créé à l'aide de l'instruction CreerContexteComposantCom, mais est renvoyé par l'appel d'une méthode du serveur COM, ici “MON_DOC“.“MailMerge“.
Toutefois, il n'est pas obligatoire de définir un contexte pour chaque With. Ainsi, il suffit de répéter “DataSource“ dans l'instruction AppliquerMethodeComposantComSet pour simuler le deuxième With.
Il est possible en L4G de simuler les emboîtements de With en définissant autant de contextes que nécessaire.
La dernière instruction montre que la valeur Vrai (True) vaut –1 lorsqu'on utilise COM.
La valeur Faux (False) vaut 0.