[Base]-Coordenadas de controles

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
bcf179e
Mensajes: 9
Registrado: Mié Mar 09, 2016 7:33 pm

[Base]-Coordenadas de controles

Mensaje por bcf179e »

Saludos a todos, me estan siendo de mucha ayuda.

Avanzo poco a poco en lo que quiero hacer al final.

Actualmente lo que quiero es haciendo clic en cada ListBox que me mueste la posicion. Es decir, acceder al metodo .getPosition y de ahí poder acceder a X y Y.

No debo de esta tan mal porque cuando hago clic en las Etiquetas y en los ListBox, primero muesto el nombre del buen ControlShape y luego el nombre del Objeto, es decir si es la Etiqueta el nombre de la Etiqueta, lo mismo por cada ListBox.

Solo que en esta linea, me sale que la Variable objeto no fue declarada.

Código: Seleccionar todo

ThisComponent.getCurrentController.getControl( oControl.getModel.getParent().getByName(oControl.GetModel.Name).Name )
Aqui les dejo el codigo.

Código: Seleccionar todo

Function crear_objeto(mtype as String, ancho as long, alto as long) as Object

Dim oFormGroupes as Object
Dim oFormLabels as Object
Dim oNouveauFormControl as Object
Dim oNouveauLBModel as Object
Dim Context as object
Dim DB as object
Dim Conn as object
Dim Stmt as object
Dim strSQL as String
Dim ResultSet as object
Dim nb_ctrl as Integer
Dim maFormListBox as Object
Dim oNuevaEtiqueta As Object
Dim oNuevaEtiquetaModelo As Object

	
	if mtype = "label" then
		oFormLabels = ThisComponent.DrawPage.Forms.getByName("MesLabels")
		
		oNuevaEtiqueta = ThisComponent.createInstance("com.sun.star.drawing.ControlShape")
		
		Call CambiaTam( oNuevaEtiqueta, ancho, alto )
 
		oNuevaEtiquetaModelo = ThisComponent.createInstance("com.sun.star.form.component.FixedText")
		oNuevaEtiquetaModelo.Name = "Groupe" & qteGroupes
		oNuevaEtiquetaModelo.Label = "Groupe" & qteGroupes
		
		oNuevaEtiqueta.Control = oNuevaEtiquetaModelo
	 
		oFormLabels.insertByIndex(0, oNuevaEtiquetaModelo)
	 
		ThisComponent.DrawPage.add( oNuevaEtiqueta ) 
		
		Agrega_Macro(oFormLabels, 0)
		
		crear_objeto = oNuevaEtiqueta
	else
		oFormGroupes = ThisComponent.DrawPage.Forms.getByName("MesGroupes")
		
		oNouveauFormControl = ThisComponent.createInstance("com.sun.star.drawing.ControlShape")
		
		Call CambiaTam( oNouveauFormControl, ancho, alto )
	
		oNouveauLBModel = ThisComponent.createInstance("com.sun.star.form.component.ListBox")
		oNouveauLBModel.Name = "Groupe" & qteGroupes
	
		oNouveauFormControl.Control = oNouveauLBModel
 		oFormGroupes.insertByIndex(0, oNouveauLBModel)
		
		ThisComponent.DrawPage.add( oNouveauFormControl )
		
		Agrega_Macro (oFormGroupes, 0)
		
		crear_objeto = oNouveauFormControl
	end if
End Function

Sub mueve ( oObj as Object, posicion_izquierda as Integer, posicion_arriba as Integer)	
	oObj.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE
	Dim oPos As New com.sun.star.awt.Point
	oPos.X = posicion_izquierda
	oPos.Y = posicion_arriba
	oObj.setPosition( oPos )
End Sub

Sub Agrega_Macro (oForm as Object, index as long)
Dim oEvent as new com.sun.star.script.ScriptEventDescriptor

   	oEvent.ListenerType = "com.sun.star.awt.XMouseListener"
   	oEvent.EventMethod = "mousePressed"
   	oEvent.ScriptType = "StarBasic"
   	oEvent.ScriptCode = "Standard.Module1.DamePosition"

   	oForm.registerScriptEvent(index, oEvent)
end sub

Sub DamePosition(oEvt as Object)
Dim oControl as Object
Dim oCtrl as Object
		
	oControl = oEvt.source
	MsgBox oControl.getModel.getParent().Name
	MsgBox oControl.getModel.getParent().getByName(oControl.GetModel.Name).Name
	ThisComponent.getCurrentController.getControl( oControl.getModel.getParent().getByName(oControl.GetModel.Name).Name )
End Sub
Aqui la odb
essai2.zip
(13.95 KiB) Descargado 136 veces
Para poder ver los ListBox hay que hacer clic en el boton.

Gracias y a ver si me pueden ayudar.
LibreOffice 4 en Ubuntu
Responder