[Résolu][Calc]CreateUnoService avec tous les services ?

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 !
molo2003
Membre OOrganisé
Membre OOrganisé
Messages : 65
Inscription : 22 nov. 2013 17:53

[Résolu][Calc]CreateUnoService avec tous les services ?

Message par molo2003 »

Bonjour à vous,
La modération vous a écrit: La longueur du titre est limitée.

J'ai lu que pour tous les services uno, on pouvait lister leurs propriétés et les méthodes attachées à ces services.
J'ai utilisé une syntaxe trouvé sur Net (qui cause de débugger) : on crée une instance de service puis à cet objet on applique la propriété "DBG_methods" pour lister les méthodes attachées à ce service.
Mais mon problème est que cette fonctionnalité ne fonctionne pas pour tous les services.
Y a-til une raison ? ou est mon erreur ?
Cidessous le code utilisé et les commentaires adequats.

Code : Tout sélectionner

Sub Main

    Dim Obj As Object
	 Obj = createUnoService("com.sun.star.frame.Desktop")	' ca marche
	Obj = createUnoService("com.sun.star.sheet.CellsEnumeration")		' ca ne marche pas
	Obj = createUnoService("com.sun.star.ui.dialogs.FilePicker")	' ca marche
	Obj = CreateUnoService("com.sun.star.ui.dialogs.Wizard")	' ca marche
	
	Obj = CreateUnoService("com.sun.star.sheet.Cells")		' ca ne marche pas
	
	Obj = CreateUnoService("com.sun.star.table.Cell")	' ca ne marche pas
			
   	 MsgBox Obj.DBG_Properties
         MsgBox Obj.DBG_methods

End Sub
Quand " ca ne marche pas " Obj = Null donc message d'erreur sur la propriété "DBG_Properties"
Pourtant "CellEnumeration" et "Cells" sont bien des services du module "sheet"
ainsi que "Cell" un service du module "Table".
Merci d'avance d'éclairer ma lanterne
Dernière modification par toucan le 16 août 2017 20:39, modifié 2 fois.
Raison : Mise en place du balisage
LibreOffice 7.1.2.2 (x64)
Windows 10 Fam 21H1 (x64)
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 10071
Inscription : 28 août 2010 08:45

Re: CreateUnoService marche -t-il avec tous les services ?

Message par micmac »

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche.
Avez-vous remarqué comment étaient postées les autres questions ?

Lisez ce fil pour savoir quelle balise utiliser : https://forum.openoffice.org/fr/forum/s ... html#27295

Nous vous remercions de baliser avant votre prochain message sous peine de voir votre sujet verrouillé.

Merci de votre collaboration.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
molo2003
Membre OOrganisé
Membre OOrganisé
Messages : 65
Inscription : 22 nov. 2013 17:53

Re: [Calc]CreateUnoService marche -t-il avec tous les servic

Message par molo2003 »

Micmac bonsoir;
J'ai balisé mon message en mettant (Calc] en début de Sujet.
je ne sais si c'est suffisant ....
Si le portier de ce site juge la présentation de mon message pas présentable ... Vous, seul, avez le droit de le "Vérouiller"
A vous de juger ... prevenez moi
Merci d'avance
LibreOffice 7.1.2.2 (x64)
Windows 10 Fam 21H1 (x64)
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 10071
Inscription : 28 août 2010 08:45

Re: [Calc]CreateUnoService marche -t-il avec tous les servic

Message par micmac »

Bonsoir,

Balisage correct. Merci
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc]CreateUnoService marche -t-il avec tous les servic

Message par Hubert Lambert »

Bonjour,

Un outil bien plus simple et plus efficace : Xray.
:wink:
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)
molo2003
Membre OOrganisé
Membre OOrganisé
Messages : 65
Inscription : 22 nov. 2013 17:53

Re: [Calc]CreateUnoService marche -t-il avec tous les servic

Message par molo2003 »

Merci Hubert Lambert de ton aide.

J'ai découvert, il y a peu, Xray 6 mais je ne l'ai pas encore installé ... je vais le faire au plus tôt.
j'avais découvert ces procédés de déboggages "DBG_Properties" ... et pensait en faire une petite doc perso ...
Il est vrai que je fais plus du développement Visual Studio 2017 que des macros (suis pas un pro ... de petites procédures qui me simplifient la vie)....et il faut avouer,que dans le code un point après la déclaration d'objet ouvre une fenêtre des méthodes ou propriétés valides, facilite l'écriture du code.
Mais pour revenir à mon post initial, quant j'écris:

Code : Tout sélectionner

Obj = CreateUnoService("com.sun.star.sheet.Cells")
Pourquoi le service n'est-il pas créer ? Alors que "Cells" est bien un service du module "sheet" ... dans doc Apache API.
je suis curieux de nature et je sais que toi, expert en la matière, tu sauras trouver mon erreur.
Grand merci à toi pour ta disponibilité.
LibreOffice 7.1.2.2 (x64)
Windows 10 Fam 21H1 (x64)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc]CreateUnoService marche -t-il avec tous les servic

Message par Hubert Lambert »

molo2003 a écrit :Mais pour revenir à mon post initial, quant j'écris:

Code : Tout sélectionner

Obj = CreateUnoService("com.sun.star.sheet.Cells")
Pourquoi le service n'est-il pas créer ? Alors que "Cells" est bien un service du module "sheet" ... dans doc Apache API.
Tous les services ne peuvent être directement instanciés par l'utilisateur. Certains, comme celui que tu cites, sont des objets qui ne peuvent être obtenus que comme valeur de retour d'un autre service ou interface (ici com.sun.star.sheet.SheetCellRanges).

On peut instancier un service à partir de tout objet implémentant l'interface XMultiServiceFactory et ses méthodes createInstance et createInstanceWithArguments. Une troisième méthode, getAvailableServiceNames, permet de connaître la liste des services exposés par l'objet.
Parmi ces objets, il y a notamment la plupart des interfaces de base de document, comme celles obtenues avec la variable ThisComponent. Pour connaître les services disponibles globalement, c'est-à-dire avec la fonction CreateUnoService, il faut interroger le "ServiceManager" par défaut avec la fonction GetProcessServiceManager.
molo2003 a écrit :il faut avouer,que dans le code un point après la déclaration d'objet ouvre une fenêtre des méthodes ou propriétés valides, facilite l'écriture du code.
L'histoire et les moyens d'OpenOffice et LibreOffice ne sont évidemment pas les mêmes. La philospohie non plus : l'API UNO est pensé pour être utilisable par différents langages de programmation (le basic n'en est qu'un), ce qui résulte dans un système relativement complexe et abstrait d'interfaces et de services.
Il y a bien un début de tentative, avec LibreOffice, pour offrir une forme d'autocomplétion du code, mais qui n'est pas encore vraiment utilisable...
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)
molo2003
Membre OOrganisé
Membre OOrganisé
Messages : 65
Inscription : 22 nov. 2013 17:53

Re: [Calc]CreateUnoService marche -t-il avec tous les servic

Message par molo2003 »

Grand MERCI à toi Hubert Lambert pour tes explications techniques de compétence.

J'ai bien compris que la compréhension finale de la programmation macro basic dans Calc n'est pas aussi aisé qu'on pourrait le croire.
Comme tu dis, pour se plier aux normes ou exigences de langages variés et différents dans leur approche de "l'Objet" ... genre Python ou autre .... une acrobatie de programmation est nécessaire.
Pour le moment , je vais me limiter aux macros sur feuilles Calc actives ... cela devrait me suffire pour économiser mon clavier (rires !!!) d'autant que les projets prévisibles ne seront pas insurmontables ... je l'espère !!! ( avec la formation informatique que j'ai ... la fonction de secrétaire et trésorier d'une association de 300 adhérents m'est tombé sur la tête !!!). De fait, je suis chargé du suivi des adhérents et trésorerie rattachée .... mon but est d'automatiser le plus possible la déclaration d'adhérents avec la trésorerie lié et autres contraintes possibles... en parlant français je veux m'enquiquiner au minimum ... tu as parfaitement compris mon but . J'ai opté pour les classeurs Calc de LibreOffice.
Mais je vais découvrir l'outil Xray et l'apprivoiser, si je peux, pour me seconder dans la trouvaille des propriétés ou méthodes liés à l'objet déclaré.
Bonne soirée à vous tous .... les experts .
Probablement que je serai contraint de venir solliciter vos compétences ... je suis têtu et curieux !!! (espérons que c'est à classer dans mes qualités ???)
Encore Grand MERCI à Hubert pour ta disponibilité et ton aide.
Je vais essayer de mettre ce post en Résolu
LibreOffice 7.1.2.2 (x64)
Windows 10 Fam 21H1 (x64)
molo2003
Membre OOrganisé
Membre OOrganisé
Messages : 65
Inscription : 22 nov. 2013 17:53

Re: [Calc]CreateUnoService marche -t-il avec tous les servic

Message par molo2003 »

Au secours !!! le Web Master du site ou le "service Modérateur":
Pour mettre ce post en [Résolu] ... je suis aller dans mon "Panneau de contrôle de l'utilisateur" et dans "Gestion de mes abonnements".
J'ai cliqué sur ce message .... coché la marque "V" ... mais je n'ai pas réussi à marquer [Résolu] .... aucun affichage de caractères tapé au clavier.
je m'excuse ... suis de bonne volonté mais !!! .... mais dites moi pourquoi ????
j'attends votre message
LibreOffice 7.1.2.2 (x64)
Windows 10 Fam 21H1 (x64)
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 4334
Inscription : 06 oct. 2008 08:03

Re: [Résolu][Calc]CreateUnoService avec tous les services ?

Message par Oukcha »

Bonjour,
molo2003 a écrit :je n'ai pas réussi à marquer [Résolu] [...] dites moi pourquoi ?
Tout simplement car le nombre de caractères est limité, notez que le modérateur a raccourci votre titre pour appliquer le balisage.

Cordialement
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
molo2003
Membre OOrganisé
Membre OOrganisé
Messages : 65
Inscription : 22 nov. 2013 17:53

Re: [Résolu][Calc]CreateUnoService avec tous les services ?

Message par molo2003 »

Merci Oukcha de ta réponse et de ton intervention.
Si lors de l'édition du titre de mon post, un message explicite de mon erreur m'avait averti, j'aurai moi même diminuer le nombre de caractères du titre.
Mais là, silence complet .... donc je n'ai su que faire sinon d'alerter la modération.
A tous A++++++++++
LibreOffice 7.1.2.2 (x64)
Windows 10 Fam 21H1 (x64)