[Résolu][Basic]Contrôle "com.sun.star.awt.grid.UnoControl" ?

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 !
Avatar de l’utilisateur
christophe.joyau
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 févr. 2016 09:43

[Résolu][Basic]Contrôle "com.sun.star.awt.grid.UnoControl" ?

Message par christophe.joyau »

Bonjour,

Nouveau petit écueil rencontré avec un control ajouté sur une boîte de dialogue "dessinée" via l'EDI.
La boîte de dialogue étant :

Code : Tout sélectionner

	With BasicLibraries
		If .HasByName(T) Then
			If Not .isLibraryLoaded(T) Then .LoadLibrary(T)
			BiblioB=.GetByName(T)
		End If
	End With
	With DialogLibraries
		If .HasByName(T) Then
			If Not .isLibraryLoaded(T) Then .LoadLibrary(T) 
			BiblioD=.GetByName(T)
		End If
	End With
	Form=CreateUnoDialog(BiblioD.GetByName("Form"))
	With Form
		' option magique offrant la couleur aux controls
		.GetPeer().SetProperty("NativeWidgetLook",False)

		.Execute
	End With
Je tente d'ajouter dans Form un control complémentaire type grid :

Code : Tout sélectionner

     	oColumnModel=CreateUnoService("com.sun.star.awt.grid.DefaultGridColumnModel")
	oColumn1=CreateUnoService("com.sun.star.awt.grid.GridColumn")
	With oColumn1
		.Title = "Octet"
        	.ColumnWidth = 60
        	.HorizontalAlign=1
        End With
        oColumnModel.addColumn(oColumn1)
  	oColumn2=CreateUnoService("com.sun.star.awt.grid.GridColumn")
        With oColumn2
        	.Title = "Hexa"
        	.ColumnWidth = 60
        	.HorizontalAlign=1
        	.DataColumnIndex=1
        End With
	oColumnModel.addColumn(oColumn2)
  	oColumn3=CreateUnoService("com.sun.star.awt.grid.GridColumn")
        With oColumn3
        	.Title = "Symbole"
        	.HorizontalAlign=1
        	.ColumnWidth = 50
        End With
	oColumnModel.addColumn(oColumn3)			
	oDataModel=CreateUnoService("com.sun.star.awt.grid.DefaultGridDataModel")			
        For I=0 To 500
		If W(I)>0 Then
			Lettre=Chr(W(I))
		Else
			Select Case W(I)
				Case -61
					If W(I+1)=-88 Then Lettre="è"
					If W(I+1)=-86 Then Lettre="ê"
					If W(I+1)=-87 Then Lettre="é"
					If W(I+1)=-89 Then Lettre="ç"
				Case Else
					Lettre="négatif"
			End Select
		End If
                oDataModel.addRow (""& i,Array(Format(I,"0000"),W(I), Lettre))
        Next I
        	
        oGridModel =Form.Model.CreateInstance("com.sun.star.awt.grid.UnoControlGridModel")
        oGridModel.Name="MiniEditeurMod"
       	oGridModel.GridDataModel = oDataModel
       	oGridModel.ColumnModel = oColumnModel
       	oGridModel.ShowColumnHeader = True
       	oGridModel.ShowRowHeader = True
       	oGridModel.HScroll = True
       	oGridModel.VScroll = True
       	oGridModel.Sizeable = True
       	
  	oGridControl = createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  	oGridControl.setModel(oGridModel)

       	Form.addControl("MiniEditeurMod", oGridControl)
	oGridControl.setPosSize(10, 150, 150, 180, com.sun.star.awt.PosSize.POSSIZE)
			
			
	With Form.GetControl("LabelMiniEditeurMod").Model
		XXX=.PositionX
		YYY=.PositionY+98
		WWW=.Width*2
	End With
			
	Form.GetControl("MiniEditeurMod").SetPosSize(XXX,YYY,WWW,300,com.sun.star.awt.PosSize.POSSIZE)
J'ai différents soucis avec ce control. Oui il apparaît bien sur Form et contient ce que je veux. Toutefois, y a -t-il moyen d'ajuster les colonnes selon le contenu genre optimalwidth ? ( pas trouvé) .
Sinon malgré setPosSize pas moyen de positionner finement ce control à moins de bricoler ...
Open Office 4.1.1 et Apache_OpenOffice_4.1.2_Win_x86_langpack_fr et Windows7 pro 64
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Basic] un control "com.sun.star.awt.grid.UnoControl" ?

Message par Piaf »

Bonjour
christophe.joyau a écrit :Toutefois, y a -t-il moyen d'ajuster les colonnes selon le contenu genre optimalwidth ? ( pas trouvé)
Je ne pense pas mais au passage de la souris, le texte complet s'affiche.
Grid.png
je ne reproduis pas pour la position du contrôle.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
ThierryT
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 467
Inscription : 10 nov. 2012 17:05

Re: [Basic] un control "com.sun.star.awt.grid.UnoControl" ?

Message par ThierryT »

Bonjour,

A la lecture de ce fil, il n'y a pas de propriété qui permettent de le faire sauf éventuellement ajouter un listener sur le datachanged et gérer par un "bricolage" la largeur des colonnes concernées.
https://www.openoffice.org/api/docs/com ... le-ix.html
LibreOffice 6.1.3.2 x64 / AOO 4.1.5 (x86) sous Windows 8.1 (x64)
Java 8.x (x64 et x86), Firefox, Thunderbird,....

“Celui qui aime à apprendre est bien près du savoir.” (Confusius)
Comment baliser Résolu