se me olvido indicar antes que tambien necesito como detetar en que zona se encuentra el cursor activo( si esta en el encabezamiento, o en el pie, o en el cuerpo principal del mensaje, asi como si se encuentra dentro de un cuadro de dialogo u otro elemento. Gracias
Editado por el moderador (mauricio) para separar el mensaje del tema original por tratarse de un problema diferente. Si no lo has hecho aún por favor lee la Guía de supervivencia
Saber donde esta el cursor
Saber donde esta el cursor
Aprendiendo a programar Visual Basic 6.0 con OpenOffice 3.1
Re: Saber donde esta el cursor
Hola...
¿Para que necesitas esto?
Esto es algo complejo dada la gran cantidad de elementos que puede tener una página, una primera aproximación sería consultando el estilo
Pero, en algunas circunstancias esto falla, por ejemplo, si el cursor esta en el encabezado y dentro de una tabla, creo que podrías buscar alternativas para tus necesidades...
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.
Saludos
¿Para que necesitas esto?
Esto es algo complejo dada la gran cantidad de elementos que puede tener una página, una primera aproximación sería consultando el estilo
Código: Seleccionar todo
Sub DondeEstoy()
Dim oVCursor As Object
oVCursor = ThisComponent.getCurrentController.getViewCursor
Select Case oVCursor.ParaStyleName
Case "Header"
MsgBox "Estoy en el encabezado"
Case "Footer"
MsgBox "Estoy en el pie de página"
Case Else
MsgBox "Estoy en el cuerpo del documento"
End Select
End Sub
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Saber donde esta el cursor
Muchas gracias Mauricio , tu ayuda ha sido de gran utilidad
Te comento la necesidad, nuestra aplicación permite crear plantillas en OOWriter que posteriormente son usadas en la misma aplicación. Estas plantillas se crean introduciendo texto directamente en el OOwriter y añadiendo campos de nuestra base d datos que para facilidad del usuario aparecen representados en una pequeña ventana, y en la cual permiten seleccionarse. Por este motivo necesito saber en qué sección se encuentra el cursor, ya que al seleccionar el campo en la ventana externa nosotros situamos este campo en la posición correspondiente al cursor actual en OOWriter.
Con lo que me has indicado ya he conseguido introducir texto en los encabezados, pie y cuerpo principal del documento incluso en tablas creadas dentro del cuerpo principal , ya solo me falta lo más complicado introducirlo en los Cuadro de Texto ("Frame contents") .
No se si me puedes ayudar con esto, pero te lo agradecería. También me gustaría saber si existe alguna pagina web donde se especifique la jerarquía de clases con la que trabaja OO y sobre todo donde mirar los métodos y variables que pertenecen a cada clase (por ejemplo donde ver que ParaStyleName es una variable accesible de la clase VCursor). Muchas gracias por todo.
Te comento la necesidad, nuestra aplicación permite crear plantillas en OOWriter que posteriormente son usadas en la misma aplicación. Estas plantillas se crean introduciendo texto directamente en el OOwriter y añadiendo campos de nuestra base d datos que para facilidad del usuario aparecen representados en una pequeña ventana, y en la cual permiten seleccionarse. Por este motivo necesito saber en qué sección se encuentra el cursor, ya que al seleccionar el campo en la ventana externa nosotros situamos este campo en la posición correspondiente al cursor actual en OOWriter.
Con lo que me has indicado ya he conseguido introducir texto en los encabezados, pie y cuerpo principal del documento incluso en tablas creadas dentro del cuerpo principal , ya solo me falta lo más complicado introducirlo en los Cuadro de Texto ("Frame contents") .
No se si me puedes ayudar con esto, pero te lo agradecería. También me gustaría saber si existe alguna pagina web donde se especifique la jerarquía de clases con la que trabaja OO y sobre todo donde mirar los métodos y variables que pertenecen a cada clase (por ejemplo donde ver que ParaStyleName es una variable accesible de la clase VCursor). Muchas gracias por todo.
Aprendiendo a programar Visual Basic 6.0 con OpenOffice 3.1
Re: Saber donde esta el cursor
Hola a todos...
Dices - situamos este campo en la posición correspondiente al cursor actual en OOWriter-, la posición actual del cursor la obtienes con:
que es el cursor visual del cual solo hay uno, a diferencia de los cursores no visuales que puedes crear y manipular varios...
Si vas a introducir texto en un cuadro de texto, es sencillo si ya sabes cual es:
Como los indices pueden cambiar bastante, puedes usar el nombre del cuadro de texto para ubicarlo, primero establecelo en el documento
Ahora, si quieres saber si el cursor esta dentro de una cuadro de texto...
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.
Saludos
Dices - situamos este campo en la posición correspondiente al cursor actual en OOWriter-, la posición actual del cursor la obtienes con:
Código: Seleccionar todo
oVCursor = ThisComponent.getCurrentController.getViewCursor
Si vas a introducir texto en un cuadro de texto, es sencillo si ya sabes cual es:
Código: Seleccionar todo
Sub Main
Dim oDoc As Object
Dim oForma As Object
oDoc = ThisComponent
'La primer forma del documento
oForma = oDoc.getDrawPage.getByIndex(0)
'Verificamos que sea un cuadro de texto
If oforma.getShapeType = "com.sun.star.drawing.TextShape" Then
'Cambiamos su texto
oForma.setString( "HOLA" )
End If
End SubCódigo: Seleccionar todo
Sub Main2
Dim oDoc As Object
Dim oForma As Object
Dim co1 As Integer
Dim sNombre As String
'El nombre de nuestro cuadro de texto
sNombre = "Info"
oDoc = ThisComponent
'Iteramos entre todas las formas del documento
For co1 = 1 To oDoc.getDrawPage.getCount
'Accdedemos una por una
oForma = oDoc.getDrawPage.getByIndex(co1-1)
'Verificamos que sea un cuadro de texto
If oForma.getShapeType = "com.sun.star.drawing.TextShape" Then
'Verificamos que sea el necesario
If oForma.getName = sNombre Then
'Cambiamos su texto
oForma.setString( "HOLA" )
End If
End If
Next
End SubAhora, si quieres saber si el cursor esta dentro de una cuadro de texto...
Código: Seleccionar todo
Sub Main3
Dim oSel As Object
'La selección actual
oSel = ThisComponent.getCurrentController.getSelection.getByIndex(0)
'Verificamos si es una forma
If oSel.getImplementationName = "SwXShape" Then
'Verificamos que sea un cuadro de texto
If oSel.getShapeType = "com.sun.star.drawing.TextShape" Then
MsgBox "Estoy dentro de un cuadro de texto"
End If
End If
End SubSaludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro