[Résolu][Calc] Affecter un évènement à plusieurs contrôles

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 !
ericguer1
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 17 oct. 2012 08:59

[Résolu][Calc] Affecter un évènement à plusieurs contrôles

Message par ericguer1 »

Bonjour,
Je souhaiterai affecter un évènement par macro à un nombre important de contrôles de formulaires. Je ne trouve pas l'emplacement des macros affectées dans l'onglet "évènements" dans Xray pour pouvoir ainsi créer une boucle.
Je trouve étrange aussi le fait de ne pas pouvoir affecter manuellement un évènement à plusieurs contrôles de formulaires...
Quelqu'un peut il m'éclairer ?
Bien à tous
Libre Office v3.6.2.2 sous Windows7
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Calc] Affecter un évènement pour plusieurs contrôles

Message par joel275 »

Bonjour,

j'ai retrouvé dans mes archives du code créé par Alain de la Chaume:

Code : Tout sélectionner

'************************************************************ 19/01/09
'***   Affectation d'une macro à un bouton
'*********************************************************************
sub affectMacroBouton(oForm as object, index as long)
dim oEvent as new com.sun.star.script.ScriptEventDescriptor
dim struct

	struct = oForm.getScriptEvents(index)
	if (ubound(struct) > -1) then
		' Supprimer l'assignation au script
		oForm.revokeScriptEvents(index)
	end if
	
	oEvent.ListenerType = "com.sun.star.awt.XActionListener"
	oEvent.EventMethod = "actionPerformed"
	oEvent.ScriptType = "StarBasic"
	oEvent.ScriptCode = "document:Standard.aMain.macroPourBouton"
	
	oForm.registerScriptEvent(index, oEvent)
end sub
Je n'arrive pas à retrouver où il se trouve sur le forum.
 Ajout : Je l'ai retrouvé dans les suprêmes de code:

[Basic] Barre de menus : ajout, suppression http://forum.openoffice.org/fr/forum/vi ... 15&t=17005 
J'espère que cela répondra à ta question
Dernière modification par joel275 le 01 nov. 2012 08:52, modifié 1 fois.
A jour de LibreOffice et de Ubuntu
ericguer1
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 17 oct. 2012 08:59

Re: [Résolu][Calc] Affecter un évènement pour plusieurs

Message par ericguer1 »

Merci pour cette base qui m'a servi à mettre en place la boucle suivante...je commence un peu à comprendre les macros après 1 semaine de pratique

Code : Tout sélectionner

Sub Assigner_macro_controle(oForm as object, index as long)
dim oEvent as new com.sun.star.script.ScriptEventDescriptor
dim struct()
   if (ubound(struct) > -1) then
       Supprimer l'assignation au script
      oForm.revokeScriptEvents(index)
 end if

   oEvent.ListenerType = "com.sun.star.awt.XActionListener"
   oEvent.EventMethod = "actionPerformed"
   oEvent.ScriptType = "StarBasic"
   oEvent.ScriptCode = "Standard.Module1.Actions_buttonradio_au_click"
 
   oForm.registerScriptEvent(index, oEvent)
end sub

Sub Assigner_macro_plusieurs_controles
	dim monCtrl as Object, monDoc as Object, maFeuille as Object, monForm as Object, monDP as Object, i as long, nb_ctrl as long
	monDoc = thisComponent
	maFeuille = monDoc.sheets.getByName("Ctrl fonctionnement")
	monDP = maFeuille.drawpage
	monForm = monDP.Forms.getByName("Standard")
	nb_ctrl= monForm.count
	For i= 0 to nb_ctrl-1
	Assigner_macro_controle (monForm,i)
	next i
end sub
Encore merci !!
Libre Office v3.6.2.2 sous Windows7