[Résolu][Base] Déplacer un bouton dans un formulaire

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 !
PNE-EdT
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 28 mai 2018 08:16

[Résolu][Base] Déplacer un bouton dans un formulaire

Message par PNE-EdT »

Bonjour,

J'ai créé un formulaire 'menu' avec plusieurs boutons.
Le but est de faire le menu en fonction de profils
J'ai réussi à changer le label, la visibilité mais pas la position
Je trouve partout l'argument PositionX mais il ne fonctionne pas
En effet, sur le site suivant je ne trouve pas PositionX
https://api.libreoffice.org/docs/idl/re ... 27bd20da6c
Voici mon code :

Code : Tout sélectionner

sub iniialiserUser1
	  oDoc = ThisDatabaseDocument.FormDocuments.getByName("Menu").Open
         oForm = oDoc.DrawPage.forms.getByName("Formulaire")
 	 ConsultWorkFlow =  oForm.getByName("consult")
 	  SaisieWorkflow =  oForm.getByName("saisie")
   
   SaisieWorkflow.EnableVisible = true
   SaisieWorkflow.Label = "test"
   SaisieWorkflow.Align = 1
   SaisieWorkflow.PositionX =  "1,14 cm"  ' Ici ça ne marche pas

  ConsultWorkFlow .EnableVisible = false
  SaisieWorkflow.FontDescriptor.Orientation =12
.......
        
end sub
La méthode " SaisieWorkflow.PositionX = 10 " provoque une erreur "Propriété ou méthode non trouvée : PositionX."
Je ne comprend pas,
Merci de m'aider.
Dernière modification par toucan le 03 sept. 2018 12:25, modifié 2 fois.
Raison : Ajout de l'icône
LibreOffice 7.0.3.1 sous Windows 10
LOo 6.3.1.2 sous Windows 10 sur un ancien poste
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25175
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Déplacer un bouton dans un formulaire

Message par Dude »

Comme toujours, se servir de XRay pour voir quelle variable doit être définie pour telle propriété.

Code : Tout sélectionner

SaisieWorkflow.PositionX =  "1,14 cm"  ' Ici ça ne marche pas
On attend ici une position exprimée en pixel via un entier et non une chaîne.

Et comme d'habitude :
Image
Comment joindre un fichier au format ODF
Penser également à dépersonnaliser le fichier joint.
PNE-EdT
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 28 mai 2018 08:16

Re: [Base] Déplacer un bouton dans un formulaire

Message par PNE-EdT »

Bonjour

Merci
mais ici SaisieWorkflow.PositionX = 10
ne fonctionne pas non plus

Bon Week-end
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.0.3.1 sous Windows 10
LOo 6.3.1.2 sous Windows 10 sur un ancien poste
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25175
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Déplacer un bouton dans un formulaire

Message par Dude »

Bis repetitae :
Dude a écrit :se servir de XRay pour voir quelle variable doit être définie pour telle propriété
Dans un formulaire, il faut partir de la couche de dessin (DrawPage) pour récupérer l'objet forme voulu.
C'est à partir de cet objet de type com.sun.star.drawing.XShape que tu peux avoir la propriété Position.
Attention car la position est une structure de type Point.

Compréhension du principe avec cet exemple qui crée un bouton de manière dynamique.
PNE-EdT
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 28 mai 2018 08:16

[résolu] Re: [Base] Déplacer un bouton dans un formulaire

Message par PNE-EdT »

Bonjour

Merci Dude,

A l'aide de " CréerBoutonMacro.odb" repris de 'Créer un bouton dans un formulaire', j'ai pu dans un premier temps dupliquer mon bouton.
Et ensuite après de nombreux essais, j'ai fini par trouver comment déplacer ce bouton.

Afin d'éviter la galère qu j'ai eu pour ceux qui auraient besoin, je joints mon fichier ODB et je met le ticket en résolu.
Il me reste à trouver comment remplacer dans la commande "graphe.GetByIndex(2)", le 2 par le nom du bouton.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.0.3.1 sous Windows 10
LOo 6.3.1.2 sous Windows 10 sur un ancien poste
toucan
MOOdérateur
MOOdérateur
Messages : 182
Inscription : 22 févr. 2016 23:49

Re: [Résolu][Base] Déplacer un bouton dans un formulaire

Message par toucan »

Bonjour et bienvenue,

Vous avez ajouté [Résolu] dans votre fil de discussion signifiant que votre question a été résolue et nous vous en remercions.
Cependant pour des questions de lisibilité et d'homogénéité, il est demandé de cocher la case de l'icône de sujet (le V vert). Notre forum est plus lisible avec ce balisage comme vous avez pu vous en rendre compte en le parcourant.
Nous l'avons fait à votre place mais la prochaine fois, nous vous prions de le faire.
Cette opération se fait en même temps lorsque vous éditez votre 1er message.
Suivez ce sujet pour savoir comment procéder : https://forum.openoffice.org/fr/forum/ftopic3299.html

Merci de votre participation sur notre forum et de nous faciliter le travail de modération.

Cordialement, l'équipe de modération
PNE-EdT
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 28 mai 2018 08:16

Re: [Résolu][Base] Déplacer un bouton dans un formulaire

Message par PNE-EdT »

Merci d'avoir coché à ma ma place

Pour clore la discussion: j'avais dis qu'il me restait à trouver la valeur de N sur l'expression "graphe.GetByIndex(N)"
Je l'ai trouvé dans
https://wiki.openoffice.org/wiki/FR/Doc ... With_Forms

Code : Tout sélectionner

For i = 0 to oDoc.DrawPage.Count - 1
  Shape = oDoc.DrawPage(i)
  If HasUnoInterfaces(Shape, "com.sun.star.drawing.XControlShape") Then
    MsgBox i & " = " &  Shape.Control.Name 
  End If
Next
LibreOffice 7.0.3.1 sous Windows 10
LOo 6.3.1.2 sous Windows 10 sur un ancien poste
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25175
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Base] Déplacer un bouton dans un formulaire

Message par Dude »

Rappelons qu'il y a la fonction GetControlShape de la bibliothèque Tools.
Elle permet de récupérer les infos d'une forme via son nom.

Code : Tout sélectionner

sub bouger
    oDoc = ThisDatabaseDocument.FormDocuments.getByName("Menu").Open

    GlobalScope.BasicLibraries.LoadLibrary("Tools")
    oShape = GetControlShape(oDoc, "gauche") 
    Position = oShape.getPosition()
    Position.X = Position.X + 1000 ' Déplacement de 10 mm
    Position.Y = Position.Y + 1000 ' à droite puis en bas
    oShape.setPosition(Position)
        
end sub