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.