1 message in org.openoffice.fr.prog[prog] Unités: pixel > mm
FromSent OnAttachments
JovialJul 13, 2004 2:02 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[prog] Unités: pixel > mmActions...
From:Jovial (luck@free.fr)
Date:Jul 13, 2004 2:02:39 am
List:org.openoffice.fr.prog

Bonjour :-) J'ai un, petit problème à résoudre J'ai besoin de centrer un controle que je crée / à la fenêtre Je récupère la dimension de ma fênêtre avec : FramePosSize = ThisComponent.getCurrentController().Frame.getComponentWindow.PosSize WindowHeight = FramePosSize.Height WindowWidth = FramePosSize.Width J'obtiens des valeurs en pixel Si je passe par la proprièté width ou heigth l'objet dessin idem

Par contre pour donner la hauteur et la largueur de mon controle(shape) les valeurs sont en 10ème de mm Pour l'instant j'ai fait une multiplication de manière empirique pour avoir un centrage aproximatif de mon contrôle Mais il y certainement une méthode plus rigoureuse. ci dessous la macro Si quelqu'un connait le truck qui va bien je suis preneur. bonne suite à tous. Jluc

sub CreationCtrlTempo ' Affiche un controle temporisé (ici un bouton avec une image et un label) Dim MonDocument As Object Dim MaFeuille As Object Dim DrawPage As Object Dim Form As Object dim Control as object Const LargeurCtrl =9000 Const HauteurCtrl =7500 Dim aPos as new com.sun.star.awt.Point Dim aSize as new com.sun.star.awt.Size

MonDocument = ThisComponent 'Sélectionne le document en cours MaFeuille = MonDocument.CurrentController.ActiveSheet ' sélectionne la feuille activée DrawPage = MaFeuille.DrawPage 'sélectionne la partie graphique de la feuille Form = DrawPage.Forms.GetByIndex(0)'sélectionne les contrôle de formulaire

'Chemin de l'image DocAdresse = ConvertFromURL(MonDocument.Location) ' Adresse convertie au format système NomFichierDoc = dir(DocAdresse) ' Nom du fichier RepertoireDoc = Left(DocAdresse,Len(DocAdresse)- Len(NomFichierDoc)) ' Emplacement ou répertoire où se trouve le document CheminImage = RepertoireDoc & RepertoireODCF & ImageAcceuil ' chemin fichier image

oform = MonDocument.createInstance( "com.sun.star.form.component.Form" ) 'drawpage.Forms.insertByName("MyForm", oform) 'je l'ai utilisé juste à la création pour crée MyForm il faut ensuite le déactiver car cela va créer une nouvelle form à chaque fois

'now create a Shape that will visualize the Buttonmodel button_shape = MonDocument.createInstance("com.sun.star.drawing.ControlShape")

' Calcul de la posotion X,Y / taille controle pour le centrer dans la fenêtre FramePosSize = ThisComponent.getCurrentController().Frame.getComponentWindow.PosSize WindowHeight = FramePosSize.Height WindowWidth = FramePosSize.Width 'msgbox WindowHeight & " " & WindowWidth aPos.X = ((WindowWidth*14) - (LargeurCtrl/2))' j'ai du faire une multiplication / aux différences d'unité aPos.Y = ((WindowHeight*9) - (HauteurCtrl/2)) button_shape.Position = aPos

'Taille du controle aSize.Width = LargeurCtrl aSize.Height =HauteurCtrl button_shape.Size = aSize

'On crée le controle button_model = MonDocument.createInstance("com.sun.star.form.component.CommandButton") button_model.Name = "CtrlAcceuil" button_model.Label = "Bonjour et bienvenu(e) sur la version "& version ' par défaut le texte se place sous l'image button_model.ImageURL = ConvertToURL(CheminImage) button_model.FontHeight = 11 'now connect model and shape with each other ? je sais l'expliquer button_shape.Control = button_model

'on insère le controle dans la form DrawPage.Forms.getByName("MyForm").insertByIndex(0, button_model) 'xray.xray button_model

'On ajoute le controle dans la page de dessin et on le retire au bout de 3 secondes drawpage.add(button_shape) Wait 3000 'drawpage.remove(button_shape)

Jluc