REM ***** BASIC *****
option explicit
Sub ouvrir_form
const ouvrir =“Nom”
Lien=thisdatabase.document.formdocuments.getbyname(ouvrir).open
End Sub
je ne comprends pas pourquoi le formulaire ne s’ouvre pas
Lien n’est pas défini comme une variable. Il suffit d’écrire
thisDatabaseDocument.formDocuments.getByName(ouvrir).open
De plus, il y avait un point de trop dans le code
Tu peux aussi standardiser en mettant le nom du formulaire dans le Tag du bouton : propriété “Complément d’information”
Et attacher cette routine à l’évènement “Exécuter l’action” du bouton
Sub OuvrirFormParTag(oEvt As Object)
Dim sTag As String
sTag = oEvt.Source.Model.Tag
ThisDataBaseDocument.FormDocuments.getByName(sTag).Open
End sub
Bonjour,
Merci pour ce retour,
J’ai deux formulaires
Tableau de bord
TB caisses
Je souhaiterais avec un code définir leurs dimensions à chaque ouverture.
Par avance merci
voici un code permettant de dimensionner tes formulaires
sub ouvrirFormParTag
dim oForms as object : oForms = ThisDataBaseDocument
dim oForm as object
dim iX as integer ’ abscissee du coin superieur gauchedu formulaire
dim iY as integer 'ordonée du coin superieur gauchedu formulaire
dim iW as interger 'Largeur du formulaire
dim iH as interger 'Hauteur du formulaire
dim iZ as integer 'Facteur de Zoom 100 par défaut
'Pour centrer le formulaire… ne marche pas sous Linux / ubuntu (gros bug)
Dim oEcran as object
Dim iCentreX as integer 'abscisse du centre de l’ecran
Dim iCentrey as integer 'ordonnee du centre de l’ecran
oEcran = StarDesktop.CurrentFrame.ContainerWindow.OutputSize
iCentreX=oEcran.Width/2 : iCentreY=oEcran.Height/2 ’ centre de l’ecran
'si on veut centrer l’écran alors
iX = iCentreX-iW/2 : iY=iCentreY-iY/2
oForm =oForms.getByName(sForm).Open
With oForm.CurrentController
.ViewSettings.ZoomValue=iZ
.Frame.Title = sTitre
.Frame.LayoutManager.hideElement(“private:resource/menubar/menubar”) ’ cache la barre des menus
.Frame.LayoutManager.HideCurrentUI=True 'cache les option de modification du formulaire
.Frame.ContainerWindow.isMaximized=False
.Frame.ContainerWindow.IsMinimized = False
If getGuiType() = 1 Then wait 5 'obligatoire avec windows ???
.Frame.ContainerWindow.setFocus()
.Frame.ContainerWindow.toFront() ’ Force window change in Linux ??
.Frame.ContainerWindow.setPosSize(iX,iY,iW,iH,15)
’ Wait 5
End With
End sub
A adapter à ton cas, personnellement j’ai mis les coordonnées de mes formulaires dans une table que je consulte avant d’afficher.
ci dessous un petit code à attacher à un raccourci clavier (ctl+alt+w) qui te permet de te visualiser la taille exacte de ton formulaire si tu le redimensionne à l’ecran
Sub TailleFenetre 'raccourci Ctrl+Alt+W
’ pour affiner les dimensions de la fenetre
Dim oPosSize As Object
oPosSize=ThisComponent.CurrentController.Frame.ContainerWindow.PosSize
MsgBox ThisComponent.CurrentController.Title & chr(13) _
& "Largeur (w) = “+ oPosSize.Width & chr(13) _
&“Hauteur (h) = " & oPosSize.Height & chr (13) _
&“x=”+oPosSize.X &”, y=” & oPosSize.Y , “Taille de la fenetre”
End sub
Bon courage