Gestion fine des evenements sur un classeur CALC

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 !
YL92
Fraîchement OOthentifié
Messages : 1
Inscription : 19 juil. 2007 18:10
Localisation : Nanterre

Gestion fine des evenements sur un classeur CALC

Message par YL92 »

Bonjour,
j'ai mis en place un écouteur (LISTENER) d'évenements sur un classeur CALC ce qui declenche le message "Changement"
- lorsque le contenu d'une cellule a été modifiée
- lorsqu'une feuille a été ajoutée, renommée, supprimer

je voudrais déclencher des macros en fonction du type d'evenement qui se produit ( ajout ou suppression de feuilles, modif de cellule, etc..). L'utilisation de XRAY sur l'objet 'evenement' dans la procédure Pys_Modified n'est pas d'un grand secours, il y a trop de paramètres, propriétés,etc..
Comment faire ? D'avance merci pour le coup de main.

voici le code actuel

Code : Tout sélectionner

REM  *****  BASIC  *****
global PysClass as Object
global PysListener as Object
'-----------------------------------------------------
Sub PysListenersAdd
	PysClass= thisComponent
	PysListener = CreateUnoListener( "Pys_", "com.sun.star.util.XModifyListener" )   
	PysClass.AddModifyListener(PysListener)
	Msgbox("ajout listener")
End Sub
'-------------------------------------------------------
Sub PysListenersRemove
   	PysClass.RemoveModifyListener(PysListener)
End Sub

'---------------------------------------------------------
Sub Pys_Modified(oEvent)

	Msgbox("changement")
	XRAY(oEvent.Source)
end sub

'---------------------------------------------------------------
Sub Pys_Disposing
End Sub
2.2.1 sous Windows XP edition familiale
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12838
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Message par Bidouille »

Bonjour,

Afin que cette section soit le plus clair possible, il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate.

Merci de lire ce fil pour savoir quelle balise utilisée :
http://user.services.openoffice.org/fr/ ... html#27295

N'oubliez pas que le terme "Macro" ou "OpenOffice" ne doit pas être employé car il est implicite.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Message par bm92 »

Bonjour,
Dans la doc de Xray, on dit qu'il ne remplace pas une bonne connaissance de l'API OpenOffice. En voici l'illustration.

Le ModifyListener est un listener très général, puisqu'il existe pour tout document OOo et concerne toute modif de ce document, par exemple ajouter un caractère dans une macro du document à travers l'EDI!
La source de l'évènement oEvent.Source est tout simplement le document lui-même. Cela ne donne aucune information sur la cause, donc à mon avis on ne peut rien en faire.

Il faut que tu étudies la documentation de l'API :
- chapitre Calc du Developer's Guide
- les descriptions IDL concernant un document Calc: rechercher les X.....Listener dans la liste des interfaces des modules plus spécifiques.

Dans com.sun.star.document on trouve le XEventListener.
Dans com.sun.star.sheet on trouve 4 listeners.
Suivre les liens pour chacun pour voir quels évènements ils couvrent.
Ensuite il faut utiliser (avec compétence) une des méthodes add....Listener du document ou de la feuille.

Ne t'attends pas à pouvoir gérer finement tout évènement.

Bonne lecture.
______
Bernard