[Résolu][Basic] Gestion d'evenements dans un pseudo objet ?

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 !
gelinp
Membre OOrganisé
Membre OOrganisé
Messages : 58
Inscription : 12 mars 2011 20:40

[Résolu][Basic] Gestion d'evenements dans un pseudo objet ?

Message par gelinp »

Bonjour,

Il semblerait qu'en programmation (pseudo) objet il ne soit pas possible d'implémenter un controleur d'évenements... j'ai pourtant gardé en mémoire un exemple de code qui semblait montrer le contraire... Mais je ne le retrouve malheureusement pas...

Est ce que quelqu'un a une id'e sur le sujet ? peut etre n'est il pas possible de d'associer un évenement déclaré dans un gestionnaire de l'interface graphique mais qu'il serait tout de meme possible de le faire programmatiquement ... Ce serait tellement plus simple de pouvoir associer un controleur d'évenements a une méthode d'un pseudo objet ... Quelle est la ligne de route dans le développement de OOo Basic ou non éventuel replacement par python ? Est ge qu'avec Python il est déja possible d'associer un évenement OOo avec un objet ?

Merci par avance pour votre aide ...
Patrick

La modération vous a écrit: Merci de ne pas inventer et de respecter la syntaxe des balises : https://forum.openoffice.org/fr/forum/v ... hp?f=1&t=1]les règles de ce forum.openoffice.org/fr/forum/ftopic1369.html
Le balisage doit bien sûr être correctement orthographié (première lettre en majuscule puis le reste en minuscules).

Dernière modification par Oukcha le 05 avr. 2023 14:47, modifié 2 fois.
Raison : Ajout coche (balise présente)
LibreOffice Version 7.4.6.2
Utilisation sur plusieurs systèmes d'exploitation (nomadisme sous windows et Linux)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Basic] Gestion d'evenements dans un pseudo objet ?

Message par Hubert Lambert »

Bonjour,

À part oobasic, tous les langages supportés par AOO/LibO permettent d'implémenter les objets UNO, en particulier python.
Mais ta question n'est pas très claire : qu'entends-tu par "contrôleur d'événements" exactement ? S'agit-il de ceci : https://wiki.openoffice.org/wiki/FR/Doc ... th_Handler ? Un exemple concret serait le bienvenu...
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
gelinp
Membre OOrganisé
Membre OOrganisé
Messages : 58
Inscription : 12 mars 2011 20:40

Re: [Basic] Gestion d'evenements dans un pseudo objet ?

Message par gelinp »

Ce que j'entends par controleur d'évènement c'est ce que OOo semble appeler un Listener. C'est à dire que la question porte sur un moyen pour traiter les actions déclenchées (par un controle dans une interface boite de dialogue ou Formulaire) en le réceptionnant dans une méthode d'un pseudo object, et non d'un module procédurale classique, puisque le module dans lequel est programmé un pseudo object ne semble pas utilisable avec l'appel CreateUnoListener(...).

Par exemple si j'affecte une macro à la procédure ci-dessous :
REM ***** BASIC *****
Sub ApresChangementEnregistrement(event As Object) ... End Sub

Je voudrais l'affecter à une méthode pseudo object ...:
REM ***** BASIC *****
Option Compatible
Option ClassModule
Public Sub ApresChangementEnregistrement(event As Object) ... End Sub

Mais ni le gestionnaire de macro ni l'appel à CreateUnoListener()ne semble capable d'établir un tel lien ...

Merci pour votre éclairage à ce sujet ...
LibreOffice Version 7.4.6.2
Utilisation sur plusieurs systèmes d'exploitation (nomadisme sous windows et Linux)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Basic] Gestion d'evenements dans un pseudo objet ?

Message par Hubert Lambert »

Je n'ai malheureusement aucune idée, n'ayant jamais pratiqué la chose.
Mais faut-il vraiment s'étonner d'aboutir à une impasse en recourant à une utilisation non native de basic, via une option de compatibilité VBA réputée inaboutie (https://help.libreoffice.org/6.2/fr/tex ... pport.html) ?
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
gelinp
Membre OOrganisé
Membre OOrganisé
Messages : 58
Inscription : 12 mars 2011 20:40

Re: [Basic] Gestion d'evenements dans un pseudo objet ?

Message par gelinp »

Je comprends que les pseudos objets sous Basic OOo sont présentés comme des modules fonctionnels analogues aux modules du langage C, c'est à dire permettant l'encapsulation des variables déclarées privées dans le module. L'encapsulation est un pilier de la programmation actionnelle, c'est essentiel, même en programmation non objet. Cela répond à une grande partie des types d'usage courants.

Un module ce doit donc de proposer l'encapsulation, c'est sa raison d'être mais ce n'est pas le cas des modules Basic sous OOo... Le seul moyen de simuler un module dans OOo consiste donc à veiller soi même aux règles de nommage pour qu'aucune variable même déclarée privée dans un module n'est le même nom qu'une autre variable privée d'un autre module (à vérifier mais il me semble me souvenir avoir déjà rencontré des problèmes de recouvrement d'instances même avec des variables déclarées dans d'autres librairies que la mienne)... Lorsque le code devient conséquent c'est vraiment problématique ...

Et utiliser Python ou Java en code externe pour accéder à la couche Uno (pour laquelle je ne trouve encore aucune doc) pose d'autres problèmes ...
LibreOffice Version 7.4.6.2
Utilisation sur plusieurs systèmes d'exploitation (nomadisme sous windows et Linux)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Basic] Gestion d'evenements dans un pseudo objet ?

Message par Hubert Lambert »

Gelinp a écrit :Et utiliser Python ou Java en code externe pour accéder à la couche Uno (pour laquelle je ne trouve encore aucune doc) pose d'autres problèmes ...
Que tu utilises basic, python, javascript ou que sais-je, dans tout les cas tu dialogueras de la même manière avec la couche UNO, dont le but est justement de proposer une interface universelle et neutre par rapport aux langages de programmation.
Ensuite, python s'emploie de préférence en "interne", exactement comme basic, avec évidemment quelques nuances (presque tout est décrit ici). Mais python offre surtout un langage plus moderne, solide et souple que basic, et résoudra quasi "naturellement" tes problèmes de capsules.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 13:54

Re: [Basic] Gestion d'evenements dans un pseudo objet ?

Message par LibreOfficiant »

Bonjour Gelinp,

L'exemple Suivi des événements de documents de l'aide LibreOffice semble couvrir ton besoin de pseudo-objet. L'exemple, non encore traduit, Creating a Dialog Handler s'en approche également sans être vraiment un objet de classe.
Je ne connais pas d'approche équivalente quant à gestion des formulaires.

Les exemples Python associés illustrent les dires d'Hubert sur ce langage.

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
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Basic] Gestion d'evenements dans un pseudo objet ?

Message par Hubert Lambert »

LibreOfficiant a écrit :L'exemple, non encore traduit, Creating a Dialog Handler...
Pourtant : https://forum.openoffice.org/fr/forum/v ... 89#p311989.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 13:54

Re: [Basic] Gestion d'evenements dans un pseudo objet ?

Message par LibreOfficiant »

Hubert Lambert a écrit :
LibreOfficiant a écrit :L'exemple, non encore traduit, Creating a Dialog Handler...
Pourtant : https://forum.openoffice.org/fr/forum/v ... 89#p311989.
.. non encore traduit dans l'aide de LibreOffice .. eussé-je du écrire pour être tout à fait clair.
Merci pour cette précision
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
gelinp
Membre OOrganisé
Membre OOrganisé
Messages : 58
Inscription : 12 mars 2011 20:40

Re: [Basic] Gestion d'evenements dans un pseudo objet ?

Message par gelinp »

Bonjour,

Merci pour vos réponses. Celle citée ci-dessous avec les évènements d'un document semble effectivement répondre à ma demande. Je vais la tester avec une boite de dialogue ...

Merci pour votre aide !
LibreOfficiant a écrit : 16 août 2019 09:15 Bonjour Gelinp,

L'exemple Suivi des événements de documents de l'aide LibreOffice semble couvrir ton besoin de pseudo-objet. L'exemple, non encore traduit, Creating a Dialog Handler s'en approche également sans être vraiment un objet de classe.
Je ne connais pas d'approche équivalente quant à gestion des formulaires.

Les exemples Python associés illustrent les dires d'Hubert sur ce langage.

Cordialement
LibreOffice Version 7.4.6.2
Utilisation sur plusieurs systèmes d'exploitation (nomadisme sous windows et Linux)