[RESUELTO] ComboBox en Cuadro de Dialogo Basic

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] ComboBox en Cuadro de Dialogo Basic

Notapor frainter » Mié Ene 04, 2017 7:13 pm

Hola muy buenas.
Pues lo primero un saludo para todos y lo segundo la esperanza de una solucion para mis comienzos en Libreoffice.
bien pues llevo ya varios excel convertidos a Libreoffice(mejor dicho:rehechos en Libreoffice), pero con este calc tengo problemas con un combobox situado en un formulario, ya e conseguido a base de mucho buscar que el combobox me liste una columna situada en la misma hoja, pero no consigo que el valor seleccionado en el combo me lo traslade a la primera celda vacia de otra columna(una sola columna).
Este es el codigo de la macro que e podido encontrar:

Código: Seleccionar todo   Expandir vistaContraer vista
Global oControl As Object
Sub Main
Dim oFormulario As Object
Dim HojaDatos As Object
Dim co1 As Long

   oFormulario = CargarDialogo( "Cctos" )
   oControl = oFormulario.getControl( "ComboBox1" )   
   HojaDatos = ThisComponent.getSheets.getByName( "Conceptos" )   
   co1 = 1
   Do Until HojaDatos.getCellByPosition(0,co1).getString = ""
      oControl.addItem( HojaDatos.getCellByPosition(0,co1).getString, oControl.getItemCount)
      co1 = co1 + 1
   Loop
   oFormulario.execute()
   oFormulario.dispose()
   
   
End Sub

Function CargarDialogo( Nombre As String ) As Object
   'Cargamos la librería Standard en memoria
   DialogLibraries.LoadLibrary( "Standard" )
   'Cargamos el cuadro de diálogo en memoria
   CargarDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName( Nombre ) )
End Function


este codigo me lista los valores de la columna "A" de la hoja "Conceptos".

y me gustaria que el concepto seleccionado me lo plasmase en la columna "D" de la hoja "AnaMet" en la primera celda vacia que encuente.

Esperando su ayuda les quedo agradecido de antemano.
Saludos.
Última edición por mauricio el Vie Mar 17, 2017 5:23 am, editado 3 veces en total
Razón: Marcar icono de resuelto
LibreOffice 5.4.3.2, instalado en Deepin 15.5
frainter
 
Mensajes: 17
Registrado: Mié Ene 04, 2017 6:48 pm

Re: ComboBox en Cuadro de Dialogo Basic

Notapor mauricio » Mié Ene 04, 2017 7:58 pm

Así sin ver (ya no programo en Basic), con la propiedad Text del control deberías tener la selección.

value = oControl.Text

y este valor ponerlo en la celda que quieras con setString(value)

Usa cursores para encontrar la ultima fila usada, mira por aquí: https://wiki.openoffice.org/wiki/ES/Man ... n_Cursores

Saludos

P.D. Asegurate de que realmente quieres usar un Combobox, si deseas que el usuario seleccione una opción pero pueda escribir otras si quieres, si "solo" quieres que seleccione una de las disponibles, es mejor que uses un Listbox
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5877
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: ComboBox en Cuadro de Dialogo Basic

Notapor frainter » Mié Ene 04, 2017 8:38 pm

OK.
Gracias mauricio..
probare mañana aver que tal y ya te comento...y si, si necesito un Combo para poder tener la posibilidad de efectuar algun cambio en un momento preciso.
Gracias.
LibreOffice 5.4.3.2, instalado en Deepin 15.5
frainter
 
Mensajes: 17
Registrado: Mié Ene 04, 2017 6:48 pm

Re: ComboBox en Cuadro de Dialogo Basic

Notapor frainter » Jue Ene 05, 2017 12:28 pm

Hola mauricio.
Pues aqui llevo probando ya bastante rato y no me da resultado(quizas al ser nuevo en libreoffice no sepa ensamblar las macros que difieren de las de excel de donde provengo).
Ademas creo entender que tendria que buscar con el cursor la celda vacia, y teniendo en cuenta que dicha celda pertenece a otra hoja distinta pues creo que perderia mucho tiempo en vez de ganar agilidad con la macro pertinente, asi pues decido seguir leyendo tu manual aver si encuentro alguna solucion o componenda que se adapte a mis necesidades.
Te agradezco tu ayuda y si no se te ocurre la solucion a mi necesidad por lo que dices que ya no programas en basic, pues doy por finalizado el tema.
Saludos
LibreOffice 5.4.3.2, instalado en Deepin 15.5
frainter
 
Mensajes: 17
Registrado: Mié Ene 04, 2017 6:48 pm

Re: ComboBox en Cuadro de Dialogo Basic

Notapor mauricio » Jue Ene 05, 2017 3:51 pm

No, el algoritmo sería así...

1.- Haces referencia a la hoja de interes, eso ya lo haces en el código que muestras.
2.- Creas un cursor a partir de la celda de tus datos en dicha hoja
3.- Expandes el cursor a la región actual
4.- Obtienes la ultima fila usada y le sumas una

Todo esto viene, creo, bastante bien detallado y explicado en el vínculo que te pase, eso si, hay que leer paso a paso.

Si muestras el código que has probado yo o alguien más puede guiarte, solo sigue los paso que te he puesto.

Saludos

P.D. Encontrar la siguiente fila vacía es una pregunta que se ha hecho muchas veces en estos foros, y se ha respondido también muchas veces, solo, hay que buscar la respuesta.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5877
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados