[Résolu][Calc]Lecture de propriétés d'un style de paragraphe

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 !
Xavllo
Membre lOOyal
Membre lOOyal
Messages : 30
Inscription : 27 mars 2008 09:11

[Résolu][Calc]Lecture de propriétés d'un style de paragraphe

Message par Xavllo »

Bonjour à tous,

Sous Calc, je me suis fait une liste de propriétés à tester dans un style d'un document Writer. Pour cela, j'ai utilisé la fonction getPropertyValue("PropriétéVoulue") fournie par Dude dans une autre discussion.

Pour certaine, cela fonctionne parfaitement mais pour d'autres, je ne comprends pas pourquoi j'ai une erreur.

C'est le cas des bordures : en utilisant xRay, dans le cas des bordures, il faut préciser d'autres infos. Par exemple, la proriété BottomBorder ne donne rien car il faut préciser ce que l'on veut de cette bordure. Du coup, en faisant BottomBorder.LineWidth, on obtient un nombre correspondant à l'épaisseur du trait.
Si je demande directement cette info, j'ai le résultat. Par contre avec getPropertyValue("BottomBorder.LineWidth"), j'ai un message d'erreur.

Pareil avec ParentStyle alors que xRay dit que c'est disponible comme information.

Je suis donc un peu perdu...

Je vous joint un fichier Texte comportant le style à "étudier" et le fichier Calc qui contient les propriétés à tester...

D'avance merci pour vos éclairages...

Xav
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 03 juil. 2015 07:18, modifié 2 fois.
Xubuntu 16.04 et Libre office 5.1
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]LEcture des propriétés d'un style de paragraphe

Message par Dude »

Xavllo a écrit :j'ai utilisé la fonction getPropertyValue("PropriétéVoulue")
Non, ce n'est pas une propriété voulue mais une valeur de propriété.
Xavllo a écrit :Par contre avec getPropertyValue("BottomBorder.LineWidth"), j'ai un message d'erreur.
Logique, puisqu'il ne s'agit pas d'une propriété, mais d'un objet suivi d'une propriété.
Pour avoir accès au volant et aux pédales, tu dois d'abord entrer dans la voiture.
Xavllo
Membre lOOyal
Membre lOOyal
Messages : 30
Inscription : 27 mars 2008 09:11

Re: [Calc]LEcture des propriétés d'un style de paragraphe

Message par Xavllo »

Re,

Ok, j'y vois un peu mieux mais ce n'est pas encore ça.

Grossomodo, BottomBorder.LineWidth n'est pas une valeur puisque LineWidth est une propriété de l'objet BottomBorder.

Du coup, si j'appelle Bordure = oStilePar.BottomBorder et que je lui demande la valeur de la propriété LineWidth, cela devrait fonctionner (j'imagine).

J'ai essayé mais choux blanc. En exécutant xRay sur Bordure, j'ai la liste des propriétés. Mais quand je lui demande la valeur de Bordure.getPropertyValue("LineWidth"), j'ai toujours une erreur...

Même si je n'ai pas encore la réponse, il faudrait que, dans ma liste de propriétés, si je rencontre une propriété de type struc (identifiée avec xRay grâce au type de données), je devrais créer l'objet puis chercher la valeur de la propriété voulue. Ma liste de problème se rallonge : Comment créer l'objet Bordure à partir du texte de la cellule B3 (un test avec un si puis...) ? Puis comment récupérer la valeur de LineWidth de l'objet Bordure puisque getPropertyValue ne fonctionne pas?

J'ai cherché dans l'API des infos sur getPropertyValue puis sur les autres possibilités mais je me suis plus embrouillé qu'autre chose.

A plus

Xav
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Xubuntu 16.04 et Libre office 5.1
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]LEcture des propriétés d'un style de paragraphe

Message par Dude »

Xavllo a écrit : Ma liste de problème se rallonge
Comme d'habitude, tu ne nous donnes depuis le départ qu'une vision parcellaire de ton problème.
Qu'essayes-tu de faire ?

Si l'objectif est de refaire un XRay bis, je n'en vois pas l'intérêt.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Calc]Lecture des propriétés d'un style de paragraphe

Message par bm92 »

Bonsoir,
Il te manque des notions fondamentales sur l'API OpenOffice, qui est assez complexe. Cela ne s'explique pas en quelques lignes, et ne se comprend pas en quelques jours. C'est pour cela qu'un bouquin existe, et qu'il les introduit progressivement.

Un peu d'explication

getPropertyValue() est une méthode d'un objet. Elle renverra le contenu de la propriété du nom indiqué, si cette propriété existe. Mais en Basic, inutile de passer par getPropertyValue, on accède directement à la propriété (et même si la casse du nom est incorrecte):

Code : Tout sélectionner

tata = monObjet.getPropertyValue("Machin") ' attention : respecter la casse
' est équivalent à :
tata = monObjet.Machin
Mais tous les objets n'ont pas des propriétés : c'est le cas des structures.
Or BottomBorder renvoie une structure du type com.sun.star.table.BorderLine
Une structure comprend des éléments, pas des propriétés. Et aucune méthode.
Pour récupérer un élément, il faut d'abord obtenir la structure, ensuite l'élément:

Code : Tout sélectionner

tata = monObjet.BottomBorder
toto = tata.InnerLineWidth
Quand on fait ceci en Basic, cela marche aussi:

Code : Tout sélectionner

toto = monObjet.BottomBorder.InnerLineWidth
Parce que Basic exécute l'argument dans l'ordre de gauche à droite, en passant par une variable implicite.
Et pour compliquer un peu plus, ceci ne marchera pas:

Code : Tout sélectionner

monObjet.BottomBorder.InnerLineWidth = 80
Car Basic ne sait pas modifier BottomBorder dans cette expression. Il faut passer par une variable intermédiaire:

Code : Tout sélectionner

tata = monObjet.BottomBorder
tata.InnerLineWidth = 80
monObjet.BottomBorder = tata
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
Xavllo
Membre lOOyal
Membre lOOyal
Messages : 30
Inscription : 27 mars 2008 09:11

Re: [Calc]Lecture des propriétés d'un style de paragraphe

Message par Xavllo »

Bonjour,

Merci pour ces explications. Cela me permet d'y voir un peu plus clair.

Pour répondre à Dude, je n'ai nullement envie de refaire un xRay (et encore moins les compétences, soyons réaliste). L'objectif de mon classeur est de comparer des styles de plusieurs documents par rapport à une référence.
Si j'avais seulement 1 document de temps en temps, je ne réfléchirai pas à faire ce genre de classeur. Mais avec une centaine de documents par semaine contenant plusieurs styles... Je préfère prendre le temps d'expliquer l'erreur comise plutôt que de la chercher.
Et donc pour chaque style, je ne chercherai pas toujours les mêmes informations. D'où, l'intérêt pour moi d'avoir une liste d'informations dans une feuille de calcul puis de ne sélectionner que celles qui sont dans le style de référence. Pour faire ce tri là, je pensais faire la liste des valeurs prises par le style par défaut, faire la liste de celui de référence, identifier les valeurs différentes entre ces 2 puis chercher dans les autres styles parmi ces différences pour identifier les erreurs plus rapidement.

Voilà pourquoi j'ai besoin de comprendre les propriétés-méthodes-structures utilisées dans un style. La fonction GetPropertyValue m'a fait avancer sauf à cause de la notion de structure.

Du coup, un peu comme dans une discussion précédente, si on sait que l'objet est une structure d'informations (cas de BottomBorder), est-ce possible de créer un objet intermédiaire (tata dans le message précédent) à partir du texte d'une cellule ? Ensuite, je devrais pouvoir lire les informations des cette structure.

A plus

Xav
Xubuntu 16.04 et Libre office 5.1
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]Lecture des propriétés d'un style de paragraphe

Message par Dude »

Xavllo a écrit :si on sait que l'objet est une structure d'informations (cas de BottomBorder), est-ce possible de créer un objet intermédiaire (tata dans le message précédent) à partir du texte d'une cellule ?
Peux-tu donner un cas concret ? Quel texte y aurait-il dans la cellule ?
Xavllo a écrit :L'objectif de mon classeur est de comparer des styles de plusieurs documents par rapport à une référence.
Je ne vois pas trop le rapport entre une comparaison de styles et l'usine à gaz que tu fabriques.
Le problème est peut être à prendre en amont. A savoir imposer des modèles pour tes utilisateurs.
Xavllo
Membre lOOyal
Membre lOOyal
Messages : 30
Inscription : 27 mars 2008 09:11

Re: [Calc]Lecture des propriétés d'un style de paragraphe

Message par Xavllo »

Bonjour,

En effet, je vais voir à gérer ce problème en mettant en place des modèles.

En tout cas, merci pour vos informations.

Xav
Xubuntu 16.04 et Libre office 5.1