Date: prev next · Thread: first prev next last
2014 Archives by date, by thread · List index


Bonsoir Pierre-Yves,

Le 20/12/2014 08:09, pierre-yves samyn a écrit :
Bonjour

Comme les autres j'ai du mal à comprendre les tenants et aboutissants.
Du coup je détaille :
Je suis en train de d'améliorer un module de construction de figures géométriques existant sous Dmaths.
Le principe :
Dans un document Draw, un bouton d'une ToolBar lance une macro principale.
Cette macro affiche (.execute) une boîte de dialogue qui contient une listbox avec comme entrées de liste le choix pour construire :
- un point,
- une droite ou un segment,
etc ...
- des figures 2D construites par les macros de Gdmath,
- des figures 3D construites par AHmath3D.
- le presse papier.

Chaque choix lance une boîte de dialogue adhoc.

Tout fonctionne bien.

Lorsqu'une figure, par exemple en 3D (pavé droit ou cône) est construite, je souhaite pouvoir créer un ou plusieurs points et/ou segments (exemple une diagonale d'un des rectangles du pavé). Là pas de problème les menus comme création d'un point ... etc sont là pour cela.

Mais il est difficile sauf pour les valeurs entières de construire un point avec les bonnes coordonnées.

D'où, l'utilisation d'un clic de souris pour positionner le point, puis d'une macro (développée et fonctionnelle) qui "capture" la position du point (comme Geogebra) pour placer le point exactement à l'intersection des arêtes du pavé.

Attention : je n'ai nullement l'intention de développer un logiciel de construction dynamique mais simplement de faciliter la création de figures qui sont construites dans Draw et donc au format natif LiBo et donc éditable etc.

Le problème : la boîte principale est modale. Mon problème c'est justement que le contrôleur autorise l'utilisateur à cliquer sur la page Draw.

J'explore plusieurs pistes dont :

- afficher la boîte principale avec SetVisible(True) comme tu me l'as proposé dans DialogListner.odg. Mais j'ai des problèmes de stabilité, et aussi de copier coller que je n'explique pas.

- en utilisant des variables globales : je fais fermer (.endexecute) la boîte création d'un point, puis la principale. Après Clic de souris, la macro appelle successivement la macro qui lance la boîte principale, puis la macro création d'un point. Résultat, la boîte de dialogue principale s'affiche mais reste en attente. Je peux avoir la boîte création de point en cliquant sur le bouton adhoc de la principale.
Mais, ce n'est pas très ergonomique pour l'utilisateur.
Dans ce deuxième cas, tout fonctionne correctement.

Et tout sera parfait si j’arrive à trouver le moyen après le lancement de la boîte principale de lancer la deuxième.

D'où ma question : quel code écrire pour simuler un clic de souris sur le bouton de la boîte principale ?

Compte tenu des infos dont on dispose il me semble que je procèderais
autrement : non utilisation de .execute, éventuellement gestion de "page".

Mais comme tu sembles ne pas avoir retenu ma proposition de ce fil :
http://nabble.documentfoundation.org/Programmation-et-boites-de-dialogues-tp4131956p4131966.html
je n'insiste pas.

Ci-joint un exemple de solution simple avec .execute. Le principe
est d'associer à la réception du focus (du contrôle qui le reçoit) le
lancement de ta macro. Bien sûr, il faut éviter que  la macro soit
lancée à chaque réception du focus. Ici un simple flag...

DialoguesEnchainesSimple.ods
<http://nabble.documentfoundation.org/file/n4133269/DialoguesEnchainesSimple.ods>

Cordialement
Pierre-Yves

J'espère avoir été suffisamment clair.

Merci pour ton aide.

Cordialement.

--
Didier Dorange-Pattoret

http://www.dmaths.org

Soutenez le projet Dmaths : rejoignez le club ou faites adhérer votre établissement !
http://www.dmaths.org/documentation/doku.php?id=presentation:club

Seuls des formats ouverts peuvent assurer la pérennité de vos documents.
J'ai signé l'appel pour l'interopérabilité dans l'Éducation nationale de @aprilorg. Et vous ? 
http://formatsouverts.education/#InteropEduc


--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être 
supprimés

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.