[Calc] paramètre évènement de feuille

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 !
jlf
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 07 févr. 2009 17:30

[Calc] paramètre évènement de feuille

Message par jlf »

bonjour

j'ai du mal à trouver des infos sur le paramètres passé par Libo à un évènement de feuille "sélection modifiée"
si je branche ce code et que je clique sur une cellule :

Code : Tout sélectionner

Sub onSelChange(oEvt)
if (not isEmpty(oEvt)) and (not isNull(oEvt)) then
xray oevt
else
msgbox "vide !"
endif
end sub
sur click souris il y a 4 déclenchements de l'évenement, je n'ai pas vraiment compris la logique de l'enchainement
mais en tous cas sur ce fil :
https://forum.openoffice.org/fr/forum/v ... n+modifiee
il est indiqué que le param passé est un range de sélection

or ca ne semble pas toujours le cas car xRay plante chez moi (en 7.05, j'essaierai demain en 6.3) sur le 4ème appel, le param doit être "spécial" ?
si quelqu'un avait des infos ce serait super
merci d'avance

edit : même chose avec libo 6.2.7.1, une propriété non définie
mais xRay est touffu, pas évident à debugger, et il peut y avoir plein d'autres cas que celui la
s'il y avait une doc sur les params d'évènements feuille ça serait quand même plus secure :o(
LibreOffice 6.3 (boulot) et 7.0.5.2 (perso) Windows 10
jlf
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 07 févr. 2009 17:30

Re: [Calc] paramètre évènement de feuille

Message par jlf »

Bonjour, je reviens sur les évènements de feuille et leurs paramètres :

je me suis rendu compte que si je mets dans la proc branchée sur l'évènement un traitement un peu long, alors les actions après ce traitement sont exécutées dans un ordre différent de celui des appels

par ex soit le pseudo code suivant agissant sur 3 zones de listes zdl1 à 3 et un No d'appel stocké dans un compteur, tous 4 sur la feuille :

Code : Tout sélectionner

sub onEvtFeuille(oEvt)

	NoAppel = compteur.spinValue + 1
	compteur.spinValue = noAppel
	
	zdl1.insertItemText(index=0, NoAppel)

	zdl2.EffaceRemplit(LongueListeDynamique)

	zdl3.insertItemText(index=0, NoAppel)

	end sub
je branche cette sub sur "selection modifiée" de la feuille, et je maintiens enfoncée un certain temps une des flèches de direction pour changer de cellules plus vite que le traitement ne s'exécute

à l'autopsie :
- zdl1 présente ses items dans l'ordre d'appel
- zdl2 présente au mieux une liste issue d'un appel antérieur au dernier, et parfois des mélanges ?!
- zdl3 présente ses items dans le désordre, le dernier appel n'est quasi jamais inséré en dernier

zdl2 explique peut-êttre par les chevauchements de mémoire qu'elle laisse supposer les pbms de paramètres
de manière générale, sauf erreur dans mon code, ça compromet la fiabilité des évènements feuille dès lors que la durée de 1 traitement est plus grande que celle de plusieurs actions successives de l'user

si je remplit zdl2 avec un tableau déclaré global ça va mieux, pas observé de liste différente zdl2 de celle du dernier appel pour l'instant mais j'ai pas testé beaucoup et bien sûr pour zdl3 ça change rien

ci joint un ods reproduisant le pbm
bon je loupe peut-être quelque chose, je sais pas, mais tout ça est ennuyeux, qu'en pensez vous ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.3 (boulot) et 7.0.5.2 (perso) Windows 10
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 951
Inscription : 19 août 2018 05:20

Re: [Calc] paramètre évènement de feuille

Message par Dolev »

Bonjour,
jlf a écrit :mais tout ça est ennuyeux, qu'en pensez vous ?
J'en pense qu'il faudrait sans doute préciser le but final de cette écoute d'événement "contenu modifié".
Si les traitements sont trop longs, il y a l'instruction Wait pour pauser.
Open Office 4.1.15 sous Windows 11