[Résolu] Evénement sur modification du contenu d'une cellule
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre enthOOusiaste
- Messages : 482
- Inscription : 20 mars 2006 15:15
- Localisation : Paris
[Résolu] Evénement sur modification du contenu d'une cellule
Je cherche à intercepter le changement de contenu d'une cellule qui contient une liste de validité...
J'ai pensé à PropertiesChangeListener, mais je n'arrive pas à paramétrer correctement...
cris59
J'ai pensé à PropertiesChangeListener, mais je n'arrive pas à paramétrer correctement...
cris59
Dernière modification par cris59 le 29 avr. 2006 08:22, modifié 2 fois.
-
- IdOOle de la suite
- Messages : 25602
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Par contenu d'une cellule, tu parles de Calc ?
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Améliorez AOO et votez pour les issues
-
- IdOOle de la suite
- Messages : 25602
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Une interception de touche peut être :
Code : Tout sélectionner
Sub RegisterKeyHandler
Doc = ThisComponent.getCurrentController
oKeyHandler = createUnoListener("MyApp_", "com.sun.star.awt.XKeyHandler")
Doc.addKeyHandler(oKeyHandler)
End Sub
Sub UnregisterKeyHandler
Doc.removeKeyHandler(oKeyHandler)
End Sub
Function MyApp_KeyPressed(oEvt) As Boolean
Doc = ThisComponent.getCurrentController
Cell = Doc.getselection()
MsgBox ("Code touche : " + oEvt.Keycode)
End Function
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Améliorez AOO et votez pour les issues
-
- ManitOOu
- Messages : 2562
- Inscription : 26 nov. 2005 13:42
-
- Membre enthOOusiaste
- Messages : 482
- Inscription : 20 mars 2006 15:15
- Localisation : Paris
-
- IdOOle de la suite
- Messages : 25602
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Code : Tout sélectionner
Sub LanceEcoute
dim document as object
oDoc = StarDesktop.CurrentComponent
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName("Feuille1")
oCell = oSheet.getCellRangeByName("A1")
oListener = CreateUnoListener( "LS_", "com.sun.star.chart.XChartDataChangeEventListener" )
oCell.addChartDataChangeEventListener(oListener)
MsgBox "Module d'écoute OK !"
End Sub
Sub LS_ChartDataChanged
oDoc = StarDesktop.CurrentComponent
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName("Feuille1")
oCell = oSheet.getCellRangeByName("A1")
MsgBox "A1 a changé"
End Sub
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Améliorez AOO et votez pour les issues
-
- Membre enthOOusiaste
- Messages : 482
- Inscription : 20 mars 2006 15:15
- Localisation : Paris
-
- IdOOle de la suite
- Messages : 25602
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Ca me le fait aussi chez moi. On dirait que l'info a dû mal à remonter au listener.cris59 a écrit :mais c'est relativement lent (1 grosse seconde entre le clic de sélection et l'affichage du message), c'est normal?
Pas d'autre idée pour le moment, désolé.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Améliorez AOO et votez pour les issues
-
- ManitOOu
- Messages : 2562
- Inscription : 26 nov. 2005 13:42
Trouvé
Il faut déclarer en Global non seulement l'objet Listener mais aussi l'objet cellule, afin de les récupérer pour fermer le listener.
Code : Tout sélectionner
Option Explicit
Global oListener as object, oCell as object
Sub LanceEcoute
dim oDoc as object, oSheets as object, oSheet as object
oDoc = thisComponent
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName("Feuille1")
oCell = oSheet.getCellRangeByName("C5")
oListener = CreateUnoListener( "LS_", "com.sun.star.util.XModifyListener" )
oCell.addModifyListener(oListener)
MsgBox "Module d'écoute ouvert !"
End Sub
Sub FermeEcoute
oCell.removeModifyListener(oListener)
MsgBox "Module d'écoute fermé !"
End Sub
Sub LS_modified(evt as object)
dim oCell as object
oCell = evt.Source
print oCell.Value, oCell.String
End Sub
Sub LS_disposing(evt as object)
' routine lancée à la fermeture du document
End Sub