[Basic] (dés)activer par programme les "démons"

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
jlescudie
Fraîchement OOthentifié
Messages : 6
Inscription : 15 nov. 2009 11:32

[Basic] (dés)activer par programme les "démons"

Message par jlescudie »

Le modérateur a écrit : :alerte: Avant de poster une nouvelle question, il serait agréable que vous clôturiez le(s) fil(s) précédemment initié(s) : http://user.services.openoffice.org/fr/ ... =egosearch
Notamment en ajoutant la balise [Résolu] si c'est le cas, suivez ce sujet pour savoir comment procéder : http://user.services.openoffice.org/fr/ ... c3299.html

C'est une question de politesse pour les gens qui vous ont répondu et consacré bénévolement de leur temps. Notre forum est plus lisible avec ce balisage comme vous avez pu vous en rendre compte en le parcourant.

Merci de votre collaboration
Bonjour,
J'aimerais pouvoir activer ou désactiver par programme (et non par l'interface graphique) un script lancé sur un évènement d'un formulaire ou d'un contrôle.
L'en-tête de la routine pourrait ressembler à cela :

Code : Tout sélectionner

Sub controleDemon(source as Object, evt as String, activer as Boolean) 
où source serait l'objet portant l'évènement (formulaire ou contrôle), evt un code désignant l'évènement (du genre "onLoad"), et activer indiquerait si l'on veut activer ou désactiver le lancement de la routine associée lorsque l'évènement survient.
Quelqu'un peut-il m'indiquer une piste à explorer, un fragment de tuto, voire un exemple proche ?
Merci.
Dernière modification par Don Corleone le 31 oct. 2010 08:48, modifié 1 fois.
OpenOffice 3.1 sous Ubuntu 9.10
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: [Basic] (dés)activer par programme les "démons"

Message par Pierre-Yves Samyn »

Bonjour

Activer/désactiver sans supprimer je n'ai jamais fait... ni cherché :)

Ci-joint un exemple de manipulation produisant le même résultat : ajout/suppression du script associé à l'événement Exécuter l'action du bouton nommé "Test2"

Code : Tout sélectionner

const PysNomCtrl = "Test2"	

sub PysSupprimerAction

dim PysForm as object
dim PysElementNames as object
dim PysIndex as long

' Chargement de la bibliotheque Tools car utilisation de la fonctions IndexinArray 
GlobalScope.BasicLibraries.LoadLibrary("Tools")

PysForm = thiscomponent.sheets.getByName("Feuille1").drawPage.forms.getByName("Navigation")
PysElementNames =  PysForm.ElementNames

PysIndex = IndexinArray(PysNomCtrl, PysElementNames)
PysForm.revokeScriptEvent ( PysIndex , "XActionListener", "actionPerformed", "" )

end sub


Sub PysAjouterAction

dim PysForm as object
dim PysElementNames as object
dim PysEvent as new com.sun.star.script.ScriptEventDescriptor

dim PysIndex as long

' Chargement de la bibliotheque Tools car utilisation de la fonction IndexinArray
GlobalScope.BasicLibraries.LoadLibrary("Tools")

PysForm = thiscomponent.sheets.getByName("Feuille1").drawPage.forms.getByName("Navigation")
PysElementNames =  PysForm.ElementNames
PysIndex = IndexinArray(PysNomCtrl, PysElementNames)

PysEvent.ListenerType = "com.sun.star.awt.XActionListener"
PysEvent.EventMethod =  "actionPerformed"
PysEvent.ScriptType = "StarBasic"
PysEvent.ScriptCode = "document:Standard.Module1.PysTestDeux"

PysForm.registerScriptEvent(PysIndex, PysEvent)

End Sub

Sub PysTest
print "ok"
end sub

Sub PysTestDeux
print "okDeux"
end sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.