Enlazar un txtfield con una macro

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
wandrew007
Mensajes: 13
Registrado: Vie Dic 12, 2008 3:20 pm

Enlazar un txtfield con una macro

Mensaje por wandrew007 »

Hola a todos,

Estoy trabajando en un proyecto en el cual logré que mi jefe migrara a openoffice, yo soy nuevo en el tema y estoy trabajando con base para hacer un aplicativo de inventarios en Base, el problema es el siguiente:

He creado un formulario para introducir datos a una tabla, dentro de ese formulario hay un par txtfield y otro par de txtlist, lo que necesito hacer es que a partir de una macro poder tomar los valores que se introduzcan en ese textfiel o txlist y poderlos manipular desde la macro, para luego igualmente volverlos a colocar en otro textfiel o txtlist. ya que para introducir datos a la tabla estos dependen de la elección del usuario, entonces necesito tomar esa elección y manipularla

Agradezco su pronta ayuda
WANDREW
QuazzieEvil
Mensajes: 99
Registrado: Sab Dic 13, 2008 6:45 pm

Re: Enlazar un txtfield con una macro

Mensaje por QuazzieEvil »

aqui (http://www.geocities.com/rbenitez22/OOo/index.html) tengo uno documentos con informaccion en este tema. Esta en Ingles, si no le entiendes, me avisas.

Los datos de un Text Box se peuden manipular asi:

Código: Seleccionar todo

Sub cmdButton_OnClicK(Event As Objct)
  Dim Form As Object
  Dim Precio As Double
  Dim Cantidad As Integer
  Dim Total As Double

  Form=Event.Source.Model.Parent 'en este ejemplo, esta macro esta enlazada al evento 'Mouse Button Pressed' de un boton
  Precio=CDbl(Form.getByName("txtPrecio").Text )  'hay que convertir el texto a un numero-- ej: 2.99
  Cantidad=CInt(Form.getByName("txtCantidad".Text) 'igual..ej 10
  Total=Precio * Cantidad
  'para actualizar el text field, no se puede simplemente asignar al propiedad 'Text', hay que actualizarlo por el 'BoundField' que es el objecto
  'que enlaza el text field y la celda en la table.  la propiedad 'BoundField' es un servicio typo 'Column' y tiene un metodo para cada typo the dato
  'for ejemplo: updateInt,updateDouble,updateString, etc.
  Form.getByname("txtTotal").BoundField.updateDouble(Total)  
  
  'otra manera us usando la propiedad 'Columns' de el formulario
  Form.Columns.getByName("Total").updateDouble(Total) 'hay que user el nombre de la celda/columna--se supone que este se llama 'Total'
 
End Sub
este ejemplo usa el evento 'Mouse button pressed' de un botton. si usas otro evento, lo unico que cambia es la forma the obtener la referencia al formulario. el docoumento que te mencione (http://www.geocities.com/rbenitez22/OOo/index.html) esplica various eventos que se pueden usar.
wandrew007
Mensajes: 13
Registrado: Vie Dic 12, 2008 3:20 pm

Re: Enlazar un txtfield con una macro

Mensaje por wandrew007 »

Hola

Gracias por la ayuda

Estuve mirando el ejemplo, y lo puse a correr, pero no funcionó, sin embargo en la documentación del pdf que dejaste estuve mirando ejemplos al igual que en el libro de Andrew Pitonyak el cual muestra este ejemplo de código

Código: Seleccionar todo

vDoc = ThisComponent
sName = "Author Name"
sServ = "com.sun.star.text.FieldMaster.User"
If vDoc.getTextFieldMasters().hasByName(sServ & sName) Then
  vField = vDoc.getTextFieldMasters().getByName(sServ & sName) 
  vField.Content = "Andrew Pitonyak"
  vField.Value = 2.3  REM If you would rather this were a number
Else
  vField = vDoc.createInstance(sServ)
  vField.Name = sName
  vField.Content = "Andrew Pitonyak" 
  vField.Value = 2.3  REM If you would rather this were a number!
End If

La verdad creí que este me podría ayudar, pero al modificarlo para mis necesidades no me funcionó, si es posible me gustaría que me ayudaras a adaptar este código que ya mas o menos lo entiendo.

Los componente que tengo en el formulario son los siguientes:
"CantidadField" es un numericField
"ListBoxProducto" es un ListBox
"txtNum_Factura" es un TextBox
en el ejemplo anterior, realicé el cambio de nombre en sName, pero no se si estoy cometiendo el error de no tener presente el tipo de objeto (ejemplo el numericfiedl)
Lo que debo hacer es tomar datos de cada uno, manipularlo y luego escribir de nuevo en un textbox.

Agradezco su pronta ayuda
WANDREW
Responder