[Résolu][Calc] Appel des boites de dialogues internes

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 !
Avatar de l’utilisateur
Sébastien C
Membre hOOnoraire
Membre hOOnoraire
Messages : 157
Inscription : 28 avr. 2008 23:21
Localisation : Meymac (19250)

[Résolu][Calc] Appel des boites de dialogues internes

Message par Sébastien C »

Bonjour à tous,

Tout le monde (ou presque) connaît l’appel à la boite de dialogue filePicker :

Code : Tout sélectionner

CreateUniService("com.sun.star.ui.dialogs.FilePicker")
Le récent post d’Alain de la Chaume (dont je reste encore béat d’admiration), suivi du non moins développé « Suprême de code » de Dude, me fait me rappeler qu’il est je crois possible d’accéder à n’importe qu’elle boite de dialogue propre à OOo.

Par exemple, dans Calc, il en est une qui peut être très utile : c’est celle qui permet de saisir une plage de cellules par sélection directe tout en visualisant l’adresse de la plage.
selection.png
On peut y accéder (entre autres) par la boite de dialogue qui répond au menu Insertion / Noms / Définir... ou par celle de Format / Zône d’impression / Éditer... en cliquant sur l’icône :
icone_appel.png
Je suis à la recherche de la commande qui me permettrait d’accéder à cette boite de dialogue et, partant, à toutes celles que l’on connaît au sein de la suite bureautique. Je crois cela possible, mais je n’ai aucune méthodologie de recherche pour arriver à mes fins. D’aucun d’entre-vous pourrait-il me mettre sur une piste API quelconque ?

:-)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Sébastien C le 31 déc. 2009 16:07, modifié 2 fois.
LibreOffice 3.5.3.2 sous GNU-Linux Mageia 2.
Avatar de l’utilisateur
Alain de La Chaume
HédOOniste
HédOOniste
Messages : 1527
Inscription : 28 sept. 2008 12:56
Localisation : ʇsǝnoo,ꞁ ɐ ʇuǝɯǝʇǝꞁdɯoↃ

Re: [Calc] Appel des boites de dialogues internes

Message par Alain de La Chaume »

Bonjour Sébastien C, bonjour à tous.

Heu... d'après moi la réponse est dans la question :
Le récent post d’Alain de la Chaume
[...]
On peut y accéder (entre autres) par la boite de dialogue qui répond au menu Insertion / Noms / Définir...
J'ai donc procédé comme dans le fil que vous citez (merci pour ça !) et j'obtiens ceci :

Code : Tout sélectionner

 <menu:menu menu:id="vnd.openoffice.org:CustomMenu1" menu:label="adlc">
  <menu:menupopup>
   <menu:menuitem menu:id=".uno:DefineName" menu:helpid=".uno:DefineName" menu:label="Définir un nom"/>
  </menu:menupopup>
 </menu:menu>
... que j'utilise pour créer ce code :

Code : Tout sélectionner

sub acDlgDefNom()
dim oFrame as object, dsp as object

	oFrame = thisComponent.currentController.Frame
	dsp = createUnoService("com.sun.star.frame.DispatchHelper")
	dsp.executeDispatch(oFrame, ".uno:DefineName", "", 0, array())
end sub
... qui m'a tout l'air de répondre à votre attente. Non ?
(API-culteur et pêcheur de macros en mode loisirs occasionnels, mais toujours les pieds dans l'OO)
AOO 4.1.2 sous Linux Xubuntu Voyager 14.04 (x86_64)
Avatar de l’utilisateur
Sébastien C
Membre hOOnoraire
Membre hOOnoraire
Messages : 157
Inscription : 28 avr. 2008 23:21
Localisation : Meymac (19250)

Re: [Calc] Appel des boites de dialogues internes

Message par Sébastien C »

Et non Alain, ce n’est pas celle-là que je cherche mais celle qui depuis celle-là, en cliquant sur le bouton Image, permet d’accéder à celle ci :

Image

Petite nuance que je laisse à votre perspicacité...
:wink:
LibreOffice 3.5.3.2 sous GNU-Linux Mageia 2.
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: [Calc] Appel des boites de dialogues internes

Message par Dude »

Salut,

Ce bouton n'est activé que si tu as renseigné le nom de ta plage. Donc, ce dialogue n'est pas accessible directement via le dispatcheur.

Si tu cherches à définir une plage, le plus simple est d'utiliser la propriété NamedRanges. Le forum comprend bien sûr de nombreux exemples.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Avatar de l’utilisateur
Sébastien C
Membre hOOnoraire
Membre hOOnoraire
Messages : 157
Inscription : 28 avr. 2008 23:21
Localisation : Meymac (19250)

Re: [Calc] Appel des boites de dialogues internes

Message par Sébastien C »

Merci Dude pour ta réponse ; mais ce même dialogue (au titre près) est aussi accessible depuis Format / Zône d’impression / Éditer... toujours en cliquant sur toujours la même icône : Image et, cette fois, pas de nom de plage à renseigner...

Je ne cherche pas à définir une plage, mais à donner la possibilité à l’utilisateur de mon propre dialogue de pouvoir spécifier un nombre conséquent de lignes de provenances différentes sans avoir, au préalable, à les marquer comme zones.

Ce dialogue me fait saliver parce que justement, il offre très simplement la possibilité de sortir de l’appelant en retournant à la (Zône d’impression) ou aux feuille(s) (Noms de plage). Je ne sais même pas si cette technique est possible avec un dialogue normal (ce qui demanderait alors un autre fil que je suis prêt à ouvrir si certains d’entre-vous me laissent entendre que ce le soit).

Mais évidemment, accéder à ce dialogue-là permettrait de ne pas à avoir à réinventer la roue si seules quelques petites propriétés pouvaient être spécifiées...
:-)
LibreOffice 3.5.3.2 sous GNU-Linux Mageia 2.
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: [Calc] Appel des boites de dialogues internes

Message par Pierre-Yves Samyn »

Bonjour

Ce que tu souhaites peut s'obtenir par un listener (cf http://wiki.services.openoffice.org/wik ... _Selection)
Un exemple tout fait peut-être trouvé dans le classeur MyDataPilot.sxc disponible ici http://homepages.paradise.net.nz/hillview/OOo/

Voir la procédure subEventShrink dans le module ModDPtextControls
Cette procédure est associée au bouton CommandButtonSourceRange (étiquette : Rng) visible dans l'onglet (pseudo) Locations, soit en page 1 du dialogue (en mode conception)
Avatar de l’utilisateur
Sébastien C
Membre hOOnoraire
Membre hOOnoraire
Messages : 157
Inscription : 28 avr. 2008 23:21
Localisation : Meymac (19250)

Re: [Calc] Appel des boites de dialogues internes

Message par Sébastien C »

Bien cher Pierre-Yves,

Comment te remercier ? Les liens que tu me donnes, tant des pages Web à lire, que des exemples à consulter correspondent EXACTEMENT à ce que je recherche...

Et tout ce qui tourne autour mes amis, quelle richesse !

Merci, merci, merci !!!
:D :bravo: :super:

[Édit du premier de janvier de l’an de grâce MM.X.]
Et un petit exemple d’utilisation commenté en français en retour pour les petits amis que cela intéresse et pour bien commencer l’année.
;-)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 3.5.3.2 sous GNU-Linux Mageia 2.