Comment déclencher l'appel d'une fonction passée en paramètre ? (callback)
Exemple :
- Code: Tout sélectionner AgrandirRéduire
Sub Fonc1(sVal as String)
sVal = "Toto"
End Sub
Sub Fonc2(pFunc as ???)
dim sText as String
pFunc(sText)
End Sub
Sub Main()
Fonc2(Fonc1)
End Sub
Un lien qui parle de ce sujet :
viewtopic.php?f=8&t=17509
- Code: Tout sélectionner AgrandirRéduire
sub callByName(sFonction as string ,aParams as variant)
dim oDS as object 'objet dispatch helper utilisé pour le call de la sub
dim sURL as string 'string qui contient l'URL de la fonction a appeler
on error goto CallByName_error
'initilisation objet dispatchhelper
oDS = createUnoService("com.sun.star.frame.DispatchHelper")
'initialisation de l'URL du script Basic a appeler : Standard,CallByName."+sFonction+"?language=Basic&location=document
'le script est dans la bibliothèque Standard du document contenant les macro
'le script a appeler est dans le module CallByName
'le nom du script basic a appeller est dans la variable sFonction
sURL = "vnd.sun.star.script:Standard."+getModule(sFonction)+"."+sFonction+"?language=Basic&location=document"
'appel du script
oDS.executeDispatch(ThisComponent.CurrentController.frame,sURL,"",0,aParams())
exit sub
CallByName_error:
on error resume next
msgbox "erreur dans la procédure CallByName"
on error goto 0
end sub
'détermine le module basice de la bibliothèque standard qui contient la sub à exécuter
'-------------------------------------------------------------------------------------
function getModule(sFunction as string) as string
CONST LibraryName = "Standard"
dim oLib as object 'objet libarie Standard
dim aModules() 'tableau de tous les modules de la librairie Standard
dim iC as Integer 'indice de boucle
dim sModule 'le module à analyser (texte basic)
on error goto getModule_error
oLib = BasicLibraries.getByName( LibraryName ) 'initialise l'objet librarie
getModule = ""
aModules = oLib.getElementNames() 'initialise le tableau qui contient tous les modules
for iC = 0 to ubound(aModules) 'pour chacun des modules
sModule = oLib.getByName(aModules(iC)) 'charge le contenu texte du module dans la variable Smodule
if RegExpFind(sModule, sFunction) <> "-1" then
getModule = aModules(iC)
exit function
end if
next iC
exit function
getModule_error:
on error resume next
msgbox "erreur dans la procédure getModule"
on error goto 0
end function


