Código: Seleccionar todo
sub VerDocEnParalelo
Dim DocSeleccionado As Object
Dim docActual As Object
Dim xArgs()
Dim botonPres As Boolean
'Aqui estoy cogiendo el documento actual, desde donde llamo la macro
docActual= ThisComponent.CurrentController.Frame.ContainerWindow
'docActual.setfocus()
botonPres = MostrarDocEnDialogo
If botonPres = 0 Then
exit sub
end if
'docActual.setFocus()
'DocSeleccionado.setFocus()
'docActual.setFocus()
'le digo al documento que se maximice
docActual.IsMaximized = false
'Me devuelve la posicion del documento actual
Tamanno = docActual.GetPosSize
' le digo a la var que coja el ancho y lo modifique a la mitad
Tamanno.Width = (Tamanno.Width/2)
'le digo a la cordenada x del marco que sea en la mitad(del medio hacia la derecha)
Tamanno.X = Tamanno.Width
' le digo a la cordenada y que se mantenga en cero
Tamanno.Y = 0
'le digo al marco que se pueda modificar
docActual.FloatingMode = False
Tamanno.Width = Tamanno.Width '+120
'GlobalScope.BasicLibraries.loadLibrary("XrayTool")
'xray docActual
'Modifico el marco con los datos anteriores
docActual.SetPosSize( Tamanno.X, Tamanno.Y, Tamanno.Width, Tamanno.Height,15)
' ahora empiezo a trabajar con el segundo documento
'GlobalScope.BasicLibraries.loadLibrary("XrayTool")
'xray DocSeleccionado
end sub
Function MostrarDocEnDialogo As Variant
'-----------------------------------------------------------------------------------------
' devuelve una matriz con el titulo de todos los documentos abiertos
Dim NombresDoc() As String
Dim cadena AS String
Dim DocEnum As Object
Dim cont As Integer
Dim DocActual as Object
Dim Abiertos As Object
Dim oDocumentos As Object
Dim oDocumento As Object
Dim oVentana As Object
Dim oEnumeraDocumentos As Object
Dim Doc2 As Object
Dim ocmdBoton aS Object
Dim ruta As Variant
'Aqui guardo los doc abiertos en el momento
Abiertos = StarDesktop.getComponents()
'Enumero los doc para acceder a cada uno de ellos
DocEnum = Abiertos.CreateEnumeration()
'GlobalScope.BasicLibraries.loadLibrary("XrayTool")
'xray DocEnum
'ciclo para recoger cada documento abierto
Do While DocEnum.hasMoreElements()
DocActual = DocEnum.NextElement()
Redim Preserve NombresDoc(cont)
NombresDoc(cont) = DocActual.Title
'incremento el contador
cont = cont + 1
'Guardo el titulo del doc actual
cadena = cadena + DocActual.Title + " "
' msgbox oDoc.Title
Loop
' msgbox cadena
DialogLibraries.LoadLibrary( "Standard" )
oDialog1 = CreateUnoDialog( DialogLibraries.Standard.DialogoTesis )
oDialog1.Title = "Escoja el documento que desea abrir"
oModel = oDialog1.Model
ocmdBoton =oDialog1.getControl("CommandButton3")
'ocmdBoton.Model.
With ocmdBoton.Model
.PushButtonType = 0 'Tipo de botón 2 = Buscar
'.ImageURL = ConvertToUrl("/home/yamita/Escritorio/lupa1.png")
'.PushButtonType =
End With
Dim y(15) as integer
for j = 0 to 15
y(j) = 12 * (j + 1)
next j
For i = 0 to UBOUND(NombresDoc)
oBoton = oModel.createInstance("com.sun.star.awt.UnoControlRadioButtonModel")
oBoton.Height = 50
oBoton.Width = 80
oBoton.Label = NombresDoc(i)
oBoton.PositionX = 10 + 90 * int(i/10)
oBoton.PositionY = y(i MOD 10)
oModel.insertByName(NombresDoc(i), oBoton)
next i
Res=oDialog1.execute()
odialog1.dispose()
Select Case Res
Case 0
oDialog1.dispose()
MostrarDocEnDialogo = Res
exit Function
Case 1
'Msgbox "funciona"
Controls = oModel.getControlModels
for i = 0 to UBOUND(Controls)
control = Controls(i)
if control.supportsService("com.sun.star.awt.UnoControlRadioButtonModel") then
if control.State = 1 then
oDocumentos = StarDesktop.getComponents()
'Enumero cada uno
oEnumeraDocumentos = oDocumentos.createEnumeration()
'hasMoreElements devuelve verdadero (True) mientras haya elementos
Do While oEnumeraDocumentos.hasMoreElements()
'me muevo para el otro elemento y lo asigno
oDocumento = oEnumeraDocumentos.nextElement()
'Cojo la ventana
if control.label = oDocumento.Title then
oVentana = oDocumento.CurrentController.Frame.ContainerWindow
oVentana.IsMaximized = False
' cojo la posicion del doc con cordenadas y todo
Tamanno =oVentana.GetPosSize
Tamanno.Width = (Tamanno.Width / 2)
Tamanno.Height = Tamanno.Height
'pongo el doc en la cordenada 0;0 a la izquierda
Tamanno.X = 0
Tamanno.Y = 0
oVentana.FloatingMode =True
'modifico el doc
oVentana.SetPosSize( Tamanno.X, Tamanno.Y, Tamanno.Width, Tamanno.Height, 15)
exit Do
'Le eenvio el foco pa activarla
'oVentana.setFocus()
end if
loop
exit for
end if
end if
next i
'case else
'sRuta=Res
' oDoc = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mOpciones() )
'if oDoc.supportsService("com.sun.star.text.TextDocument") then
'oDoc2= oDoc.CurrentController.Frame.ContainerWindow
' oDoc2.IsMaximized = False
' cojo la posicion del doc con cordenadas y todo
' Tamanno =oDoc2.GetPosSize
'Tamanno.Width = (Tamanno.Width / 2)
'Tamanno.Height = Tamanno.Height
'pongo el doc en la cordenada 0;0 a la izquierda
' Tamanno.X = 0
' Tamanno.Y = 0
' oDoc2.FloatingMode =True
'modifico el doc
'oDoc2.SetPosSize( Tamanno.X, Tamanno.Y, Tamanno.Width, Tamanno.Height, 15)
' end if
End Select
MostrarDocEnDialogo = Res
End Function
sub AbrirOtroDoc
Dim oDlgAbrirArchivo as Object
Dim mArchivo() As String
Dim mOpciones()
Dim sRuta As String
Dim oDoc As Object
Dim oDoc2 As Object
'Creo el servicio necesario
oDlgAbrirArchivo = CreateUnoService ("com.sun.star.ui.dialogs.FilePicker")
' el titulo del cuadro de dialogo
oDlgAbrirArchivo.setTitle("Selecciona el archivo a abrir")
'Con el método .Execute() pa mostrar el cuadro de dialogo
'Si el usuario presiona Abrir el método devuelve 1 (True)
'Si presiona Cancelar devuelve 0
If oDlgAbrirArchivo.Execute() Then
' solo se puede seleccionar un archivo
'pero devuelve una matriz de todos modos con la ruta completa
'del archivo en formato URL
mArchivo() = oDlgAbrirArchivo.getFiles()
'El primer elemento de la matriz es el archivo seleccionado
sRuta = mArchivo(0)
'AbrirOtroDoc=sRuta
'lo abro
oDoc = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mOpciones() )
oDoc2= oDoc.CurrentController.Frame.ContainerWindow
oDoc2.IsMaximized = False
' cojo la posicion del doc con cordenadas y todo
Tamanno =oDoc2.GetPosSize
Tamanno.Width = (Tamanno.Width / 2)
Tamanno.Height = Tamanno.Height
'pongo el doc en la cordenada 0;0 a la izquierda
Tamanno.X = 0
Tamanno.Y = 0
oDoc2.FloatingMode =True
'modifico el doc
oDoc2.SetPosSize( Tamanno.X, Tamanno.Y, Tamanno.Width, Tamanno.Height, 15)
Else
'Si el usr presiona Cancelar
MsgBox "Proceso cancelado"
End If
end sub
Sub CerrarDialogo
DialogLibraries.LoadLibrary( "Standard" )
oDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName("DialogoTesis") )
oDialogo.endExecute()
End Sub