[Résolu] [Base] Gestionnaires d'événements

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 !
Robert92500
Membre OOrganisé
Membre OOrganisé
Messages : 70
Inscription : 08 avr. 2022 15:02

[Résolu] [Base] Gestionnaires d'événements

Message par Robert92500 »

Bonjour,

En lisant https://help.libreoffice.org/latest/fr/ ... ASIC#N0664, j'ai l'impression qu'il existe un moyen de capter les événements directement au niveau du script par la mise en place d'exceptions.

Nota: J'ai rien comprise à l'article et les exemples mais ce qui laisse croire que c'est possible, c'est la présence de la phrase suivante dans l'article "Comme prévu, la méthode manquante onOkHasFocus lève une exception."

Si vous avez une idée sur la manière de faire et un exemple pour illustrer comment capter un événement directement au niveau du script sans avoir besoin de le définir au niveau du formulaire ce serait sympa de nous en faire profiter.

Merci d'avance.
Dernière modification par Robert92500 le 25 juin 2022 15:21, modifié 1 fois.
LibreOffice 7.3.5.2 / OS MAC 12.5 puce M1/ Java Temuruin 1.8.0_332
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Gestionnaires d'événements

Message par Dude »

Salut,
Robert92500 a écrit : 08 juin 2022 10:11 j'ai l'impression qu'il existe un moyen de capter les événements directement au niveau du script par la mise en place d'exceptions
Problème XY
Explique nous dans quel cas tu as besoin d'utiliser ces évènements et à quel niveau.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Robert92500
Membre OOrganisé
Membre OOrganisé
Messages : 70
Inscription : 08 avr. 2022 15:02

Re: [Base] Gestionnaires d'événements

Message par Robert92500 »

Bonjour,

S'il est possible de capter les événements, il ne sera peut-être pas utile de déclarer les événements au niveau des formulaires et des contrôles.
tout sera visible dans le code.
LibreOffice 7.3.5.2 / OS MAC 12.5 puce M1/ Java Temuruin 1.8.0_332
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Base] Gestionnaires d'événements

Message par jeanmi2403 »

Bonjour,
Cet article est visiblement traduit du germano-anglais par quelqu'un qui n'y comprend pas grand chose (Comme moi, par exemple...). Il se réfère à une boîte de dialogue de la bibliothèque Access2Base qui n'est pas décrite ici.
Le code mériterait d'être désossé et analysé pour mieux l'appréhender, et il nécessite une (très) bonne connaissance de l'API.
En gros, il faudrait le réécrire et le documenter pas à pas.
J'avais signalé le problème sur quelques articles de l'aide qui n'aident pas vraiment.
Pour travailler là-dessus il faut bien comprendre la gestion des Listeners (auditeurs) .
Et ne pas craindre de perdre du temps. Utiliser les événements est moins centralisé, mais beaucoup plus rapide.
Ensuite, tout est un problème de documentation pour le suivi et la maintenance.
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Gestionnaires d'événements

Message par Dude »

jeanmi2403 a écrit : 22 juin 2022 14:04 la bibliothèque Access2Base qui n'est pas décrite ici.
Ce n'est pas une bibliothèque mais une extension pour faciliter la transition depuis MS-Access.
Elle a simplement été embarquée dans LibreOffice.
Robert92500 a écrit : 22 juin 2022 11:52 tout sera visible dans le code
Je ne comprends pas. Tu dois brancher de toute façon l'événement sur une macro.
Explique toi mieux avec un exemple concret.
Robert92500
Membre OOrganisé
Membre OOrganisé
Messages : 70
Inscription : 08 avr. 2022 15:02

Re: [Base] Gestionnaires d'événements

Message par Robert92500 »

Bonjour,

J'ai ouvert le sujet pour voir s'il y a un interêt à utiliser des déclencheurs pour tout regrouper dans une libraire.

Mon objectif en ouvrant le sujet était de voir si on pouvant faire plus simple que je processus actuel:
- pour trouver quels sont les événements avec macro , il faut ouvrir tous les contrôles un par un.
- coté développement, pleins de clics pour trouver la macro à affecter à l'événement,
- copier coller impossible dans de la processus d'affectation des macros du contrôle ou formulaire, etc
- impossible d'appeler les macros avec des paramètres ce qui oblige la création d'une macro qui appelle une macro paramètrable (si on veut faire du code non redondant)

imaginons un formulaire avec plusieurs contrôles de même type, par exemple liste1, liste2, etc... Si on veut capter l'événement "changement de valeur" on doit créer la macro pour chaque contrôle et ensuite aller dans le formulaire et affecter la macro à l'événement voulu.

Dans la libraire du formulaire on trouvera quelque chose du genre :

Code : Tout sélectionner

sub ChangementValeurListe1(event)
   ChangementValeurList(event,"nomListe")
end sub

 sub ChangementValeurListe2(event)
   ChangementValeurList(event,"nomListe")
end sub

sub ChangementValeurListe2(event, nonListe as string)
     ....
end sub

------
imaginons qu'il existe la possibilité de déclarer des déclencheurs plus besoin de déclarer l'appel de l'événement au niveau du contrôle.
La consultation de la libraire permettra de voir tout de suite qu'il y a deux événements à traiter

Le code pourrait ressembler à ça

Code : Tout sélectionner

sub declencheurMagique()
si event = modif liste1  alors appelle ChangementValeurListe2(event, nonListe)
si event = modif liste1  alors appelle ChangementValeurListe2(event, nonListe)
end sub

sub ChangementValeurListe2(event, nonListe as string)
     .... ici le code dédié aux événements des listes .... 
end sub
Dernière modification par Don Corleone le 23 juin 2022 12:24, modifié 1 fois.
Raison : Utilisez les balises [code][/code] pour l'encadrer et faciliter la lecture. Merci.
LibreOffice 7.3.5.2 / OS MAC 12.5 puce M1/ Java Temuruin 1.8.0_332
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Gestionnaires d'événements

Message par Dude »

Robert92500 a écrit : 23 juin 2022 12:11 on doit créer la macro pour chaque contrôle et ensuite aller dans le formulaire et affecter la macro à l'événement voulu
Tu devrais te servir de XRay.
Tu verrais qu'il suffit d'interroger ton objet event pour voir qu'avec les propriétés source.model.name, on récupère le nom du contrôle "zone de liste".
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Base] Gestionnaires d'événements

Message par joel275 »

Bonjour,
tu peux aussi consulter ce fil:https://forum.openoffice.org/fr/forum/v ... hp?t=57773 où tout cela est expliqué.
A plus.
A jour de LibreOffice et de Ubuntu
Robert92500
Membre OOrganisé
Membre OOrganisé
Messages : 70
Inscription : 08 avr. 2022 15:02

Re: [Base] Gestionnaires d'événements

Message par Robert92500 »

Merci à vous deux
Je vais regarder ça avec attention.
c'était vraiment un problème dans base, on ne peux pas faire comme dans calc. impossible de voir les propriétés et les méthodes des objets qu'on veut utiliser quand on code.
LibreOffice 7.3.5.2 / OS MAC 12.5 puce M1/ Java Temuruin 1.8.0_332
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 13:54

Re: [Base] Gestionnaires d'événements

Message par LibreOfficiant »

Bonjour,

Pour information : Il est de possible de télécharger les fichiers exemples pour LibreOffice de la page d'aide citée plus haut.

La référence à la Gestion d'évènements de dialogue mentionnée ci-dessus est l'approche à privilégier dans le cas précis de cette question.
jeanmi2403 a écrit : 22 juin 2022 14:04 Bonjour,
Cet article est visiblement traduit du germano-anglais par quelqu'un qui n'y comprend pas grand chose (Comme moi, par exemple...). Il se réfère à une boîte de dialogue de la bibliothèque Access2Base qui n'est pas décrite ici.
Le code mériterait d'être désossé et analysé pour mieux l'appréhender, et il nécessite une (très) bonne connaissance de l'API.
En gros, il faudrait le réécrire et le documenter pas à pas.
J'avais signalé le problème sur quelques articles de l'aide qui n'aident pas vraiment.
Pour travailler là-dessus il faut bien comprendre la gestion des Listeners (auditeurs) .
Et ne pas craindre de perdre du temps. Utiliser les événements est moins centralisé, mais beaucoup plus rapide.
Ensuite, tout est un problème de documentation pour le suivi et la maintenance.
Cordialement,
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Gestionnaires d'événements

Message par Dude »

Robert92500 a écrit : 23 juin 2022 15:00 c'était vraiment un problème dans base, on ne peux pas faire comme dans calc. impossible de voir les propriétés et les méthodes des objets qu'on veut utiliser quand on code.
:shock: L'éditeur Basic est identique dans tous les modules.
Peux-tu nous faire une copie écran de Calc où tu vois cette différence ?
Robert92500
Membre OOrganisé
Membre OOrganisé
Messages : 70
Inscription : 08 avr. 2022 15:02

Re: [Base] Gestionnaires d'événements

Message par Robert92500 »

Dude a écrit : 24 juin 2022 06:00 :shock: L'éditeur Basic est identique dans tous les modules.
Peux-tu nous faire une copie écran de Calc où tu vois cette différence ?
Capture d’écran 2022-06-24 à 08.09.58.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 24 juin 2022 06:54, modifié 1 fois.
Raison : Réduction de la citation
LibreOffice 7.3.5.2 / OS MAC 12.5 puce M1/ Java Temuruin 1.8.0_332
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Base] Gestionnaires d'événements

Message par jeanmi2403 »

Bonjour.
L'écran Développeur n'est pas disponible dans Base.
Je trouve qu'il affiche trop d'informations parasites.
Je préfère utiliser Xray, son affichage me semble plus clair, question d'habitude.
Bonne journée.
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Robert92500
Membre OOrganisé
Membre OOrganisé
Messages : 70
Inscription : 08 avr. 2022 15:02

Re: [Base] Gestionnaires d'événements

Message par Robert92500 »

jeanmi2403 a écrit : 24 juin 2022 10:10 Je préfère utiliser Xray, son affichage me semble plus clair, question d'habitude.
Bonjour Jean Michel,
J'aimerai bien pouvoir faire fonctionner Xray sur mon Mac mais c'est un autre sujet:
https://forum.openoffice.org/fr/forum/v ... ead#unread
LibreOffice 7.3.5.2 / OS MAC 12.5 puce M1/ Java Temuruin 1.8.0_332
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Gestionnaires d'événements

Message par Dude »

Robert92500 a écrit : 23 juin 2022 12:11 Si on veut capter l'événement
Dans tous les cas, la réponse est de récupérer l'évènement et d'en faire l'introspection via XRay.

Merci d'ajouter [Résolu].