Professional Documents
Culture Documents
Oo BV 1
Oo BV 1
org
Gua bsica del programador
Sun Microsystems, Inc. has intellectual property rights relating to technology embodied in the product that is described in this
document. In particular, and without limitation, these
intellectual property rights may include one or more of the U.S. patents listed at http://www.sun.com/patents and one or more additional
patents or pending patent applications in the U.S.
and in other countries.
This document and the product to which it pertains are distributed under licenses restricting their use, copying, distribution, and
decompilation. No part of the product or of this document
may be reproduced in any form by any means without prior written authorization of Sun and its licensors, if any.
Third-party software, including font technology, is copyrighted and licensed from Sun suppliers.
This product is based in part on the work of the Independent JPEG Group and The FreeType Project.
Portions Copyright 2000 SuSE, Inc. Word for Word Copyright 1996 Inso Corp. International CorrectSpell spelling correction system
Copyright 1995 by Lernout & Hauspie Speech
Products N.V. All rights reserved.
Sun, Sun Microsystems, the Sun logo, Java, Solaris, StarOffice, the Butterfly logo, the Solaris logo, and the StarOffice logo are
trademarks or registered trademarks of Sun Microsystems,
Inc. in the U.S. and other countries.
UNIX is a registered trademark in the U.S. and in other countries, exclusively licensed through X/Open Company, Ltd. Screen Beans
and Screen Beans clipart characters are registered
trademarks of A Bit Better Corporation.
Federal Acquisitions: Commercial Software - Government Users Subject to Standard License Terms and Conditions.
DOCUMENTATION IS PROVIDED "AS IS" AND ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF
MERCHANTABILITY, FITNESS FOR FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE DISCLAIMED,
EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE
HELD TO BE LEGALLY INVALID.
Sun Microsystems, Inc. a les droits de proprit intellectuels relatants la technologie incorpore dans ce produit. En particulier, et sans
la limitation, ces droits de proprit intellectuels
peuvent inclure un ou plus des brevets amricains numrs http://www.sun.com/patents et un ou les brevets plus supplmentaires ou
les applications de brevet en attente dans les Etats Unis et les autres pays.
Ce produit ou document est protg par un copyright et distribu avec des licences qui en restreignent l'utilisation, la copie, la
distribution, et la dcompilation. Aucune partie de ce produit
ou document ne peut tre reproduite sous aucune forme, par quelque moyen que ce soit, sans l'autorisation pralable et crite de Sun et
de ses bailleurs de licence, s'il y ena.
Le logiciel dtenu par des tiers, et qui comprend la technologie relative aux polices de caractres, est protg par un copyright et
licenci par des fournisseurs de Sun.
Ce produit repose en partie sur le travail de lIndependent JPEG Group et de The FreeType Project.
Portions Copyright 2000 SuSE, Inc. Word for Word Copyright 1996 Inso Corp. Systme de correction orthographique International
CorrectSpell Copyright 1995 de Lernout & Hauspie
Speech Products N.V. Tous droits rservs.
Sun, Sun Microsystems, le logo Sun, Java, Solaris, StarOffice, le logo Butterfly, le logo Solaris et le logo StarOffice sont des marques
de fabrique ou des marques dposes de Sun
Microsystems, Inc. aux Etats-Unis et dans d'autres pays.
UNIX est une marque dpose aux Etats-Unis et dans d'autres pays et licencie exlusivement par X/Open Company, Ltd.
Les Screen Beans et les objets graphiques prdessins Screen Beans sont des marques dposes de A Bit Better Corporation.
Acquisitions fdrales : logiciel commercial ; les utilisateurs gouvernementaux sont soumis aux conditions gnrales standard de la
licence.
LA DOCUMENTATION est fournie TELLE QUELLE et TOUTES LES CONDITIONS, REPRSENTATIONS ET GARANTIES
EXPRESSES OU TACITES, Y COMPRIS TOUTE GARANTIE
TACITE CONCERNANT LA QUALIT MARCHANDE, L'APTITUDE UN USAGE PARTICULIER OU LA NON-VIOLATION
DE DROITS DE TIERS SERONT REJETES, EXCEPT
DANS LE CAS O L'EXCLUSION OU LA LIMITATION DE TELLES GARANTIES NE SERAIT PAS AUTORISE PAR LA
LGISLATION EN VIGUEUR.
Traduccin Arturo Garro. Realizado especialmente para la comunidad en espaol de OpenOffce.org. e-mail: arturog@costarricense.cr
Dedico esta traduccin a mi esposa y mis hijos. Porque me comprendieron y me dieron el tiempo necesario para poder terminarla.
Gracias Rebeca por llevarme comida mientras trabajaba en esto. A Jose Ricardo y Ariana, por dejar de jugar en la computadora y
cedermela para poder trabajar. Y sobre todo por el tiempo que no les dediqu por este proyecto.
16
Operadores de comparacin 20
Control de flujo 20
If ... Then ... Else 20
Select ... Case 21
Ciclos 22
For ... Next 22
Do ... Loop 23
Ejemplo de programacin: Ordenando con ciclos anidados. 24
Procedimientos y funciones 25
Procedimientos 25
Funciones 25
Terminando procedimientos y funciones prematuramente 26
Pasando parmetros 26
Parmetros opcionales 27
Manejo de errores 28
La Instruccin On Error 28
El comando Resume 28
Consultas referentes a la informacin de errores 29
Consejos para el manejo de errores estructurado 29
Funciones de conversin 31
Conversiones de tipo implcito y explcito 31
Verificando el contenido de las variables 33
Cadenas 34
Trabajando con conjuntos de caracteres 34
Accesando partes de una cadena 35
Bsqueda y reemplazo 35
Formateando cadenas 36
Fecha y hora 37
Especicacin de los detalles de fecha y hora dentro del cdigo del programa
Extrayndo detalles de fecha y hora. 38
Accesando la fecha y la hora del sistema 39
Archivos y directorios 40
Administrando archivos 40
Escribiendo y leyndo archivos de texto 43
Otras funciones 47
Beep 47
Shell 47
Wait 47
Environ 48
37
52
52
55
El StarDesktop 57
Informacin bsica acerca de los documentos en OpenOffice.org
Crear, abrir e importar documentos 59
Objetos de documentos 61
Pantillas 65
Detalles sobre varias opciones de formato 66
58
133
138
153
158
vi
Esta gua provee una introduccin a la programacin con OpenOffice.org Basic e indica las
posibles aplicaciones provistas al usar OpenOffice.org Basic en OpenOffice.org. Para obtener
lo mejor de este libro, debera estar familiarizado con otros lenguajes de programacin.
Varios ejemplos son provistos para ayudarle a desarrollar sus propios programas en
StarBasic.
Un nmero de consejos de migracin para los programadores de Microsoft Visual Basic o para aquellos
que han trabajado con versiones menores de StarOffice, son provistos atraves de esta gua. Estn
indicados por un pequeo smbolo en el borde de la pgina. El apndice de esta gua contiene un ndice de
consejos de migracin de manera que pueda navegar fcilmente al consejo que desea leer.
: Permite el acceso a
documentos de OpenOffice.org y permite que sean creados, salvados, modificados e
impresos.
Captulo 1 Introduccin
Captulo 1 Introduccin
La compatibilidad entre OpenOffice.org Basic y VBA est relacionada con el lenguaje del OpenOffice.org
Basic y con las libreras en tiempo de ejecucin. La API de OpenOffice.org y el editor de dilogos no son
compatibles con VBA (estandarizar estas interfaces hara que muchos de los conceptos provistos por
OpenOffice.org sean imposibles)
Estos tres captulos ofrecen un vistaso del OpenOffice.org Basic y puede ser ledo por
cualquiera que intente escribir programas en OpenOffice.org Basic.
Los captulos restantes describen componentes individuales de la API de OpenOffice.org con
ms detalle y pueden ser ledos selectivamente segn lo requiera.
Ms informacin
Los componentes de OpenOffice.org API que estn discutidos en esta gua fueron
seleccionados basados en el beneficio prctico para el programador de OpenOffice.org Basic.
En general, slo las partes referentes a las interfaces son discutidas. Para ms detalle, vea la
referencia a las API que est disponible en Internet en:
http://api.openoffice.org/common/ref/com/sun/star/module-ix.html
La Gua del Desarrollador describe las API de OpenOffice.org con ms detalle que esta gua,
pero est principalmente orientada a los programadores de Java o C++. Cualquiera que est
realmente familiarizado con la programacin en OpenOffice.org Basic puede encontrar
informacin adicional en la Gua del Desarrollador en OpenOffice.org Basic y programacin
de OpenOffice.org. Puede descargar la Gua del Desarrollador desde Internet desde:
http://api.openoffice.org/DevelopersGuide/DevelopersGuide.html
Captulo 1 Introduccin
Un vistazo de la
OpenOffice.org Basic.
programacin
en
Lneas de programacin
El Interprete de Basic est orientado a la ejecucin de lneas y esto es una diferencia primaria
entre Basic y otros lenguajes de programacin. Mientras la posicin de puntos de
interrupcin en el cdigo fuente de Java, C++ o Delphi es irrelevante, cada lnea de cdigo en
un programa Basic es una unidad auto-contenida. Las llamadas a funciones, expresiones
matemticas, u otros elementos lingisticos, como las funciones y encabezados de ciclos,
pueden ser completados en la misma lnea en la que empezaron.
Si no hay suficiente espacio, o resulta en lneas muy largas, entonces varias lneas pueden ser
unidas al agregar rayabajos _ (underscore). El siguiente ejemplo muestra cmo cuatro lneas
de una expresin matemtica pueden ser unidas:
(expresion1 + expresion2 ) + _
+ expresion4 ) + _
+ expresion5 ) + _
+ expresion7 )
La rayabajo debe ser siempre el ltimo carcter de la lnea unida y no debe ir seguida de un
espacio o tabulacin, de lo contrario el cdigo generar un error.
Adicionalmente a unir lneas individuales, OpenOffice.org Basic, puede usar dos puntos (:)
para dividir una lnea en cada seccin si hay espacio suficiente para cada expresin. Las
asignaciones:
a = 1
a = a + 1
a = a + 1
Comentarios
Adicionalmente al cdigo del programa que puede ser ejecutado, la programacin en
OpenOffice.org Basic puede contener comentarios que expliquen partes individuales del
programa y proveer ms informacin que puede ser de ayuda para puntos posteriores.
OpenOffice.org Basic provee dos mtodos para insertar comentarios en el cdigo del
programa:
Todas las letras que sigan a un apstrofe (') son tratadas como comentarios:
Dim A 'Este es un comentarios para la variable A
Un comentario usualmente incluye todos los caracteres desde el inicio hasta el final de la
lnea. OpenOffice.org Basic interpreta la siguiente lnea como una instruccin normal de
nuevo. Si un comentario cubre varias lneas, cada lnea debe ser identificada como un
comentario:
Dim B
' Este comentario para la variable B es algo
' largo y comprende varias lneas. El
' carcter de comentario deber ser repetido
' en cada lnea.
Marcadores
Un programa de OpenOffice.org Basic puede contener, docenas, cientos y hasta algunos
miles de marcadores, los cuales son nombres de variables, constantes, funciones y dems.
Cuando seleccione un nombre para un marcador, se aplicarn las siguientes reglas:
Los marcadores slo pueden contener letras latinas, nmeros y rayabajo (_).
La primera letra del marcador puede ser una letra latina o una rayabajo.
Las reglas de marcadores son diferentes para OpenOffice.org Basic y VBA. Por ejemplo, OpenOffice.org
Basic no permiten caracteres especiales en los marcadores, porque pueden presentar problemas en
proyectos internaciones.
Esto debe ser la primera lnea de programa de cada mdulo y asegura que un mensaje de
error ser desplegado si una de las variables usadas no est declarada. La instruccin
Option Explicit debe ser incluida en todos los mdulos de Basic.
En su forma ms simple, el comando para una declaracin explcita de una variable es:
Captulo 2 El lenguaje de OpenOffice.org Basic
Este ejemplo declara una variable con el nombre de MiVariable y del tipo Variant. Un
tipo Variant en una variable universal que puede grabar todos los valores posibles,
incluyndo cadenas (string), nmeros, figuras de punto flotante, y valores boleanos
(boolean). Aqu hay algunos ejemplos de variables Variant:
' Asigna una cadena.
MiVar = 1
' Asigna un nmero.
MiVar = 1.0 ' Asigna un nmero de punto flotante.
MiVar = True ' Asigna un valor boleano.
MiVar = "Hola Mundo!"
Las variables declaradas en el ejemplo anterior pueden ser usadas para diferentes tipos de
variables en el mismo programa. Aunque esto provee una flexibilidad considerable, es mejor
restringir una variable a un solo tipo de variable. Cuando OpenOffice.org Basic encuentra
una variable de un tipo incorrectamente definido en un contexto particular, un mensaje de
error es generado.
Use el siguiente estilo cuando desee hacer una declaracin de una variable de un tipo
especfico:
Dim MiVar As Integer ' Declara una variable del tipo entero.
Si desea asignar a las variables un tipo permanente, debe separar las definiciones para cada
variable:
Dim MiVar1 As Integer, MiVar2 As Integer
Si no desea declarar el tipo para cada variable, OpenOffice.org Basic asigna el tipo
Variant a cada variable. Por ejemplo, en la siguiente declaracin de de variables, MiVar1
llegar a ser Variant y MiVar2 llegar a ser Integer (Entero).
Dim MiVar1, MiVar2 As Integer
Las siguientes secciones listan los tipos de variables que estn disponibles en OpenOffice.org
Basic y describe como pueden ser usadas y declaradas.
Cadenas (string)
Cadenas, junto con los nmeros, forma uno de los tipos ms importantes y bsicos de
OpenOffice.org Basic. Una cadena consiste en una secuencia consecutiva de caracteres
individuales. La computadora salva internamente como una secuencia de nmeros donde
cada nmero representa un carcter especifico.
Cdigos de pgina
El conjunto de caracteres ISO8859 provee un standar internacional. Los primeros 128
caracteres del conjunto ISO corresponden al conjunto de caracteres ASCII. El standar ISO
introduce nuevos conjuntos de caracteres (Cdigos de pgina) de esta manera ms lenguajes
pueden ser correctamente desplegados. Sin embargo, como un resultado, el mismo valor del
carcter puede representar diferentes caracteres en diferentes lenguajes.
Unicode
Unicode incrementa el tamao de un carcter a cuatro bytes y combina diferentes conjuntos
de caracteres para crear un standar que se ajuste al mayor nmero de lenguajes del mundo. La
versin 2.0 de Unicode est soportada por muchos programas incluyndo OpenOffice.org y
OpenOffice.org Basic.
Variables de cadenas
OpenOffice.org Basic salva las cadenas como cadenas de variables en Unicode. Una variable
de cadena puede guardar ms de 65535 caracteres. Internamente, OpenOffice.org Basic salva
el valor Unicode asociado a cada carcter. La memoria de trabajo necesaria para cada
variable de cadena depende del tamao de la cadena.
Ejemplo de una declaracin de variable de cadena:
Dim Variable As String
Cuando porte aplicaciones VBA, asegurese que el mximo permitido en OpenOffice.org Basic sea
observado (65535 caracteres).
Para dividir una cadena en dos lneas, agregue un signo de ms al final de la primera lnea:
Dim MiCadena As String
MiCadena = "Esta cadena es tan larga que " + _
"que se dividi en dos lneas."
Para incluir una comilla doble () dentro de una cadena, ingresela doble en el punto en que
desea que aparezca:
Dim MiCadena As String
MiCadena = "una ""- comilla doble" ' produce una "- comilla doble
Nmeros
OpenOffice.org Basic soporta cinco tipos bsicos para procesar nmeros.
Enteros (Integer)
Flotante (Float)
Doble (Double)
Moneda (Currency)
Variables de enteros
Las variables de enteros pueden guardar cualquier nmero entre -32768 y 32768. Una
variable de entero puede tomar dos bytes de memoria. El smbolo de tipo de declaracin es
%. Los clculos para usar las variables de enteros son muy rpidas y son particularmente
tiles para contadores de ciclos. Si asigna un nmero de punto flotante a una variable de
entero, el nmero ser redondeado hacia arriba o hacia abajo al entero ms cercano.
Ejemplo de declaracin para variables de enteros:
Variables sencillas
Las variables sencillas pueden guardar cualquier nmero de punto flotante positivo o
negativo entre 3.402823 x 1038 y 1.401298 x 10-45. Una variable sencilla puede tener cuatro
bytes de memoria. El smbolo del tipo de declaracin es !.
Originalmente, las variables sencillas fueron usadas para reducir el tiempo para calcular
nmeros ms precisos de las variables dobles. Sin embargo, las consideraciones de velocidad
ya no se aplican, reduciendo la necesidad de las variables sencillas.
Ejemplos de declaraciones de variables sencillas.
Dim Variable As Single
Dim Variable!
Variables dobles
Las variables dobles pueden guardar cualquier nmero positivo o negativo de punto flotante
entre 1.79769313486232 x 10308 y 4.94065645841247 x 10-324. Una variable doble puede tener
ocho bytes de memoria. Las variables dobles son usadas para clculos ms precisos. El
smbolo para el tipo de declaracin es #.
Ejemplos de declaraciones de variables dobles:
Dim Variable As Double
Dim Variable#
Variables de moneda
Las variables de moneda difieren de las dems por la forma en que maneja los valores. El
punto decimal es fijo y est limitado a cuatro posiciones decimales. La variable puede
contener ms de 15 nmeros despus del punto decimal. Puede guardar cualquier valor entre
922337203685477.5808 y +922337203685477.5807 tomando ocho bytes de memoria. El
smbolo para el tipo de declaracin es @.
Las variables de moneda son ms usadas para clculos de negocios que evitan redondeos no
Captulo 2 El lenguaje de OpenOffice.org Basic
Nmeros enteros
El mtodo ms simple es trabajar con cualquier nmero entero. Estos son listados en el texto
fuente sin los separadores de miles:
Dim A As Integer
Dim B As Float
A = 1210
B = 2438
Los nmeros pueden estar precedidos por el signo positivo (+) y/o negativo (-) (con o sin
espacios en medio):
Dim A As Integer
Dim B As Float
A = + 121
B = - 243
Nmeros decimales
Cuando use un nmero decimal, use el punto (.) como separador de punto decimal. Esta regla
asegura que los textos fuentes pueden ser transferidos de un pas a otro sin necesidad de
conversin.
Dim A As Integer
Dim B As Integer
Dim C As Float
A = 1223.53
' Es redondeado
B = - 23446.46 ' Es redondeado
C = + 3532.76323
Tambin puede usar los signos positivos (+) o negativo (-) antes de los nmeros decimales.
(de nuevo, con o sin espacios).
Si un nmero decimal es asignado a una variable entera, OpenOffice.org Basic redondea el
nmero hacia arriba o hacia abajo.
=
=
=
=
1.43E2' Correcto
+ 1.43E2
' Correcto (espacio entre el positivo y el nmero)
- 1.43E2
' Correcto (especio entre el negativo y el nmero)
1.43E-2
' Correcto (exponente negativo)
A = 1.43E -2
A = 1,43E-2
A = 1.43E2.2
Ntese que los ejemplos incorrectos primero y tercero no generarn mensaje de error, sino
que las variables tendrn valores incorrectos. La expresin
A = 1.43E -2
es interpretada como 1.43 menos 2, que corresponde al valor -0.57. Sin embargo, el valor
1.43 * 102 (correspondiente a 0.0143) fue el valor que se buscaba. Con el valor:
A = 1.43E2.2
Valores hexadecimales
En el sistema hexadecimal (sistema base 16), un nmero de dos dgitos corresponde
precisamente a un byte. Esto permite que los nmeros sean manejados de una manera que
refleja de una forma ms cercana la arquitectura de la computadora. En el sistema
hexadecimal, los nmeros del 0 al 9 y las letras de la A a la F son usadas como nmeros. Una
A es el standard para el nmero decimal 10, mientras la F representa el nmero decimal 15.
OpenOffice.org Basic le permite usar los valores hexadecimales, si estn precedidos por &H.
Dim A As Long
A = $HFF
A = $H10
Valores octales
OpenOffice.orgOpenOffice.org Basic tambin entiende el sistema octal (sistema base 8), el
cual usa los nmeros del 0 al 7. Puede representar estos nmeros son el prefijo &O.
Dim A As Long
A = &O77
A = &O10
Falso y verdadero
Variables boleanas
Las variables boleanas slo pueden contener dos valores: Verdadero o Falso. Son tiles
para especificaciones binarias que solamente pueden adoptar dos estados. Un valor boleano
Captulo 2 El lenguaje de OpenOffice.org Basic
Campos de datos
Adicionalmente a las variables simples (scalars), OpenOffice.org Basic soporta tambin
campos de datos (arrays2). Un campo de datos contiene varias variables, las cuales pueden
ser direccionadas atraves de un ndice.
Matrices simples
La declaracin de una matriz es similar a la declaracin de una variable simple. Sin embargo,
a diferencia de la declaracin de la variable, el nombre de la matriz est seguido de parntesis
que contiene la especificacin del nmero de elementos. La expresin:
Dim MiMatriz(3)
declara una matriz con cuatro variables del tipo Variant, llamadas MiMatriz(0),
MiMatriz(1), MiMatriz(2), MiMatriz(3).
Tambin se pueden declarar variables de un tipo especfico para una matriz. Por ejemplo, la
siguiente lnea declara una matriz con cuatro elementos enteros:
Dim MiMatriz(3) As Integer
En los ejemplos previos, el ndice para la matriz siempre inicia con el valor standar de cero.
Como una alternativa, un rango de validacin con valores de inicio y final pueden ser
especificados en la declaracin de campo de datos. El siguiente ejemplo declara un campo
de datos con seis valores enteros que pueden ser direccionados usando los ndices del 5 al 10:
2 N.T. El trmino en espaol es arreglos o matrices. Arreglos es una traduccin ms literal y matrices es una
traduccin que corresponde ms al concepto matemtico. Usaremos matrices de ahora en adelante.
Los ndices no necesitan ser valores positivos. El siguiente ejemplo tambin muestra una
forma correcta de declaracin, pero con lmites del campo de datos negativos:
Dim MiMatriz(-10 to -5)
Declara un campo de datos del tipo entero con seis valores que pueden ser direccionados
usando los ndices -10 al -5.
Hay tres lmites que debe observar cuando defina los ndices de los campos de datos:
Otros valores de limites aplican para los ndices de datos en VBA. Lo mismo aplica al mximo nmero de
elementos posibles por dimensin. Los valores vlidos pueden ser encontrados en la documentacin
relevante a VBA.
declara 4 variables del tipo entero que pueden ser llamadas con las siguientes direcciones:
MiMatriz(1), MiMatriz(2), MiMatriz(3) y MiMatriz(4).
En OpenOffice.org Basic, la expresin Option Base 1 no afecta el nmero de elementos en un arreglo,
como si sucede en VBA. Es el ndice inicial el que se mueve en OpenOffice.org Basic. Mientras que la
declaracin MiMatriz(3) crea tres valores enteros en VBA con los ndices del 1 al 3, la misma declaracin
en OpenOffice.org Basic crea cuatro valores enteros con los ndices del 1 al 4.
define una matriz del tipo entero con dos dimensiones, cada una con 6 ndices (que pueden
ser direccionados del 0 al 5). La matriz completa puede grabar un total de 6 x 6 = 36 valores
enteros.
Aunque puede definir cientos de dimensiones de matrices en OpenOffice.org Basic; sin
embargo, la cantidad disponible de memoria limita el nmero de dimensiones que puede
tener.
A diferencia de VBA, donde puede solo dimensionar matrices dinmicas por el uso de Dim MiMatriz(),
OpenOffice.org Basic le permite cambiar matrices dinmicas y estticas con el uso de ReDim.
El siguiente ejemplo cambia las dimensiones de la matriz inicial de manera que pueda
guardar 11 o 21 valores:
Dim MiMatriz(4) As Integer
'...
Redim MiMatriz(10) As Integer 'Incrementa a 11 elementos
'...
Redim MiMatriz(20) As Integer 'Incrementa a 21 elementos
Cuando restaura las dimensiones de una matriz, puede usar cualquiera de las opciones
presentadas en las secciones previas. Esto incluye campos de datos multi-dimensionales y
especificar los valores de inicio y final. Cuando las dimensiones de un campo de datos son
cambiados, todo su contenido se pierde. Si desea mantener los valores originales, use el
comando Preserve:
Dim MiMatriz(10) As Integer
' ...
ReDim Preserve MiMatriz(20) As Integer ' Incrementa el campo
' de datos reteniendo
' los valores iniciales
Si usa Redim con Preserve, debe usar el mismo tipo de datos que el especificado en la declaracin original
del campo de datos.
Variables locales
Las variables que son declaradas en una funcin o procedimiento son llamadas variables
locales.
Sub Prueba
Dim MiVar As Integer
' ...
End Sub
A diferencia de VBA, OpenOffice.org Basic se asegura que el nombre de una variable local no es usada
simultneamente como global y privada en el encabezado del mdulo. Cuando porte aplicaciones VBA a
OpenOffice.org Basic, debe cambiar los nombres de variables duplicados.
Variables pblicas
Las variables pblicas son definidas en la seccin del encabezado de un mdulo con la
palabra clave Dim. Estas variables estn disponibles para todos los mdulos de su librera.
Mdulo A
Mdulo B
Sub Flop
A = A 1
End Sub
Las variables pblicas solamente estn disponibles a la macro que estn asociadas durante su
ejecucin y luego la variable es restaurada.
Variables globales
En cuanto a su funcin, las variables globales son similares a las variables pblicas, excepto
que sus valores son retenidos an despus de que la macro ha sido ejecutada. Las variables
globales son definidas en el encabezado del mdulo usando la palabra clave Global:
Global A As Integer
Variables privadas
Las variables privadas estn solo disponibles en el mdulo en el cual est definida. Use la
palabra clave Private para definir la variable:
Private MiEntero As Integer
Si varios mdulos contienen variables privadas con el mismo nombre, OpenOffice.org Basic
crea una variable diferente para cada ocurrencia del nombre. En el siguiente ejemplo, ambos
mdulos A y B tienen una variable privada llamada C. La funcin Prueba define una
variable privada en el mdulo A y una privada en el mdulo B.
Mdulo A:
Mdulo B:
Private C As Integer
Sub AsigModuloB
C = 10
End Sub
Sub MuestraVarB
Msgbox C
End Sub
Constantes
En OpenOffice.org Basic, use la palabra clave Const para declarar una constante:
Const A = 10
Operadores
OpenOffice.org Basic comprende los operadores matemticos, lgicos, y de comparacin.
Operadores matemticas
Los operadoras matemticos pueden ser aplicados a todos los tipos numricos, sin embargo,
el operador + puede ser tambin usado para concatenar cadenas.
+ Suma de nmeros y valores de fecha, concatenar cadenas.
- Resta de nmeros y valores de fecha.
* Multiplicacin de nmeros.
/ Divisin de nmeros.
\ Divisin de nmeros con nmeros enteros (redondeo)
^ Elevacin a exponente.
Captulo 2 El lenguaje de OpenOffice.org Basic
Operadores lgicos
Los operadores lgicos permiten concatenar elementos de acuerdo al lbegra boleana. Si los
operadores son aplicados sobre valores boleanos, el vnculo provee el resultado ruquerido
directamente. Si lo usa en conjunto con valores enteros y entero largo, el vnculo ser hecho a
nivel de bits.
AND vnculo AND
OR vnculo OR
XOR Vnculo OR exclusivo.
NOT Negacin
EQV prueba equivalente (ambas partes Verdadero o Falso)
IMP Implicacin (Si la primera parte es verdadera, entonces la segunda parte tambin debe
ser verdadera)
Operadores de comparacin
Los operadores de comparacin pueden ser aplicados a todos los tipos de variables
elementales (nmeros, fecha, cadenas, y valores boleanos)
= Igualdad entre fechas, nmeros y cadenas.
<> Diferencia entre fechas, nmeros y cadenas.
> Mayor que para nmeros, fechas y cadenas.
>= Mayor que o igual para nmeros, fechas y cadenas.
< Menor que para nmeros, fechas y cadenas.
<= Menor que o igual para nmeros, fechas y cadenas.
OpenOffice.org Basic no soporta el operador Like de VBA
Control de flujo
Las instrucciones de control de flujo restringen la ejecucin de bloques de cdigo mientras
una condicin particular sea satisfecha.
En este ejemplo, la variable B es asignada al valor 2 cuando A es mayor que 3, de otra forma
a B le es asignado el valor 0.
Para instrucciones ms complejas, puede hacer cascadas de la instruccin If, por ejemplo:
If A =
B
ElseIf
B
Else
B
End If
0
=
A
=
Then
0
< 3 Then
1
= 2
DiaSemana
= "Domingo"
= "Lunes"
= "Martes"
= "Mircoles"
= "Jueves"
= "Viernes"
= "Sbado"
Ciclos
Un ciclo ejecuta un bloque de cdigo el nmero de pasos que sea especificado. Tambin
pueden definirse ciclos con un nmero indeterminado de pasos.
En este ejemplo, el contador inicia con 10 y el valor es reducido en uno en cada paso, hasta
que el contador es 1.
La instruccin Exit For le permite salir de un ciclo For prematuramente. En el siguiente
ejemplo, el ciclo es terminado en el quinto paso:
Dim I
For I = 1 To 10
If I = 5 Then
Exit For
End If
' ... parte central del ciclo
Next I
La variante de ciclo For Each ... Next de VBA no est soportada en OpenOffice.org Basic.
Do ... Loop
El Do ... Loop no est vinculado a un nmero determinado de pasos. En cambio, el
Do ... Loop es ejecutado hasta que cierta condicin sea cumplida. Hay cuatro variantes
del Do ... Loop (en el siguiente ejemplo, A > 10 representa cualquier condicin):
1. Variante Do ... Loop
Do While A > 10
' Cuerpo del ciclo
Loop
verifica que la condicin sea satisfecha antes de cada paso y slo despus se ejecuta el
ciclo.
2. Variante Do Until ... Loop
Do Until A > 10
'Cuerpo del ciclo
Loop
Tambin verifica su condicin despues del primer paso, pero trabaja el ciclo hasta que la
condicin no sea satisfecha.
Como en los ciclo For ... Next, el Do ... Loop tambin est provisto de una
instruccin de terminacin.El comando Exit Do puede hacer salir del ciclo en cualquier
punto dentro del ciclo.
Do
If A = 4 Then
Exit Do
End If
Los valores son intercambiados en pares tantas veces mientras sean ordenados en orden
ascendente. Como las burbujas, los valores gradualmente van emigrando a la posicin
Procedimientos y funciones
Los procedimientos y funciones son puntos fundamentales de la estructura de un programa.
Proveen la estructura para dividir problemas complejos en varias sub-tareas.
Procedimientos
Un procedimiento ejecuta una accin prctica sin proveer un valor explcito. Su sintaxis es:
Sub Prueba
' aqu coloca el cdigo del procedimiento
End Sub
El ejemplo define un procedimiento llamado Prueba y contiene el cdigo que puede ser
accesado desde cualquier punto del programa. La llamada es hecha al ingresar el nombre del
procedimiento en cierto punto del programa:
' ... cdigo del programa
Prueba
' ... cdigo del programa
Funciones
Una funcin, como un procedimiento, combina un bloque de programas para que sean
ejecutados como una unidad lgica. Sin embargo, a diferencia del procedimiento, una
funcin retorna un valor.
Function Prueba
' ... aqu va el cdigo de esta funcin
Prueba = 123
End Function
3 N.T. Deje la expresin en ingls, porque muchos libros de informtica conocen este algoritmo con este nombre,
aun las traducciones al espaol. La traduccin sera ordenamiento de burbuja.
Pasando parmetros
Las funciones y procedimientos pueden recibir uno o ms parmetros. Los parmetros deben
ser encerrados entre parntesis despus del nombre de la funcin o procedimiento. El
ejemplo:
Sub Prueba (A As Integer, B As String)
End Sub
define un procedimiento que espera un entero para A y una cadena para B como parmetros.
OpenOffice.orgOpenOffice.org Gua del programador BASIC
En este ejemplo, el valor A que est definido en la funcin Prueba, es pasado como un
parmetro en la funcin CambiaValor. El valor en cambiado a 20 y pasado a ElValor, el
cual es retenido cuando se sale de la funcin.
Tambin se puede pasar un parmetro como un si no desea los cambios subsecuentes
que afectan al valor originalmente pasado del parmetro. Para especificar que un parmetro
es pasado como valor, asegurese que la palabra clave ByVal precede la declaracin de la
variable en el encabezado de la funcin.
En el ejemplo anterior, si reemplazamos la funcin CambiaValor con:
Sub CambiaValor(ByVal ElValor As Integer)
ElValor=20
End Sub
la variable A permanece sin afectarse por este cambio. Despus de llamar a la funcin
CambiaValor, la variable A mantiene el valor de 10.
El mtodo de pasar parmetros a los procedimientos y funciones es virtualmente identico a VBA. Por
defecto, los parmetros son pasados por referencia. Para pasar los parmetros como valores, use la
palabra clave ByVal. En VBA, deber tambin usar la palabra clave ByRef para forzar que un parmetro
sea pasado por referencia. OpenOffice.org Basic no soporta esta palabra clave porque ya es un
procedimiento por defecto en OpenOffice.org Basic.
Como una regla, funciones y procedimientos en OpenOffice.org Basic son pblicos. Las palabras claves
Public y Private usadas en VBA no son soportadas en OpenOffice.org Basic.
Parmetros opcionales
Las funciones y procedimientos solamente pueden ser llamados cuando todos los parmetros
necesarios son pasados durante la llamada.
OpenOffice.org Basic le permite definir parmetros como , esto es, si el parmetro
correspondiente no est incluido dentro de la llamada, OpenOffice.org Basic lo pasa como un
parmetro vaco. En el ejemplo:
Sub Prueba(A As Integer, Optional B As Integer)
End Sub
Manejo de errores
El correcto manejo de las situaciones de errores es una de las tareas que ms tiempo de
programacin consumen. OpenOffice.org Basic provee un rango de tareas para simplificar el
manejo de errores.
La Instruccin On Error
La instruccin On Error es la llave para cualquier manejo de errores:
Sub Prueba
On Error Goto ManejoError
' Tareas en las que puede ocurrir un error.
Exit Sub
ManejoError:
'Cdigo individualizado para el manejo del error.
End Sub
El comando Resume
El comando Resume Next contina el programa en el lnea siguiente a la que ocurri el
error en el programa despus del cdigo en el manejador de errores ha sido ejecutado:
Use el comando Resume Proceed para especificar un punto de salto para continuar el
programa despus del manejo de errores:
ManejoError:
' ... cdigo para el manejo del error.
Resume Proceed
Proceed:
' El programa contina aqu despus del error.
Para continuar el programa sin ningn mensaje cuando ocurre un error, use el siguiente
formato:
Sub Prueba
On Error Resume Next
' Tareas en las que puede ocurrir un error.
End Sub
use el comando On Error Resume Next con cuidado porque sus efectos son globales.
Para ms informacin, vea
La llamada
MsgBox "Error " & Err & ": " & Error$ & " (lnea : " & Erl & ")"
muestra cmo la informacin de error puede ser desplegada en una ventana de mensajes.
Mientras VBA sumariza los mensajes de error es un objeto estatistico llamado Err, OpenOffice.org Basic
provee las variables Err, Error$, y Erl.
Este procedimiento inicia con la definicin del manejador de errores, seguido del cdigo del
programa actual. Al final del cdigo del programa el manejador de errores es desactivado
mediante la llamada a On Error Goto 0 y la implementacin del procedimiento
termina con el comando Exit Sub (no se confunda con End Sub)
El ejemplo primero verifica que el nmero de error corresponda a un nmero esperado (como
el guardado en la constante imaginaria NumeroError) y que maneja el error de manera
adecuada. Si otro error ocurre, el sistema genera una advertencia. Es importante verificar el
nmero de error para que puedan ser detectados errores no anticipados.
La llamada a On Error Goto 0 al final del cdigo restaura el estado de la informacin del
error (el cdigo de error en las variables de sistema Err) de esta manera un error que ocurra
despus puede ser claramente reconocido.
Funciones de conversin
En muchas situaciones, las circunstancias hacen que una variable de un tipo tenga que ser
cambiado a una variable de otro tipo.
que a primera vista parece correcto, finalmente prueba que es una trampa. El intrprete de
Basic primero calcula el resultado del proceso de la suma y luego la convierte en cadena, lo
cual, como su resultado, produce la cadena "2".
Si, de otra forma, el intrprete de Basic primero convierte los valores iniciales B y C en una
cadena y aplica el operador de suma para el resultado, esto produce la cadena "11".
Lo mismo aplica cuando se usan variables del tipo Variant:
Desde que las variables pueden contener nmeros y letras, no es claro que ser asigando a la
variable A si el nmero 2 o la cadena "11".
El error de las fuentes notados por las conversiones implcitas solamente pueden ser evitadas
por la programacin cuidadosa. Por ejemplo, evitando el uso del tipo de datos variant.
Para evitar otros errores resultantes de la conversin implicita de valores, OpenOffice.org
Basic ofrece un rango de de funciones de conversin, las cuales puede usar para definir el
tipo de datos a que debe convertir en una operacin:
Puede usar estas funciones de conversin para definir como OpenOffice.org Basic debe
realizar las operaciones de conversin:
Dim A As String
Dim B As Integer
Dim C As Integer
B = 1
C = 1
A = CStr(B + C) ' B y C primero son sumandos, luego convertidos
' (produce el nmero 2)
A = Cstr(B) + Cstr(C)
' B y C son convertidos en cadena, y luego
' combinados (produce la cadena "11"
Durante la primera suma en el ejemplo, OpenOffice.org Basic primero suma los valores
enteros y luego convierte el resultado en una cadena de caracteres. Se le asigna a A la cadena
2. En segunda instancia, las variables enteras son primero convertidas en dos cadenas y luego
vinculadas una con otra con el resultado de la asignacin. Entonces a A le es asiganda la
cadena "11".
Las funciones de conversin numricas CSng y CDbl tambin aceptan nmeros decimales.
El smbolo del punto decimal a usar es el correspondiente a la definicin del pas especfico.
Para conversin, el mtodo CStr usa las especificacin seleccionada del pas especfico
cuando formatea nmeros, fechas y detalles de hora.
Estas funciones son especialmente tiles cuando se requiera entrada del usuario. Por ejemplo,
puede verificar que el valor que se ha digitado es un nmero o fecha vlido.
If IsNumeric(EntradaUsuario) Then
EntradaValida = EntradaUsuario
Else
EntradaValida = 0
Msgbox "Entrada no vlida."
End If
La funcin IsBoolean define una variable interna del tipo boleano para ayudarse, y trata
de asignarle el valor del parmetro. Si la asignacin es satisfactoria, la funcin retorna
Verdadero. Si esta falla, se produce un error en tiempo de ejecucin, el cual es interceptado
por la funcin de error de la funcin.
Si una cadena en OpenOffice.org Basic contiene un valor no-numrico y esto es asignado a un nmero,
OpenOffice.org Basic no produce un mensaje de error, pero transfiere el valor 0 a la variable. Este
procedimiento difiere de VBA. Ahi, un error es disparado la implementacin del programa terminada si una
asignacin correspondiente es ejecutada.
Cadenas
Trabajando con conjuntos de caracteres
Cuando administre cadenas, OpenOffice.org Basic usa el conjunto de caracteres Unicode.
Las funciones Asc y Chr permite el valor Unicode perteneciente al carcter establecido y/o
el correpondiente carcter encontrado para el valor Unicode. Las siguientes expresiones
asignan varios valores Unicode a la variable Codigo:
Codigo = Asc("A") 'Letra latina A. (Valor Unicode 65)
Codigo = Asc("") 'Caracter Euro. (Valor Unicode 8364)
Codigo = Asc("") 'Letra cirilica A. (Valor Unicode 1083)
asegura que "MiCadena" es inicializada con el valor del nmero 13, el cual es el standar del
salto de lnea.
El comando Chr es a menudo usado en lenguajes Basic para insertar caracteres de control
dentro de las cadenas.
La asignacin
MiCadena = Chr(9) + "Esto es una prueba" + Chr(13)
se asegura que que el texto sea precedido por una tabulacin (Unicode valor 9) y un salto de
lnea (Unicode valor 13) sea agregado al final.
OpenOffice.orgOpenOffice.org Gua del programador BASIC
Bsqueda y reemplazo
OpenOffice.org Basic provee la funcin InStr para buscar cadenas parciales dentro de otra
cadena:
CadenaResultado = InStr (CadenaBuscar, MiCadena)
En los ejemplos previo, InStr omite los caracteres en mayscula o minscula. Para cambiar
las bsquedas de manera que InStr sea sentitivo a maysculas/minsculas, agrege el
parmetro 0, como se muestra en el siguiente ejemplo:
CadenaResultado = InStr (CadenaBuscar, MiCadena, 0)
Usando las funciones anteriores para editar cadenas, los programadores pueden buscar y
reemplazar una cadena por otra:
Resultado = ""
PosInicia = 1
PosActual = 1
If Buscar = "" Then
Resultado = CadFuente
Else
Do While PosActual <> 0 Then
PosActual = InStr(PosInicia, CadFuente, CadBuscar)
If PosActual <> 0 Then
Resultado = Resultado + Mid(CadFuente, PosInicia, _
PosActual PosInicia)
Resultado = Resultado + NuevParte
Else
Resultado = Resultado + Len(CadBuscar)
End If ' PosActual <> 0
Loop
End If
Reemplazar = Resultado
End Function
reemplaza tres caracteres con la cadena "es" desde la sexta posicin de la cadena
MiCadena.
Formateando cadenas
La funcin Format formatea los nmeros como una cadena. Para hacer esto, la funcin
Format espera una expresin para ser especificada, la cual es usada como plantilla para
formatear los nmeros. Cada posicionador dentro de la planilla asegura que este sea
formateado de acuerdo al valor de salida. Los posicionadores ms importantes dentro de una
planilla son el cero (0), numeral (#), punto (.), coma (,), y el signo de dlar ($).
El carcter cero dentro de la plantilla, asegura que ese nmero siempre sea puesto en la
posicin correspondente. Si no es provisto un nmero, 0 es desplegado en su lugar.
Un punto se coloca para el smbolo de punto decimal definido en las especificaciones del pas
OpenOffice.orgOpenOffice.org Gua del programador BASIC
=
=
=
=
Format(-1579.8, MiFormato)
Format(1579.8, MiFormato)
Format(0.4, MiFormato)
Format(0.434, MiFormato)
'
'
'
'
Guarda
Guarda
Guarda
Guarda
"-1579,80"
"1579,80"
"0,40"
"0,43"
De la misma manera, pueden agregarse ceros al frente de un nmero para archivar con el
formato deseado:
MiFormato = "0000.00"
MiCadena
MiCadena
MiCadena
MiCadena
=
=
=
=
Format(-1579.8, MiFormato)
Format(1579.8, MiFormato)
Format(0.4, MiFormato)
Format(0.434, MiFormato)
'
'
'
'
Guarda
Guarda
Guarda
Guarda
"-1579,80"
"1579,80"
"0000,40"
"0000,43"
Una coma representa, el carcter que el sistema operativo usa como el separador de miles, y
el signo numeral mantiene un dgito o lugar que solamente es desplegado cuando se requiere
en la cadena de salida:
MiFormato = "#,##0.00"
MiCadena
MiCadena
MiCadena
MiCadena
=
=
=
=
Format(-1579.8, MiFormato)
Format(1579.8, MiFormato)
Format(0.4, MiFormato)
Format(0.434, MiFormato)
'
'
'
'
Guarda
Guarda
Guarda
Guarda
"-1.579,80"
"1.579,80"
"0,40"
"0,43"
En el lugar del signo de dlar, la funcin Format desplegar el smbolo de moneda definido
en el sistema.
MiFormato = "#,##0.00 $"
MiCadena
MiCadena
MiCadena
MiCadena
=
=
=
=
Las instrucciones de formateo usadas en VBA para formatear fechas y horas no estn soportadas en VBA.
Fecha y hora
OpenOffice.org Basic provee el tipo de datos Date, el cual salva la fecha y la hora en
formato binario.
Esta asignacin puede funcionar apropiadamente porque OpenOffice.org Basic convierte los
valores definidos de fecha como una cadena dentro de la variable de fecha. Este tipo de
asignacin, sin embargo, puede causar errores, porque los valores de fecha y hora son
definidos y desplegados de diferentes formas en los diferentes pases.
Desde que OpenOffice.org usa la configuracin especifica del pas del sistema operativo
cuando convierte una cadena en un valor de fecha, la expresin mostrada anteriormente
solamente funciona con las configuraciones especificas que concuerden con la expresin de
cadena.
Para evitar este problema, la funcin DateSerial debe ser usada para asignar un valor fijo
a una variable de fecha:
Dim MiFecha As Date
MiFecha = DateSerial(2001, 1, 1)
Los parmetros de la funcin debe estar en esta secuencia: ao, mes, da. La funcin se
asegura que la variable sea asignada correctamente con el valor correcto obviando las
especificaciones especficas de un pas.
La funcin TimeSerial formatea los detalles de la hora, de la misma manera que la
funcin DateSerial formatea fechas:
Dim MiFecha As Date
MiFecha = TimeSerial(11, 23, 45)
Sus parmetros deben ser especificados en esta secuencia: horas, minutos y segundos.
Estas funciones extraen secciones de la fecha y hora desde una variable de fecha especfica.
El ejemplo:
Weekday(MiFecha)
= "Domingo"
= "Lunes"
= "Martes"
= "Mircoles"
= "Jueves"
= "Viernes"
= "Sbado"
Now retorna el punto presente en el tiempo (fecha y hora como un valor combinado)
Archivos y directorios
Trabajar con archivos es una de las principales bsicas de una aplicacin. El API de
OpenOffice.org Basic le provee un amplio rango de objetos por las cuales puede crear, abrir
y modificar documentos. Estos estn presentados con detalle en el captulo 4. Apesar de esto,
en algunos casos deber accesar directamente el sistema de archivos, buscar por los
directorios o editar archivos de texto. La librera de tiempo de ejecucin de OpenOffice.org
Basic provee algunas funciones bsicas para realizar estas tareas.
Algunas funciones especificas de archivos y directorios del DOS no estn provistas en OpenOffice.org, o su
funcin es limitada. Por ejemplo, el soporte para las funciones ChDir, ChDrive y CurDir no est
soportada. Algunas propiedades especificas del DOS no estn usadas en las funciones que esperan los
archivos como parmetros (por ejemplo, para diferenciar entre archivos ocultos y sistemas de archivos).
Estos cambios son necesarios para asegurar un mayor nivel de independencia de la plataforma en
OpenOffice.org.
Administrando archivos
Buscando por los directorios
La funcin Dir en OpenOffice.org Basic es la responsable de buscar por los directorios a los
archivos y sub-directorios. Cuando se solicita por primera vez, una cadena conteniendo la
ruta de los directorios debe ser asignado a Dir como el primer parmetro. El segundo
parmetro de Dir especifica el archivo o directorio que se debe buscar. OpenOffice.org
Basic retorna el nombre de la primera entrada de directorio encontrada. Para recuperar la
siguiente entrada, la funcin Dir debe ser llamada sin parmetros. Si la funcin Dir no
encontra ms entradas, retorna una cadena vaca.
El siguiente ejemplo muestra como la funcin Dir puede ser usada para recuperar todos los
archivos localizados en un directorio. El procedimiento guarda los nombres individuales en la
variable Archivos y luego despliega un cuadro de mensaje.
Sub VerArchivos
Dim Siguiente As String
Dim Archivos As String
Archivos = ""
Siguiente = Dir("C:\",0)
While Siguiente <> ""
Archivos = Archivos & Chr(13) & Siguiente
Siguiente = Dir
Wend
Msgbox Archivos
End Sub
El 0 es usado como segundo parmetro en la funcin Dir para asegurarse que la funcin
solamente retorne nombres de archivos y los directorios son ignorados. Los siguientes
parmetros pueden ser especificados:
16 : sub-directorios.
Las opciones provistas por VBA para buscar por los directorios por archivos especficos con las
propiedades oculto, archivo de sistema, archivado, y nombre de volumen no existen en OpenOffice.org
Basic porque corresponden a funciones del sistema de archivos que no estn disponibles en todos los
sistemas operactivos.
Las especificaciones de la ruta listada en Dir puede usar los comodines "*" y "?" tanto en VBA como en
OpenOffice.org Basic. El OpenOffice.org Basic sin embargo el comodn "*" puede ser el ltimo carcter de
un nombre de archivo o de una extensin, lo cual no es vlido en VBA.
Esta funcin crea directorios y subdirectorios. Todos los directorios que se necesitan dentro
de una jerarqua tambin son creados, si se requiere. Por ejemplo, Si slo existe
C:\SubDir1, entonces puede llamar:
MkDir ("C:\SubDir1\SubDir2\SubDir3")
si el directorio contiene sub-directorios o archivos, estos tambin sern borrados, por eso
tenga cuidado con la funcin RmDir.
En VBA, RmDir produce un error si un directorio contiene archivos. En OpenOffice.org Basic, el directorio y
sus archivos son borrados
retorna algunas propiedades del archivo. El valor de retorno es provisto como una mscara de
bits, en la cual son posibles los siguientes valores:
1 : archivo de slo-lectura.
16 : nombre de un directorio.
El ejemplo
puede ser usada para asignarle el status de slo lectura a un archivo. Si ya hay un status de
slo lectura puede ser borrado con la siguiente llamada
SetAttr("prueba.txt",0)
la funcin FileLen determina el tamao del archivo en bytes (como un entero largo)
FileLen("prueba.txt") ' provee el tamao del archivo en bytes.
NumArchivo As Integer
LineaActual As String
Archivo As String
Msg As String
Desplegando mensajes
Msgbox despliega un cuadro de informacin bsico, el cual puede tener uno o ms botones.
En su forma ms simple
MsgBox "Esta es una prueba de informacin"
0 botn Aceptar.
4 botones de Si y No.
Finalmente, los siguientes smbolos de informacin estn disponibles y tambin pueden ser
desplegados agregando el valor relevante al parmetro:
16 signo de detenerse.
32 signo de pregunta.
48 signo de exclamacin.
64 signo de Tip.
La llamada
Msgbox "Desea continuar?", 292
1 Aceptar.
2 Cancelar.
4 Reintentar.
5 Ignorar.
6 Si.
7 No.
Un texto de informacin,
Otras funciones
Beep
La funcin Beep causa que el sistema haga un sonido que puede ser usada para advertir al
usuario de una accin incorrecta. Beep no tiene parmetros.
Beep ' genera un sonido informativo.
Shell
Programas externo pueden ser iniciados usando la funcin Shell.
Shell (Ruta, EstiloVentana, Parametro)
Wait
La funcin Wait termina la ejecucin del programa por un tiempo especifico. El periodo de
espera est especificado en milisegundos. El comando
Captulo 3 La librera de ejecucin de OpenOffice.org Basic
Environ
La funcin Environ retorna las variables de ambiente del sistema operativo. Dependiendo del
sistema operativo y su configuracin, diferentes tipos de datos son guardados aqu. La
llamada
Dim DirTemporal
DirTemporal = Environ("TEMP")
Esta llamada asigna la variable Obj una referencia al objeto creado recientemente.
com.sun.star.frame.Desktop se asemeja a un objeto; sin embargo en la terminologa de UNO
es llamado un "servicio" en lugar de un tipo. De acuerdo a la filosofa de UNO, Obj es
descrito como una referencia a un objeto que soporta el servicio
com.sun.star.frame.Desktop. El trmino "servicio" es usado en OpenOffice.org
Basic y corresponde a los trminos tipo y clase en otros lenguajes de programacin.
4 N.T.: por las siglas de Universal Network Objects
Propiedades y mtodos
Un objeto OpenOffice.org Basic provee un rango de propiedades y mtodos los cuales
pueden ser llamados por los significados de el objeto.
Propiedades
Las propiedades son como las propiedades de un objeto; por ejemplo, Filename y title
para un objeto documento.
Las propiedades son puestas por simple asignacin:
Documento.title = "Guia del programador de OpenOffice.org Basic"
Documento.Filename = "Progman.sxv"
Una propiedad, como una variable normal, tiene un tipo que define cuales valores son los que
puede guardar.
Las propiedades anteriores Filename y title son del tipo cadena.
Mtodos
Los mtodos son entendidos como funciones relacionadas directamente con un objeto a
travs de los cuales este objeto es llamado. El objeto anterior Documento, por ejemplo,
provee el mtodo Save, el cual puede ser llamado de esta manera:
OpenOffice.orgOpenOffice.org Gua del programador BASIC
los mtodos, como las funciones, pueden contener parmetros y retornar valores. La sintaxis
de la llamada a este mtodo est orientada a las funciones clsicas. La llamada:
Ok = Documento.Save(True)
tambin especifica un parmetro True para el objeto documento cuando llama al mtodo
Save. Una vez que el mtodo ha sido completado, Save retorna un valor en la variable Ok.
El mtodo supportsService
Un nmero de objetos UNO soportan el mtodo supportsService, el cual puede
establecer cuando un objeto soporta un servicio particular. La llamada:
Ok = TextElement.supportsService("com.sun.star.text.Paragraph")
Propiedades de depuracin
Cada objeto UNO en OpenOffice.org Basic conoce que propiedades, mtodos e interfaces
contiene. Esto provee propiedades que los retornan en forma de lista. Las propiedades
correspondientes son:
DBG_properties retorna una cadena conteniendo todas las propiedades de un objeto.
DBG_methods retorna una cadena conteniendo todos los mtodos de un objeto.
DBG_supportedInterfaces retorna una cadena conteniendo todas las interfaces que
soporta un objeto.
El siguiente cdigo muestra cmo pueden ser usados DBG_properties y DBG_methods
en aplicaciones reales. Primer se crea el servicio com.sun.star.frame.Desktop y
luego despliega las propiedades y mtodos soportados en cuadros de mensages.
Dim Obj as Object
Obj = createUnoService("com.sun.star.frame.Desktop")
Msgbox Obj.DBG_Properties
Msgbox Obj.DBG_Methods
Cuando se usa DBG_properties, hay que notar que la funcin retorna todas las propiedades
de un servicio particular que puede soportar tericamente. Sin embargo, no hay completa
seguridad ya que estos pueden ser usados en el objeto en cuestin. Despus de llamar las
propiedades, deber usar la funcin IsEmpty para verificar si est realmente disponible.
Referencia API
Se puede encontrar ms informacin sobre los servicios disponibles, y sus interfaces,
mtodos, y propiedades en la referencia API para la API de OpenOffice.org. Esto puede ser
encontrado en www.openoffice.org:
http://api.openoffice.org/common/ref/com/sun/star/module-ix.html
La interface com.sun.star.lang.XMultiServiceFactory
Los objetos dependientes del contexto generalmente son creados por significados de un
mtodo de un objeto, del cual el objeto depende. El mtodo createInstance, el cual est
definido en la interface XmultiServiceFactory, es usado en particular en estos objetos
de documentos.
El objeto de dibujo antes mencionado puede ser creado, por ejemplo, de la siguiente manera,
usado un objeto de hoja de clculo:
Dim Rectangulo As Object
Rectangulo = _
SpreadSheet.createInstance("com.sun.star.drawing.RectangleShape")
Una plantilla de prrafo en un documento de texto puede ser creada dela misma manera:
Dim Estilo As Object
Estilo = _
TextDocument.createInstance("com.sun.star.style.ParagraphStyle")
La interface com.sun.star.container.XNameAccess
Un ejemplo del uso de XnameAccess es provisto por los objetos de hoja de un libro de
clculo. Esto combina todas las pginas dentro de un libro de clculo. Las pginas
individuales son accesadas usando el mtodo getByName de XNameAccess:
La interface com.sun.star.container.XNameContainer
La interface XNameContainer toma la insercin, borrado y modificacin de elementos
subordinados en un objeto bsico. Las funciones responsables de esto son insertByName,
removeByName y replaceByName.
El siguiente es un ejemplo prctico de esto. Llama un documento, que contiene un objeto
StyleFamilies y lo usa para cambiar las plantillas de los prrafos (ParagraphStyles) en
el documento actual.
Dim StyleFamilies As Object
Dim ParagraphStyles As Object
Dim NewStyle As Object
StyleFamilies = Textdoc.StyleFamilies
ParagraphStyles = StyleFamilies.getByName("ParagraphStyles")
ParagraphStyles.insertByName("NewStyle", NewStyle)
ParagraphStyles.replaceByName("ChangingStyle", NewStyle)
ParagraphStyles.removeByName("OldStyle")
La interface com.sun.star.container.XIndexAccess
XIndexAccess provee los mtodos getByIndex y GetCount para llamar los objetos
subordinados. GetByIndex provee un objeto con un ndice particular. GetCount retorna
cuantos objetos estn disponibles.
Dim Sheets As Object
Dim Sheet As Object
Dim I As Integer
Sheets = SpreadSheet.Sheets
For I = 0 To Sheets.getCount() - 1
Sheet = Sheets.getByIndex(I)
' Editar la hoja
Next I
El ejemplo muestra un ciclo que corre entre todos los elementos de las hojas uno despus del
otro y guarda una referencia a cada uno en la variable de objeto Sheet. Cuando trabaja con
ndices, note que getCount retorna el nmero de elementos. Los elementos en
getByIndex sin embargo estn numerados empezando por el 0. Por eso la variable del
contador del ciclo se ejecuta desde 0 hasta getCount() - 1.
La interface com.sun.star.container.XIndexContainer
La interface XIndexContainer provee las funciones insertByIndex y
removeByIndex. Los parmetros estn estructurados de la misma forma a sus funciones
correspondientes en XnameContainer.
La API de OpenOffice.org ha sido estructurada de manera que muchas de sus partes hacen
posible que sean usadas para diferentes tareas. Esto incluye las interfaces y servicios para
crear, abrir, salvar, convertir e imprimir documentos y la administracin de plantillas. Desde
que estas areas de funciones estn disponibles en todos los tipos de documentos, estn
explicadas de primero en este captulo.
El StarDesktop
Cuando trabaje con documentos, hay dos servicios que son usados ms frecuentemente:
Informacin bsica
OpenOffice.org
acerca
de
los
documentos
en
Cuando se trabaja con documentos de OpenOffice.org, es til entender los puntos bsicos de
la administracin de documentos en OpenOffice.org. Esto incluye la forma en que estn
estructurados los nombres de archivos para los documentos de OpenOffice.org, tambin el
formato en que estos archivos estn salvados.
Compresin de archivos
OpenOffice.orgOpenOffice.org Gua del programador BASIC
com.sun.star.frame.FrameSearchFlag.ALL
El siguiente ejemplo muestra como el contenido de una ventana abierta puede ser
reemplazado con la ayuda del parmetro de marco y SearchFlags:
Captulo 5 Trabajando con documentos OpenOffice.org
Doc As Object
Dummy()
URL As String
SearchFlags As Long
SearchFlags = com.sun.star.frame.FrameSearchFlag.CREATE + _
com.sun.star.frame.FrameSearchFlag.ALL
URL = "file:///C:/prueba.sxw"
Doc = StarDesktop.loadComponentFromURL(URL, "MyFrame", _
SearchFlags, Dummy)
Msgbox "Presione Aceptar para desplegar el segundo documento"
URL = "file:///C:/prueba2.sxw"
Doc = StarDesktop.loadComponentFromURL(URL, "MyFrame", _
SearchFlags, Dummy)
El ejemplo primero abre el archivo prueba.sxw en una nueva ventana con el nombre de
marco MyFrame. Una vez que el cuadro de mensaje ha sido confirmado, se reemplaza el
contenido de la ventana con el del archivo prueba2.sxw.
JumpMask (String) una vez que el documento ha sido abierto, salta a la posicin
definida en JumpMask.
El siguiente ejemplo muestra como un archivo de texto separado por comas puede ser abierto
en OpenOffice.org Calc usando la opcin FilterName.
El campo de datos FileProperties cubre precisamente un valor porque guarda solamente una
opcin.
La propiedad FilterName define cuando OpenOffice.org usa un filtro de texto en
OpenOffice.org Calc para abrir archivos.
Objetos de documentos
La funcin vista anteriormente loadComponentFromURL vista en la seccin previa,
retorna un objeto de documento. Esta soporta el servicio
com.sun.star.document.OfficeDocument, el cual se divide en dos interfaces
centrales:
Cuando se cambie a OpenOffice.org, notar que la funcionalidad de los objetos de documentos ha sido
mantenida en gran parte. Los objetos de documentos, por ejemplo, aun proveen mtodos para salvar e
imprimir documentos. Sin embargo, los nombres y parmetros de los mtodos han cambiado.
Esta llamada est provista para el documento que ya ha sido asignado a un espacio de
memoria. Este no es el caso para documentos nuevos. En este caso, se usa el mtodo
storeAsURL. Este mtodo tambin est definido en
com.sun.star.frame.XStorable y puede ser usado para definir la direccin del
documento:
Dim Url As String
Dim Dummy()
Url = "file:///C:/prueba3.sxw"
Doc.StoreAsURL(Url, Dummy())
El cdigo para salvar un documeto se puede extender por estas opciones de manera que el
documento sea salvado solamente si ha sido modificado y que el nombre de archivo sea
preguntado solamente cuando se requiere.
If (Doc.IsModified) Then
If (Doc.HasLocation And (Not Doc.isReadOnly)) Then
Doc.Store
Else
Doc.StoreAsURL(URL, Dummy())
End If
End If
El ejemplo primero verifica que el documento actual haya sido modificado desde la ltima
vez que fue salvado. Contina con el proceso de salvado solamente en este caso. Si el
documento ya tiene asignada una URL y no es de slo lectura, es salvado bajo la URL
existente. Si no tiene una URL o ha sido abierto en el estado de slo lectura, es salvado bajo
una URL nueva.
El siguiente ejemplo muestra como la opcin Overwrite puede ser usada conjuntamente
con storeAsURL:
Dim Doc As Object
Dim FileProperties(0) As New com.sun.star.beans.PropertyValues
Dim Url As String
' ... inicializa el documento
Url = "file:///C:/prueba3.sxw"
FileProperties(0).Name = "Overwrite"
FileProperties(0).Value = True
Doc.StoreAsUrl(sUrl, mFileProperties())
El ejemplo salva Doc sobre el nombre especificado aun cuando exista un archivo con ese
nombre.
Imprimiendo documentos
Similar a salvar, los documentos son impresos directamente por los significados de los
objetos de documento. El mtodo Print de la interface
com.sun.star.view.Xprintable esta provista para este propsito.
En su forma ms simple, la llamada a Print es:
Dim Dummy()
Doc.Print(Dummy())
Collate (Boolean) advierte a la impresora que ordene las pginas de las copias.
Pages (String) contiene la lista de las pginas que se van a imprimir (la sintxis es
como la especificada en el dilogo de impresin)
El siguiente ejemplo muestra como se puede cambiar de impresora y puesto el tamao del
papel con la ayuda de la propiedad Printer:
Dim Doc As Object
Dim PrinterProperties(1) As New com.sun.star.beans.PropertyValue
Dim PaperSize As New com.sun.star.awt.Size
PaperSize.Width=20000 ' corresponde a 20 cm.
PaperSize.Heigth=20000 ' Corresponde a 20 cm
PrinterProperties(0).Name="Name"
PrinterProperties(0).Value="HP Deskjet 400 (Monochrome)"
PrinterProperties(1).Name="PaperSize"
PrinterProperties(1).Value=PaperSize
Doc.Printer=PrinterProperties()
Pantillas
Las plantillas son llamadas listas que contienen atributos de formatos. Ellas se mueven entre
todas las aplicaciones de OpenOffice.org y ayudan significativamente a simplificar el
formateado. Si un usuario cambia uno de los atributos de la plantilla, entonces
OpenOffice.org automticamente ajusta todas las secciones de documentos que dependen de
ese atributo. El usuario puede, por ejemplo, cambiar el tipo de fuente de todos los niveles de
uno de los encabezados por medio de una modificacin central en el documento.
Dependiendo del tipo de documento, OpenOffice.org reconoce un rango de diferentes tipos
de plantillas.
OpenOffice.org Writer soporta:
plantillas de caracteres,
plantilla de prrafos,
plantilla de marcos,
plantillas de pginas y
plantillas de nmeros
plantillas de celdas
plantillas de pginas
plantillas de presentaciones
Doc As Object
Sheet As Object
StyleFamilies As Object
CellStyles As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
CellStyles = StyleFamilies.getByName("CellStyles")
El ejemplo usa la propiedad StyleFamilies de una hoja de clculo para establecer una
lista que contiene todas las plantillas de celdas disponibles.
Las plantillas individuales pueden ser accesadas directamente por medio de un ndice:
Doc As Object
Sheet As Object
StyleFamilies As Object
CellStyles As Object
CellStyle As Object
I As Integer
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
CellStyles = StyleFamilies.getByName("CellStyles")
For I = 0 To CellStyles.Count 1
CellStyles = CellStyle(I)
Msgbox CellStyle.Name
Next I
El ciclo agregado al ejemplo anterior despliega los nombres de todas las plantillas de celdas
una despus de otra en un cuadro de mensaje.
Las propiedades de formato no significan que estn restringidas a las aplicaciones en las que
estn explicadas, sino que pueden ser usadas universalemente. Por ejemplo, muchas de las
propiedades de pginas estn descritas en el captulo 7, y pueden ser usadas no slo en
OpenOffice.org Calc, sino tambin en OpenOffice.org Writer.
Para ms informacin acerca de trabajar con plantillas puede ser encontrada en la seccin
Valores por defecto para las propiedades de carcter y prrafo en el captulo 6, Documentos
de Texto.
el texto actual
Wend
If TextElement.supportsService("com.sun.star.text.Paragraph") Then
Msgbox "el bloque actual contiene un prrafo"
End If
Prrafos
El servicio com.sun.star.text.Paragraph garantiza el acceso al contenido de un
prrafo. El texto de un prrafo puede ser obtenido y modificado usando la propiedad
String:
Dim Doc As Object
Dim Enum As Object
Dim TextElement As Object
Doc = StarDesktop.CurrentComponent
Enum = Doc.Text.Enumeration
While Enum.hasMoreElements
TextElement = Enum.nextElement
Wend
If TextElement.supportsService("com.sun.star.text.Paragraph") Then
TextElement.String = Replace(TextElement.String, "you", "U")
TextElement.String = Replace(TextElement.String, "too", "2")
TextElement.String = Replace(TextElement.String, "for", "4")
End If
El ejemplo abre el documento de texto actual y pasa por medio de l con la ayuda del objeto
Enumeration. Este usa la propiedad TextElement.String en todos los prrafos para accesar los
prrafos relevantes y reemplaza las cadenas, "you", "too" y "for" con los caracteres "U", "2"
y "4". La funcin Replace es usada para reemplazar no cae dentro del alcance lingstico
standard del OpenOffice.org Basic. Esto es una instancia de ejemplo de funcin descrita en el
captulo 3, en la seccin Bsqueda y reemplazo.
El contenido del procedimiento descrito aqu para el acceso de prrafos de un texto es comparable con el
listado Paragraphs usado en VBA, el cual est provisto por los objetos Range y Document disponibles
aqu. Mientras en VBA los prrafos son accesados por su nmero (por ejemplo mediante la llamada
Paragraph(1)), en OpenOffice.org Basic, el objeto Enumeration se decribi previamente cmo debe
usarse.
No hay contraparte directa en OpenOffice.org Basic, para las listas Characters, Sentences, y Words
provistas en VBA. Sin embargo, tiene la opcin puede cambiar a TextCursor el cual permite la
navegacin a nivel de caracteres, frases y palabras. (refierase a TextCursor)
Porciones de prrafos
En el ejemplo previo se pudo cambiar texto, segn se requiera, pero algunas veces tambin se
puede destruir un formato.
Esto es porque el prrafo de turno consiste en sub objetos individuales. Cada uno de estos sub
objetos consiste en su propia informacin de formateado. Si se centra un prrafo, por
ejemplo, contiene una palabra escrita en negrita, entonces esto es representado en
OpenOffice.org por tres porciones de prrafos: La porcin antes de la negrita, luego la
palabra en negrita, y finalmente la porcin despus de la negrita, que de nuevo es puesta
como normal.
Si el prrafo es cambiado usando la propiedad del prrafo String, entonces OpenOffice.org
primero borra las viejas porciones de prrafo e inserta una nueva porcin de prrafo. El
formateo de las secciones previas es borrado.
Para prevenir este efecto, el usuario puede accesar las porciones de prrafo asociadas en lugar
Captulo 6 Documentos de texto
Doc As Object
Enum1 As Object
Enum2 As Object
TextElement As Object
TextPortion As Object
Doc = StarDesktop.CurrentComponent
Enum1 = Doc.Text.Enumeration
'Ciclo por todos los prrafos
While Enum1.hasMoreElements
TextElement = Enum1.nextElement
If TextElement.supportsService("com.sun.star.text.Paragraph") Then
Wend
El ejemplo corre por el documento de texto en un ciclo doble. El ciclo de afuera se refiere a
los prrafos del texto. El ciclo interno procesa las pociones de prrafos en estos prrafos. El
ejemplo de cdigo modifica el contenido en cada una de las porciones de prrafo, usando la
propiedad String de la cadena, como en el caso del ejemplo para los prrafos. Sin embargo,
como las porciones de prrafo son editadas directamente, la informacin del formato es
retenida cuando se reemplazan las cadenas.
Formateando
Hay varias formas para el formateado del texto. La forma ms simple es asignar las
propiedades directamente a la secuencia de texto. Esto es llamado formateo directo. El
formateo directo es usado en particular con documentos cortos, porque estos formatos pueden
ser asignados por el usuario con el mouse. Se puede, por ejemplo, marcar cierta palabra
dentro de un texto usando la negrita o centrar una lnea.
Adicionalmente al formateo directo, tambin puede formatear usando plantillas. Esto es
llamado formateo indirecto. Con el formateo indirecto, el usuario asigna plantillas pre
definidas a ciertas partes del texto. Si el esquema del texto es cambiado posteriormente, el
usuario solamente tiene que cambiar la plantilla. OpenOffice.org cambia la forma de todas
las porciones de texto que usan esa plantilla.
Propiedades de caracteres
Las propiedades de formato que se refieren a caracteres individuales son llamadas
propiedades de caracteres. Estas incluyen la negrita y el tipo de fuente. Los objetos que
permiten esto, tienen que soportar el servicio
com.sun.star.style.CharacterProperties. OpenOffice.org reconoce un
amplio rango de servicios que soportan este servicio. Estos incluyen los servicios
com.sun.star.text.Paragraph para los prrafos y tambin el servicio
com.sun.star.text.TextPortion para las porciones de prrafos.
El servicio com.sun.star.style.CharacterProperties no provee ninguna
interface, pero en cambio, ofrece un rango de propiedades mediante las cuales las
propiedades de prrafos pueden ser definidas y llamadas. Una lista completa de todas las
propiedades de caracteres pueden ser encontradas en la referencia de la API de
OpenOffice.org. La siguiente lista describe las propiedades ms importantes.
Propiedades de prrafos
La informacin de formatos que no se refiere a caracteres individuales, sino a un prrafo
entero es considerada como una propiedad de prrafo. Esto incluye la distancia de un prrafo
al borde de la pgina, y el espaciado de las lneas. Las propiedades de los prrafos estn
disponibles desde el servicio com.sun.star.style.ParagraphProperties.
Las propiedades de los prrafos estn disponibles desde varios objetos. Todos los objetos que
soporten el servicio com.sun.star.text.Paragraph tambin proveen soporte para
las propiedades de prrafo en el servicio
com.sun.star.style.ParagraphProperties.
Una lista completa de las propiedades de prrafos pueden ser encontradas en la referencia de
la API de OpenOffice.org. Las propiedades de prrafos ms comunes son:
Captulo 6 Documentos de texto
Filename = "c:\text.html"
FileNo = Freefile
Open Filename For Output As #FileNo
Print #FileNo, "<HTML><BODY>"
Doc = StarDesktop.CurrentComponent
Enum1 = Doc.Text.createEnumeration
' Ciclo sobre todos los prrafos
While Enum1.hasMoreElements
TextElement = Enum1.nextElement
If TextElement.supportsService("com.sun.star.text.Paragraph") Then
Enum2 = TextElement.createEnumeration
CurLine = "<P>"
' ciclo sobre las porciones de prrafos
While Enum2.hasMoreElements
TextPortion = Enum2.nextElement
If TextPortion.CharWeight = com.sun.star.awt.FontWeight.BOLD THEN
CurLine = CurLine & "<B>" & TextPortion.String & "</B>"
Else
CurLine = CurLine & TextPortion.String
End If
Wend
' Salida de la lnea
CurLine = CurLine & "</P>"
Print #FileNo, CurLine
End If
Wend
' Escribe el pie del HTML
Print #FileNo, "</BODY></HTML>"
Close #FileNo
La estructura bsica de el ejemplo est orientada a los ejemplo vistos de ejecutarse a traves
de las porciones de prrafos de un texto que ya se ha discutido. Las funciones para escribir el
archivo HTML, tambin es una cdigo de prueba del peso de la fuente de las porciones de
texto correspondientes, y provee porciones de prrafos en negrita con su etiqueta
correspondiente en HTML, que ha sido agregada.
El siguiente ejemplo muestra como las propiedades del formato pueden ser editados en
OpenOffice.org. Busca por el texto por porciones de prrafos que han sido marcados con
negrita usando formateo directo. Si encuentra la porcin de prrafo correspondiente, borra el
formateo directo usando el mtodo setPropertytoDefault y asigna el carcter de
plantilla MyBold a la porcin de prrafo correspondiente.
Dim
Dim
Dim
Dim
Dim
Doc As Object
Enum1 As Object
Enum2 As Object
TextElement As Object
TextPortion As Object
Doc = StarDesktop.CurrentComponent
Enum1 = Doc.Text.createEnumeration
' ciclo sobre todos los prrafos
While Enum1.hasMoreElements
TextElement = Enum1.nextElement
If TextElement.supportsService("com.sun.star.text.Paragraph") Then
Enum2 = TextElement.createEnumeration
' ciclo sobre todas las porciones de prrafo
While Enum2.hasMoreElements
TextPortion = Enum2.nextElement
If TextPortion.CharWeight = _
com.sun.star.awt.FontWeight.BOLD AND _
TextPortion.getPropertyState("CharWeight") = _
com.sun.star.beans.PropertyState.DIRECT_VALUE Then
Wend
End If
TextPortion.setPropertyToDefault("CharWeight")
TextPortion.CharStyleName = "MyBold"
End If
Wend
El TextCursor
El TextCursor en la API de OpenOffice.org Basic es comparable con el cursor visible en un
documento OpenOffice.org. Marca cierto punto dentro de un documento de texto y puede
navegar en varias direcciones por medio del uso de comandos. El objeto TextCursor
disponible en OpenOffice.org Basic, sin embargo, no debe ser confundido con el cursor
visible. Estas son dos cosas diferentes.
Advertencia! La terminologa difiere de la usada en VBA: En trminos de funcin de bsqueda, el objeto
Range de VBA puede ser comparada con el objeto TextCursor en OpenOffice.org y no como el nombre
posiblemente indique con el objeto Range de OpenOffice.org.
El objeto TextCursor en OpenOffice.org, por ejemplo, provee mtodos para la navegacin y el cambio de
texto que estn incluidos en el objeto Range de VBA (por ejemplo, MoveStart, MoveEnd, InsertBefore,
InsertAfter). La correspondientecontraparte del objeto TextCursor en OpenOffice.org estn descritos en
las siguientes secciones.
primero mueve diez caracteres a la derecha sin resaltado, y luego se devuelve tres caracteres
y las resalta. El rea resaltada por el TextCursor entonces empieza despus del sptimo
Captulo 6 Documentos de texto
El texto est dividido en sentecias en la base de los smbolos de las sentecias. Los puntos son,
por ejemplo, interpretados como smbolos que marcan el final de una sentencia.
El parmetro Expand es un valor booleano que especifica cuando el rea por la que se pasa
durante la nevegacin va a ser resaltada. Todos los mtodos de navegacin retornan un
parmetro el cual especifica cuando la navegacin ha sido satisfactoria o cuando la accin ha
sido terminada por falta de texto.
La siguiente es una lista de algunos mtodos para editar reas resaltadas usando
TextCursor y las cuales soportan el servicio com.sun.star.text.TextCursor.
El ejemplo primero crea un objeto de documento para el texto que se acaba de abrir. Luego
interacta con todo el texto, oracin por oracin, y resalta cada una de las primeras palabras y
le pone un formato de negrita.
La primera palabra de cada oracin puede ser modificada de la misma manera usando la
propiedad String:
Cursor.gotoEndOfWord(True)
Cursor.String = "Ups"
Proceed = Cursor.gotoNextSentence(False)
Cursor.gotoNextWord(False)
Loop While Proceed
Para insertar los cdigos de control, neceritar no slo el cursor, sino tamben los objetos de
texto asociados. El siguiente ejemplo inserta y prrafo despus del vigsimo carcter de un
texto.
Dim Doc As Object
Dim Cursor As Object
Dim Proceed as Boolean
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.CreateTextCursor
Cursor.goRight(20,False)
Doc.text.insertControlCharacter( Cursor, _
com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
Una vez que el SearchDescriptor ha sido creado, recibe el texto que debe ser buscado:
SearchDesc.searchString = "Cualquier texto"
SearchStyles (boolean) busca por el texto por una plantilla de prrafo especifica.
Una vez que el SearchDescriptor ha sido preparado segn los requerimientos, puede
ser aplicado al documento de texto. El documento OpenOffice.org provee los mtodos
findFirst y findNext para este propsito:
Found = Doc.findFirst (SearchDesc)
Do While Found
' Suchergebnis bearbeiten
Found = Doc.findNext( Found.End, Search)
Loop
I As Long
Doc As Object
Replace As Object
BritishWords(5) As String
USWords(5) As String
El carcter ^ marca el inicio de un prrafo. Todas las ocurrencias del nombre Pedro que
estn al inicio de un prrafo pueden ser encontradas usando la expresin de bsqueda
^Pedro.
El carcter $ marca el final de un prrafo. Todas los casos del nombre Pedro que estn al
final de un prrafo pueden ser encontrados usando la expresin de bsqueda Pedro$.
Un * indica que el carcter precedente puede ser repetido cualquier nmero de veces.
Puede ser combinado con el punto como un comodn para cualquier carcter. La expresin
temper.*a, por ejemplo, puede encontrar las palabras temperancia y
temperatura.
El siguiente ejemplo muestra cmo todas las lneas vacas en un documento de texto pueden
ser removidas con la ayuda de las expresiones regulares ^$:
Dim Doc As Object
Dim Replace As Object
Dim I As Long
Doc = StarDesktop.CurrentComponent
Replace = Doc.createReplaceDescriptor
Replace.SearchRegularExpression = True
Replace.SearchString = "^$"
Replace.ReplaceString = ""
Doc.replaceAll(Replace)
Tablas
El siguiente ejemplo crea una tabla con la ayuda de el mtodo createInstance descrito
previamente.
Dim Doc As Object
Dim Table As Object
Dim Cursor As Object
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
Table = Doc.createInstance("com.sun.star.text.TextTable")
Table.initialize(5, 4)
Doc.Text.insertTextContent(Cursor, Table, False)
Una vez creado, la tabla es puesta con el nmero de filas y columnas requeridas usando la
llamada initialize y luego insertada en el documento de texto usando
insertTextContent.
Como puede ver en el ejemplo, el mtodo insertTextContent espera no solo el objeto
content que va a ser insertado, sino tambin dos parmetros:
Cuando crea o inserta tablas en un documento de texto, los objetos disponibles en VBA son similares en
OpenOffice.org Basic: El objeto de documento TextCursor en OpenOffice.org Basic o la contraparte
Range en VBA. Mientras el mtodo Document.Tables.Add toma la tarea de crear y ajustar una tabla en
VBA, este es creado en OpenOffice.org Basic en concordancia con el ejemplo previo usando
CreateInstance, inicializando el documento por medio de insertTextContent.
Las tablas insertadas en un documento de texto pueden ser determinadas usando un simple
ciclo. El mtodo del documento de texto getTextTables() es usado para este propsito:
Dim
Dim
Dim
Dim
Doc As Object
TextTables As Object
Table As Object
I As Integer
Doc = StarDesktop.CurrentComponent
TextTables = Doc.getTextTables()
For I = 0 to TextTables.count 1
Table = TextTables(I)
' Editando la tabla
Next I
Editando tablas
Una tabla consiste en filas individuales. Estas por vez contienen varias celdas. Estrictamente
hablando, no hay columnas en las tablas de OpenOffice.org. Estas son producidas
simplemente por el arreglo de filas (una bajo la otra) unas juntas a otras. Para simplificar el
acceso a las tablas, OpenOffice.org provee algunos mtodos con los que se pueden operar las
columnas. Estos son tiles si no hay celdas combinadas en la tabla.
Primero tomemos las propiedades de la tabla misma. Estas estn definidas en el servicio
com.sun.star.text.TextTable. Aqu estn las propiedades ms importantes del
objeto tabla:
Filas
Una tabla consiste en una lista de filas. El siguiente ejemplo muestra como las filas de una
tabla pueden ser obtenidas y formateadas:
Dim
Dim
Dim
Dim
Dim
Dim
Doc As Object
Table As Object
Cursor As Object
Rows As Object
Row As Object
I As Integer
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
Table = Doc.createInstance("com.sun.star.text.TextTable")
Table.initialize(5, 4)
Doc.Text.insertTextContent(Cursor, Table, False)
Rows = Table.getRows
For I = 0 To Rows.getCount() - 1
Row = Rows.getByIndex(I)
Row.BackColor = &HFF00FF
Next
El ejemplo primero crea una lista conteniendo todas las filas usando la llamada
Table.getRows. Los mtodos getCount y getByIndex permiten que la lista sea
procesada posteriormente y pertenece a la interface
com.sun.star.table.XtableRows. El mtodo GetByIndex retorna el objeto fila,
y soporta el servicio com.sun.star.text.TextTableRow.
OpenOffice.orgOpenOffice.org Gua del programador BASIC
Mientras los mtodos getByIndex y getCount estn disponibles en todas las tablas, los
mtodos insertByIndex y removeByIndex solamente pueden ser usados en tablas
que no contengan celdas combinadas.
El servicio com.sun.star.text.textTableRow provee las siguientes propiedades:
VertOrient (const) orientacin vertical del marco de texto los detalles sobre la
orientacin vertical del texto en una tabla. (valores de acuerdo con
com.sun.star.text.VertOrientation)
Columnas
Las columnas son accesadas de la misma forma que las filas, usando los mtodos
getByIndex, getCount, insertByIndex y removeByIndex en el objeto Column,
el cual es accesado por medio de getColumns. Sin embargo, estos pueden ser usados en
tablas que no contengan celdas combinadas. Las celdas no pueden ser formateadas por
columna en OpenOffice.org Basic. Para hacer eso, debe usarse el mtodo de formateo de
celdas individuales.
Celdas
Cada celda en un documento OpenOffice.org tiene un nombre nico. Si el cursor de
OpenOffice.org est en una celda, entonces el nombre de la celda puede verse en la barra de
estado. La celda superior izquierda es llamada A1, y la fila inferior derecha es normalmente
llamada Xn, donde X es la letra de la columna y n el nmero de la ltima fila. Los objetos
celdas estn disponibles por medio del mtodo getCellByName() del objeto de tabla. El
siguiente ejemplo muestra como un ciclo pasa por todas las celdas de una tabla e introduce el
nmero correspondiente de celda y columna dentro de la celda:
Doc As Object
Table As Object
Cursor As Object
Rows As Object
RowIndex As Integer
Cols As Object
ColIndex As Integer
CellName As String
Cell As Object
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
Table = Doc.createInstance("com.sun.star.text.TextTable")
Table.initialize(5, 4)
Doc.Text.insertTextContent(Cursor, Table, False)
Rows = Table.getRows
Cols = Table.getColumns
For RowIndex = 1 To Rows.getCount()
For ColIndex = 1 To Cols.getCount()
CellName = Chr(64 + ColIndex) & RowIndex
Cell = Table.getCellByName(CellName)
Cell.String = "Fila: " & CStr(RowIndex) + ", columna: " & _
Cstr(ColIndex)
Next
Next
Una celda de una tabla es comparable con el texto standard. Soporta la interface
TextCursor para crear un objeto TextCursor asociado.
CellCursor = Cell.createTextCursor()
Doc As Object
TextTables As Object
Table As Object
CellNames
Cell As Object
CellCursor As Object
I As Integer
J As Integer
Doc = StarDesktop.CurrentComponent
TextTables = Doc.getTextTables()
For I = 0 to TextTables.count 1
Table = TextTables(I)
CellNames = Table.getCellNames()
Next
For J = 0 to Ubound(CellNames)
Cell = Table.getCellByName(CellNames(J))
If IsNumeric(Cell.String) Then
CellCursor = Cell.createTextCursor()
CellCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.RIGHT
End If
Next
El ejemplo crea una lista TextTables conteniendo todas las tablas del texto que se est
OpenOffice.orgOpenOffice.org Gua del programador BASIC
Marcos de texto
Los marcos de texto son considerados objetos TextContent, como las tablas y grficos.
Estos pueden esecialmente consisten en texto standard, pero pueden ser puestos en cualquier
posicin en una pgina y no estn incluidas en el flujo del texto.
Como con los objetos TextContent, tambin es hecha una distincin con marcos de texto
entre la actual creacin e insercin en el documento.
Dim
Dim
Dim
Dim
Doc As Object
TextTables As Object
Cursor As Object
Frame As Object
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
Frame = Doc.createInstance("com.sun.star.text.TextFrame")
Doc.Text.insertTextContent(Cursor, Frame, False)
Los objetos de marco de texto proveen un rango de propiedades con las cuales la posicin y
el comportamiento del marco pueden ser cambiados. La mayora de estas propiedades estn
definidas en el servicio com.sun.star.text.BaseFrameProperties, el cual
tambin est soportado por cada servicio TextFrame. Las principales propiedades son:
HoriOrient (const) orientacin horizontal del marco de texto (de acuerdo con
com.sun.star.text.HoriOrientation)
VertOrient (const) orientacin vertical del marco de texto (de acuerdo con
com.sun.star.text.VertOrientation)
El siguiente ejemplo crea un marco de texto usando las propiedades descritas anteriormente:
Dim
Dim
Dim
Dim
Doc As Object
TextTables As Object
Cursor As Object
Frame As Object
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
Cursor.gotoNextWord(False)
Frame = Doc.createInstance("com.sun.star.text.TextFrame")
Frame.Width = 3000
Frame.Height = 3000
Frame.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
Frame.topMargin = 0
Frame.BottomMargin = 0
Frame.LeftMargin = 0
Frame.RightMargin = 0
Frame.BorderDistance = 0
Frame.HoriOrient = com.sun.star.text.HoriOrientation.NONE
Frame.VertOrient = com.sun.star.text.VertOrientation.LINE_TOP
Doc.Text.insertTextContent(Cursor, Frame, False)
El ejemplo crea un TextCursor para marcar la insercin del marco de texto. Esto est
posicionado entre la primera y segunda palabra del texto. El marco de texto es creado usando
Doc.createInstance. Las propiedades del marco de texto son puestas para los valores
iniciales requeridos.
La interaccin de las propiedades entre AnchorType (del servicio TextContent) y
VertOrient (del servicio BaseFrameProperties) se pueden notar aqu.
AnchorType recibe el valor AS_CHARACTER. El marco de texto es insertado de esta
manera directamente en el flujo de texto y se comporta como un carcter. Esto puede, por
ejemplo, ser movido a la siguiente lnea cuando se ocurre un salto de lnea. El valor
LINE_TOP de la propiedad VertOrient asegura que el borde superior del marco de texto
este a la misma altura del borde superior del carcter.
Una vez que la inicializacin est completa, el marco de texto es finalmente insertado en el
documento de texto usando una llamada desde insertTextContent.
Para editar el contenido de un marco de texto, el usuario puede usar el TextCursor, el cual ha
sido mencionado numerosas veces y que tambin est disponible para los marcos de texto.
Doc As Object
TextTables As Object
Cursor As Object
Frame As Object
FrameCursor As Object
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
Frame = Doc.createInstance("com.sun.star.text.TextFrame")
Frame.Width = 3000
Frame.Height = 1000
Doc.Text.insertTextContent(Cursor, Frame, False)
FrameCursor = Frame.createTextCursor()
FrameCursor.charWeight = com.sun.star.awt.FontWeight.BOLD
FrameCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.CENTER
FrameCursor.String = "Esto es una pequea prueba!"
Campos de texto
Los campos de texto son objetos TextContent porque ellos proveen una lgica adicional
extendida ms all del puro texto. Los campos de texto pueden ser insertados en el
documento de texto usando el mismo mtodo que es usado para otros objetos
TextContent:
Dim Doc As Object
Dim DateTimeField As Object
Dim Cursor As Object
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.CreateTextCursor()
DateTimeField = Doc.createInstance("com.sun.star.text.Textfield.DateTime")
DateTimeField.IsFixed = False
DateTimeField.IsDate = True
Doc.Text.InsertTextContent(Cursor, DateTimeField, False)
El ejemplo inserta un campo de texto con la fecha actual al inicio del documento actual. El
valor True de la propiedad IsDate resulta en que solamente es desplegada la fecha y no la
hora. El valor False para IsFixed asegura que la fecha sea actualizada automticamente
cuando el documento es abierto.
Mientras que el tipo de un campo en VBA es especificado por parmetros en el mtodo
Document.Fields.Add, el nombre del servicio es responsable del tipo de campo definido en OpenOffice.org
Basic.
En el pasado, los campos de texto fueron accesados usando un amplio rango de mtodos que
OpenOffice.org tena disponible en el antiguo objeto Selection (Por ejemplo, InsertField, DeleteUserField,
Set CurField).
En OpenOffice.org, los campos son administrados usando el concepto orientado a objetos. Para crear un
campo de texto, un campo de texto del tipo definido debe ser primeramente creado e inicializado usando
las propiedades requeridas. El campo de texto es insertado en el documento usando el mtodo
insertTextContent. El correspondiente cdigo fuente ha sido visto en el ejemplo anterior. Los tipos de
campos ms importantes y sus propiedades estn descritas en las siguientes secciones.
Adicionalmente a insertar campos de texto, buscar un documento por los campos es tambin
Captulo 6 Documentos de texto
Doc As Object
TextFieldEnum As Object
TextField As Object
I As Integer
Doc = StarDesktop.CurrentComponent
TextFieldEnum = Doc.getTextFields.createEnumeration
While TextFieldEnum.hasMoreElements()
Then
TextField = TextFieldEnum.nextElement()
If TextField.supportsService("com.sun.star.text.TextField.DateTime") Then
MsgBox "Fecha/Hora"
ElseIf TextField.supportsService("com.sun.star.text.TextField.Annotation")
Else
MsgBox "Anotacin"
MsgBox "desconocido"
End If
Wend
El punto de inicio para establecer los campos de texto actuales es la lista TextFields del
objeto de documento. El ejemplo crea un objeto Enumeration en base de esta lista, con la
cual todos los campos de texto pueden ser consultados por turnos en un ciclo. Los campos de
texto encontrados son verificados contra el servicio soportado usando el mtodo
supportsService. Si el campo prueba ser de un tipo Fecha/Hora o una Anotacin,
entonces el tipo de campo correspondiente es desplegado en el cuadro de informacin. Si por
otra parte, el ejemplo encuentra cualquier otro campo, entonces se despliega la informacin
"desconocido".
Abajo, encontrar una lista de los campos de texto ms importantes y sus propiedades
asociadas. Una lista completa de todos los campos de texto esta provista en la referencia API
en el mdulo com.sun.star.text.TextField. (Cuando lista el nombre del servicio
de un campo de texto, los caracteres en maysculas y minsculas deben ser usados en
OpenOffice.org basic, como en el ejemplo previo.)
com.sun.star.text.TextField.PageCount
com.sun.star.text.TextField.WordCount
com.sun.star.text.TextField.CharacterCount
Pgina actual
El nmero de la pgina actual puede ser insertado usando el campo de texto
OpenOffice.orgOpenOffice.org Gua del programador BASIC
El siguiente ejemplo muestra como el nmero de pginas puede ser insertado en el pie de un
documento:
Dim
Dim
Dim
Dim
Dim
Dim
Doc As Object
DateTimeField As Object
PageStyles As Object
StdPage As Object
FooterCursor As Object
PageNumber As Object
Doc = StarDesktop.CurrentComponent
PageNumber = Doc.createInstance("com.sun.star.text.TextField.PageNumber")
PageNumber.NumberingType = com.sun.star.style.NumberingType.ARABIC
PageStyles = Doc.StyleFamilies.getByName("PageStyles")
StdPage = PageStyles("Default")
StdPage.FooterIsOn = True
FooterCursor = StdPage.FooterTextLeft.Text.createTextCursor()
StdPage.FooterTextLeft.Text.insertTextContent(FooterCursor, PageNumber, False)
Anotaciones
Los campos de anotacin (com.sun.star.text.TextField.Annotation) pueden
ser vistos mediante un pequeo smbolo amarillo en el texto. Hacindo click en este smbolo
se abre un campo de texto, en el cual puede ser guardado un comentario en el punto actual de
texto. Un campo de anotacin tiene las siguientes propiedades:
Fecha/hora
Un campo de fecha/hora (com.sun.star.text.TextField.DateTime) representa
la fecha actual o la hora actual. Soporta las siguientes propiedades:
Captulo 6 Documentos de texto
Level (Integer) determina el nivel en el cual el nombre o el nmero del captulo est
siendo desplegado. El valor 0 determina el nivel ms alto posible.
Marcadores
Los marcadores (Servicio com.sun.star.text.bookmark) son objetos
TextContent. Los marcadores son creados e insertados usando el concepto de nuevo
descrito previamente:
Dim Doc As Object
Dim Bookmark As Object
Dim Cursor As Object
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.CreateTextCursor()
Bookmark = Doc.createInstance("com.sun.star.Bookmark")
Bookmark.Name = "Mi marcador"
Doc.Text.InsertTextContent(Cursor, Bookmark, True)
El ejemplo crea un Cursor, el cual marca en la posicin del punto de insercin del
marcador con el objeto de marcador (Bookmark). Al marcador le es asignado un nombre y
es insertado en el documento por medio de insertTextContent en la posicin del
cursor.
Los marcadores de texto son accesados por medio de una lista llamada Bookmarks. Los
marcadores pueden ser accesados por su nmero o por su nombre.
El siguiente ejemplo muestra como un marcador puede ser encontrado dentro de un texto, y
un texto insertado en esa posicin.
OpenOffice.org Basic provee una interface extensa para la creacin y edicin de libros de
clculo controlados por programacin. Este captulo describe como controlar los servicios,
mtodos y propiedades relevantes de los documentos de hoja de clculo.
La primera seccin contiene la estructura bsica de los documentos de hoja de clculo y
muestra como accesar y editar los contenidos de celdas individuales.
La segunda seccin se concentra en cmo editar hojas de clculo eficientemente, ponindo el
foco en reas de celdas y las opciones de bsqueda y reemplazo de los contenidos de las
celdas.
El objeto Range le permite direccionar cualquier area de la tabla y ha sido extendido en la API nueva
Hojas de clculo
Se pueden accesar hojas individuales de las hojas de clculo por medio dela lista Sheets.
El siguiente ejemplo muestra cmo puede accesar una hoja bien sea por su nmero o por su
nombre:
En el primer ejemplo, las hojas son accesadas por su nmero (el conteo inicia en 0). En el
segundo ejemplo, la hoja es accesada por su nombre con el mtodo getByName.
El objeto Sheet que es obtenido por el mtodo getByName soporta el servicio
com.sun.star.sheet.Spreadsheet. Adicionalmente se proveen algunas interfaces
para editar el documento, este servicio provee las siguientes propiedades:
Filas y columnas
Cada hoja contiene una lista de filas y columnas. Estn disponibles mediante las propiedades
Rows y Columns del objeto de Hojas de Clculo y soporta los servicios
com.sun.star.table.TableColumns y/o
com.sun.star.table.TableRows.
El siguiente ejemplo crea dos objetos que referencian a la primera fila y primera columna de
una hoja y guarda las referencias de los objetos FirstCol y FirstRow en una variable.
Doc As Object
Sheet As Object
FirstCol As Object
FirstRow As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
FirstCol = Sheet.Columns(0)
FirstRow = Sheet.Rows(0)
Doc As Object
Sheet As Object
Row As Object
Col As Object
I As Integer
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
For I = 0 to 4
Row = Sheets.Rows(I)
Row.OptimalHeight = True
Next
Col = Sheet.Columns(1)
Col.IsVisible = False
Las listas Rows y Columns son accesadas por medio de un ndice en OpenOffice.org Basic. A diferencia de
VBA, la primera columna tiene el ndice 0 y no el 1.
Este ejemplo usa el mtodo insertByIndex para insertar una nueva columna dentro de la
cuarta posicin en la hoja (ndice 3 la numeracin inicia en 0). El segundo parmetro
especifica el nmero de columnas a ser insertadas (en este ejemplo una).
El mtodo removeByIndex borra la sexta columna (ndice 5). De nuevo, el segundo
parmetro especifica el nmero de columnas que se desean borrar.
Los mtodos para insertar y borrar columnas usa la funcin del objeto Rows de la misma
manera que el mtodo muestra para la edicin de las columnas usando el objeto columns.
Celdas
Una hoja de clculo consiste en una lista bi-dimensional que contiene celdas. Cada celda es
definida por posicin X-Y con respecto a la celda superior izquierda que tiene la posicin
(0,0).
El siguiente ejemplo crea un objeto que referencia la celda superior izquierda e inserta texto
en la celda:
OpenOffice.org trata el contenido que ha sido ingresado por la propiedad String como un
texto, aunque el contenido sea un nmero. Los nmeros son alineados a la izquierda en la
celda, mientras lo dems alineado a la derecha. Tambin puede notar la diferencia entre el
texto y los nmeros cuando usa frmulas.
Mientras que la celda A1 contiene el valor de 100 y la celda el valor de 1000, la frmula
A1+A2 retorna el valor de 100. Esto es porque el contenido de la celda A2 fue ingresado
como un texto y no como un nmero.
Para verificar si el contenido de una celda es un nmero o una cadena, se puede usar la
propiedad Type:
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(1,1)
Cell.Value = 1000
Select Case Cell.Type
Case com.sun.star.table.CellContentType.EMPTY
MsgBox "Contenido: Vaco"
Case com.sun.star.table.CellContentType.VALUE
MsgBox "Contenido: Valor"
Case com.sun.star.table.CellContentType.TEXT
MsgBox "Contenido: Texto"
Case com.sun.star.table.CellContentType.FORMULA
MsgBox "Contenido: Frmula"
End Select
VALUE es un nmero.
TEXT Cadenas.
Este ejemplo inserta un rango de celdas del tamao de dos filas y dos columnas en la segunda
fila y la segunda columna (cada inicio est en 1) de la primera hoja de clculo (nmero 0) en
el libro de hojas de clculo. Cualquier valor existente en el rango de celdas especificado es
movido hacia abajo.
Para definir el rango de celdas que desea insertar use la estructura
com.sun.star.table.CellRangeAddress. Los siguientes valores estn incluidos
en esta estructura:
DOWN las celdas en y abajo de la posicin de insercin sern movidas hacia abajo.
ROWS las filas despus de la posicin de insercin sern movidas hacia abajo.
Este ejemplo remueve el rango de celdas B2:C3 de la hoja y levanta las celdas de abajo dos
filas. El tipo de remocin est definido por uno de los siguientes valores de la enumeracin
com.sun.star.sheet.CellDeleteMode:
LEFT las celdas depus del punto de remocin son movidas a la izquierda.
ROWS las filas despus del punto de remocin son movidas hacia arriba.
COLUMNS las columnas despus del punto de insercin son movidas hacia la izquierda.
Doc As Object
Sheet As Object
CellRangeAddress As New com.sun.star.table.CellRangeAddress
CellAddress As New com.sun.star.table.CellAddress
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
CellRangeAddress.Sheet = 0
CellRangeAddress.StartColumn = 1
CellRangeAddress.StartRow = 1
CellRangeAddress.EndColumn = 2
CellRangeAddress.EndRow = 2
CellAddress.Sheet = 0
CellAddress.Column = 0
CellAddress.Row = 5
Sheet.moveRange(CellAddress, CellRangeAddress)
El contenido de las celdas en el rango de destino ser siempre sobreescrito por el mtodo
moveRange. A diferencia del mtodo InsertCells, el parmetro para realizar
OpenOffice.orgOpenOffice.org Gua del programador BASIC
Formateado
Un documento de hoja de clculo provee las propiedades y mtodos para el formateo de
celdas y pginas.
Propiedades de celdas
Hay numerosas opciones para formatear celdas, para especificar tipo de fuente y tamao para
el texto.
Cada celda soporta los servicios com.sun.star.style.CharacterProperties y
com.sun.star.style.ParagraphProperties, cuyas principales propiedades
estn descritas en el captulo 6 (Documentos de texto en la pgina 71). Formateados
especiales de las celdas son manejados por el servicio
com.sun.star.table.CellProperties. Las principales propiedades de este
servicio estn descritas en las secciones siguientes.
Puede aplicar todas las propiedades nombradas a las celdas y a los rangos de celdas
El objeto CellProperties en la API de OpenOffice.org es comparable con el objeto Interior de VBA que
tambin define propiedades especificas de las celdas.
El siguiente ejemplo escribe el nmero 1000 a la celda B2, cambia el color de fondo a rojo
usando la propiedad CellBackColor, y luego crea una sombra gris tenue para la celda
que es movida 1 mm a la izquierda y hacia abajo.
Dim
Dim
Dim
Dim
Doc As Object
Sheet As Object
Cell As Object
ShadowFormat As New com.sun.star.table.ShadowFormat
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(1,1)
Cell.Value = 1000
Cell.BackColor = RGB(255,0,0)
ShadowFormat.Location = com.sun.star.table.ShadowLocation.BOTTOM_RIGHT
ShadowFormat.ShadowWidth = 100
ShadowFormat.Color = (160,160,160)
cell.ShadowFormat = ShadowFormat
Justificacin
OpenOffice.org provee varias funciones que permiten cambiar la justificacin del texto en
una celda de una tabla.
Las siguientes propiedades definen la justificacin horizontal y vertical del texto:
El siguiente ejemplo muestra como se pueden apilar los contenidos de una celda, de
manera que los caracteres individuales son impresos uno sobre el otro en la esquina superior
izquierda de la celda. Los caracteres no han sido rotados.
Doc As Object
Sheet As Object
Cell As Object
NumberFormats As Object
NumberFormatString As String
NumberFormatId As Long
LocalSettings As New com.sun.star.lang.Locale
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(1,1)
Cell.Value = 23400.3523565
LocalSettings.languaje = "en"
LocalSettings.Country = "us"
NumberFormats = Doc.NumberFormats
NumberFormatString = "#,##0.000"
NumberFormatId = NumberFormats.queryKey(NumberFormatString, localsettings, True)
If NumberFormatId = 1 Then
NumberFormatId = NumberFormats.addNew(NumberFormatString, localsettings)
End If
msgBox NumberFormatId
Cell.NumberFormat = NumberFormatId
Propiedades de pginas
Las propiedades de pginas son opciones de configuran la posicin del contenido del
documento en una pgina y tambin los elementos visuales que sern repetidos pgina a
pgina. Estos incluyen:
Formatos de pgina.
Mrgenes de pginas.
El procedimiento para definir los formatos de las pginas difieren de las otras formas de
formateado. Mientras los elementos de celdas, prrafos, y caracteres pueden ser directamente,
los formatos de pginas tambin pueden ser definidas y aplicadas indirectamente usando los
estilos de pginas. Por ejemplo, los encabezados o pies de pgina pueden ser agregados al
estilo de pgina.
Las siguientes secciones describen las opciones de formato principales para las pginas de las
hojas de clculo. Muchos de los estilos que estn descritos tambin estn disponibles para los
documentos de texto. Las propiedadades que son vlidos para ambos tipos de documentos
estn definidos en el servicio com.sun.star.style.PageProperties. Las
propiedades de pginas que solo se aplican a los documentos de hoja de clculo estn
definidos en el servicio com.sun.star.sheet.TablePageStyle.
Fondo de pgina
El servicio com.sun.star.style.PageProperties define las siguientes
propiedades para el fondo de las pginas:
Formato de la pgina
El formato de la pgina est definido usando las siguientes propiedades del servicio
com.sun.star.style.PageProperties:
El siguiente ejemplo configura el tamao del papel del estilo de pgina "default" al formato
DIN A5 horizontal. (alto 14.8 cm, ancho 21 cm)
Dim
Dim
Dim
Dim
Dim
Doc As Object
Sheet As Object
StyleFamilies As Object
PageStyles As Object
DefPage As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
DefPage.IsLandscape = True
DefPage.Width = 21000
DefPage.Height = 14800
El siguiente ejemplo configura los bordes derecho e izquierdo del estilo de pgina "default" a
un centmetro:
Dim
Dim
Dim
Dim
Dim
Doc as Object
Sheet As Object
StyleFamilies As Object
PageStyles As Object
DefPage As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
DefPage.LeftMargin = 1000
DefPage.RightMargin = 1000
HeaderLeftBorder (struct) detalles del borde izquierdo del marco alrededor del
encabezado (estructura com.sun.star.table.BorderLine)
HeaderRightBorder (struct) detalles del borde derecho del marco alrededor del
encabezado (estructura com.sun.star.table.BorderLine)
HeaderTopBorder (struct) detalles del borde superior del marco alrededor del
encabezado (estructura com.sun.star.table.BorderLine)
HeaderBottomBorder (struct) detalles del borde inferior del marco alrededor del
encabezado (estructura com.sun.star.table.BorderLine)
FooterLeftBorder (struct) detalles de la lnea del borde izquierdo alrededor del pie
de pgina (structura de com.sun.star.table.BorderLine)
FooterRightBorder (struct) detalles de la lnea del borde derecho alrededor del pie
de pgina (structura de com.sun.star.table.BorderLine)
FooterTopBorder (struct) detalles de la lnea del borde superior alrededor del pie de
pgina (structura de com.sun.star.table.BorderLine)
FooterIsShared (boolean) los pies de pgina tienen los mismos contenidos para
todas y cada una de las pginas. (referencia a FooterText, FooterTextLeft y
FooterTextRight)
Si no necesita distinguir entre los encabezados de las pginas pares e impares (la propiedad
FooterIsShared esta puesta en False), entonces ponga las propiedades para los
encabezados y pies de las pginas pares.
Todos los objetos nombrados soportan el servicio
com.sun.star.sheet.HeaderFooterContent. Por significado de las propiedades
(no genuinas) LeftText, CenterText y RightText, este servicio provee tres
elementos de texto para los encabezados y pies de OpenOffice.org Calc.
El siguiente ejemplo escribe el valor "solo un ejemplo" en el campo de texto izquierdo del
encabezado de la plantilla "Default".
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Doc As Object
Sheet As Object
StyleFamilies As Object
PageStyles As Object
DefPage As Object
Htext As Object
Hcontent As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
DefPage.HeaderIsOn = True
Hcontent = DefPage.RightPageHeaderContent
Htext = Hcontent.LeftText
Htext.String = "solo un ejemplo"
DefPage.RightPageHeaderContent = Hcontent
Note la ltima lnea del ejemplo: mientras el texto es cambiado, el objeto Textcontent
debe ser asignado al encabezado de nuevo para que el cambio sea efectivo.
Otro mecanismo para cambiar el texto de los encabezado y los pies est disponible para los
documentos de texto (OpenOffice.org Writer) porque este consiste en un bloque sencillo de
texto. Las siguientes propiedades estn definidas en el servicio
com.sun.star.style.PageProperties:
Captulo 7 Documentos de libros de clculo
HeaderTextLeft (Object) objeto de texto con el contenido del encabezado para las
pginas izquierdas. (servicio com.sun.star.text.Xtext)
HeaderTextRight (Object) objeto de texto con el contenido del encabezado para las
pginas derechas. (servicio com.sun.star.text.Xtext)
FooterText (Object) objeto de texto con el contenido del pie de pgina. (servicio
com.sun.star.text.Xtext)
FooterTextLeft (Object) objeto de texto con el contenido del pie para las pginas
izquierdas. (servicio com.sun.star.text.Xtext)
FooterTextRight (Object) - objeto de texto con el contenido del pie para las pginas
derechas. (servicio com.sun.star.text.Xtext)
Doc As Object
Sheet As Object
StyleFamilies As Object
PageStyles As Object
DefPage As Object
Htext As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
DefPage.HeaderIsOn = True
Htext = DefPage.HeaderText
Htext.String = "solo un ejemplo"
Rangos de celdas
Adicionalmente a un objeto para celdas individuales (el servicio
com.sun.star.table.Cell), OpenOffice.org tambin provee objetos que representan
rangos de celdas. Como el objeto CellRange es creado usando la llamada a
getCellRangeByName del objeto de hoja de clculo:
Dim Doc As Object
Dim Sheet As Object
Dim CellRange As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.getByName("Hoja 1")
CellRange = Sheet.getCellRangeByName("A1:C15")
Los dos puntos (:) son usados para especificar un rango de celdas en el documento de hoja de
clculo. Por ejemplo, A1:C15 representa todas las celdas en las filas 1 a la 15 y las columnas
A, B y C.
La localizacin de celdas individuales en un rango de celdas puede ser determinado usando el
mtodo getCellByPosition, donde las coordenadas de la celda superior izquierda en el
rango de celdas es (0,0). El siguiente ejemplo usa el mtodo para crear un objeto en la celda
C3.
Doc as Object
Sheet As Object
CellRange As Object
Cell As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.GetByName("Sheet 1")
CellRange = Sheet.getCellRangeByName("B2:D4")
Cell = CellRange.GetCellByPosition(1,1)
VAR La varianza.
El siguiente ejemplo calcula el valor del average del rango A1:C3 e imprime el resultado en
un cuadro de mensaje.
Dim Doc As Object
Dim Sheet As Object
Dim CellRange As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.getByName("Sheet 1")
CellRange = Sheet.getCellRangeByName("A1:C3")
MsgBox CellRange.ComputeFunction(com.sun.star.sheet.GeneralFunction.AVERAGE)
Doc As Object
Sheet As Object
CellRange As Object
Flags As Long
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheet(0)
CellRange = Sheet.getCellRangeByName("B2:C3")
Flags = com.sun.star.sheet.CellFlags.STRING + _
com.sun.star.sheet.CellFlags.HARDATTR
CellRange.clearContents(Flags)
STRING cadenas.
FORMULA frmulas.
Tambin pueden agregar constantes juntas para borrar diferentes partes de informacin
usando la llamada a ClearContents.
Doc As Object
Sheet As Object
ReplaceDescriptor As Object
I As Integer
Doc = StarDesktop.CurrentComponent
sheet = Doc.Sheets(0)
ReplaceDescriptor = Sheet.CreateReplaceDescriptor()
ReplaceDescriptor.SearchString = "is"
ReplaceDescriptor.ReplaceString = "was"
For I = 1 to Doc.Sheets.Count 1
Sheet = Doc. Sheets(I)
Sheet.ReaplaceAll(ReplaceDescriptor)
Next I
Este ejemplo usa la primera hoja del documento para crear un ReplaceDescriptor y
luego lo aplica a todas las dems hojas mediante un ciclo.
Dibujos y presentaciones
Este captulo provee una introduccin a la creacin y edicin controlada por macros de
dibujos. La primera seccin describe la estructura de los dibujos, incluyndo los elementos
bsicos que pueden contener los dibujos. La segunda seccin hace referencia a funciones de
edicin ms complejas, como agrupamiento, rotacin, y escalado de objetos.
La informacin acerca de la creacin, apertura, y guardado de los documentos de dibujo
puede ser encontrado en el captulo 5, Trabajando con documentos OpenOffice.org.
Pginas
Las pginas de un documento de dibujo estn disponibles por medio de la lista DrawPages.
Puede accesar pginas individuales por medio de su nombre o por medio de su nmero. Si un
documento tiene una pgina y es llamada Slide 1, entonces los siguientes ejemplos son
idnticos:
Ejemplo 1
Ejemplo 2
Dim Doc As Object
Dim Page As Object
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages.getByName("Slide 1")
Si estos parmetros son ajustados, entonces todas las pginas del documento sern afectadas.
El siguiente ejemplo ajusta el tamao del papel de un documento de dibujo que ha sido recin
abierto a 20 x 20 centmetros con un mrgen de 0.5 centmetros.
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
Page.add(RectangleShape)
Propiedades de relleno
Las propiedades principales de relleno de color simple son:
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.SOLID
RectangleShape.FillColor = RGB(255,0,0)
Page.add(RectangleShape)
Gradiente de colores
Si ajusta la propiedad a FillStyle a GRADIENT, puede aplicar una gradiente de color a
cualquier area de relleno en un documento OpenOffice.org.
Si desea aplicar un color de gradiente predefinido, puede asignar el nombre asociado de la
propiedad FillTransparenceGradientName. Para definir su propio color de
gradiente, necesita completar la estructura com.sun.star.awt.Gradient para
asignarle la propiedad FillGradient. Esta propiedad provee las siguientes opciones:
Style (Enum) Tipo de gradiente, por ejemplo, linear o radial (valores por defecto de
acuerdo con com.sun.star.awt.GradientStyle)
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Gradient As New com.sun.star.awt.Gradient
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
Gradient.Style = com.sun.star.awt.GradientStyle.LINEAR
Gradient.StartColor = RGB(255,0,0)
Gradient.EndColor = RGB(0,255,0)
Gradient.StartIntensity = 150
Gradient.EndIntensity = 150
Gradient.Angle = 450
Gradient.StepCount = 100
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.GRADIENT
RectangleShape.FillGradient = Gradient
Page.add(RectangleShape)
Este ejemplo crea una gradiente de color lineal (Style = LINEAR). La gradiente inicia con
rojo (StarColor) en la esquina superior izquierda, y se extiende a un ngulo de 45 grados
(Angle) y verde (EndColor) en la esquina inferior derecha. La intensidad de los colores es
de un 150 porciento. (StarIntensity y EndIntensity) cuyos resultados se ven ms
brillantes que los valores especificados en las propiedades StarColor y EndColor. La
gradiente de color es pintada usando una centcimas de graduacin de colores individuales
(StepCount).
Sombreado
Para crear un relleno de sombras, la propiedad FillStyle debe ser ajustada a HATCH. El
cdigo de programa para definir sombreado es muy similar al cdigo de gradientes de color.
Contra una estructura auxiliar, en este caso com.sun.star.drawing.Hatch, es usada
para definir la apariencia del sombreado. La estructura del sombreado tiene las siguientes
propiedades:
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Hatch As New com.sun.star.drawing.Hatch
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.HATCH
Hatch.Style = com.sun.star.drawing.HatchStyle.SINGLE
Hatch.Color = RGB(64,64,64)
Hatch.Distance = 20
Hatch.Angle = 450
RectangleShape.FillHatch = Hatch
Page.add(RectangleShape)
Este cdigo crea una estructura simple de sombreado (HatchStyle = SINGLE) cuyas
lneas son rotadas 45 grados (Angle). Las lneas son gris oscuro (Color) y tienen un
espacio de 0.2 milmetros (Distance) entre ellas.
Mapas de bits
Para usar un mapa de bits como relleno, debe ajustar la propiedad FillStyle a BITMAP.
Si el mapa de bits ya est disponible en OpenOffice.org, slo necesitar especificar su
nombre en la propiedad FillBitMapName y su estilo de desplegado (simple, mosaico o
alargado) en la propiedad FillBitmapMode (valores por defecto de acuerdo con
com.sun.star.drawing.BitmapMode)
Si desea usar un mapa de bits externo, puede especificar su URL en la propiedad
FillBitmapURL.
El siguiente ejemplo crea un rectngulo y hace un mosaico del mapa de bits "Sky" disponible
en OpenOffice.org para rellenar el area del rectngulo.
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.BITMAP
RectangleShape.FillBitmapName = "Sky"
RectangleShape.FillBitmapMode = com.sun.star.drawing.BitmapMode.REPEAT
Page.add(RectangleShape)
Transparencia
Puede ajustar la transparencia que desea aplicar como relleno. La forma ms simple para
cambiar la transparencia de un elemento de dibujo es usar la propiedad
FillTransparence.
El siguiente ejemplo crea un rectngulo rojo con una transparencia del 50 porciento.
Dim
Dim
Dim
Dim
Dim
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.SOLID
RectangleShape.FillTransparence = 50
RectangleShape.FillColor = RGB(255,0,0)
Page.add(RectangleShape)
Propiedades de la lneas
Todos los objetos de dibujo que pueden tener un borde soportan el servicio
com.sun.star.drawing.LineStyle. Algunas de las propiedades que este servicio
OpenOffice.orgOpenOffice.org Gua del programador BASIC
El siguiente ejemplo crea un rectngulo con un borde slido (LineStyle = SOLID) que
tiene 5 milmetros de ancho (LineWidth) y un 50 porciento de transparencia. Los bordes
derecho e izquierdo de la lnea extienden sus puntos para intersercar con la otra
(LineJoint = MITER) para formar un ngulo derecho.
Dim
Dim
Dim
Dim
Dim
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
RectangleShape.LineColor = RGB(128,128,128)
RectangleShape.LineTransparence = 50
RectangleShape.LineWidth = 500
RectangleShape.LineJoint = com.sun.star.drawing.LineJoint.MITER
RectangleShape.LineStyle = com.sun.star.drawing.LineStyle.SOLID
Page.Add(RRectangleShape)
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
Page.add(RectangleShape)
RectangleShape.String = "Das ist ein Test"
RectangleShape.CharWeight = com.sun.star.awt.FontWeight.BOLD
RectangleShape.CharFontName = "Arial"
Este cdigo usa la propiedad String del rectngulo para insertar el texto y las propiedades
CharWeight y CharFontName del servicio
com.sun.star.style.CharacterProperties para formatear la fuente del texto.
El texto solamente puede ser insertado despus de que el objeto de dibuja ha sido agregado a
la pgina. Tambin puede usar el servicio com.sun.star.drawing.Text para posicionar y
formatear el texto en el objeto de dibujo. Los siguientes son solo las propiedades ms
importantes de este servicio:
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
Page.add(RectangleShape)
RectangleShape.String = "This is a test"
' May only take place after Page.add!
RectangleShape.TextVerticalAdjust = com.sun.star.drawing.TextVerticalAdjust.TOP
RectangleShape.TextHorizontalAdjust = _
com.sun.star.drawing.TextHorizontalAdjust.LEFT
RectangleShape.TextLeftDistance = 300
RectangleShape.TextRightDistance = 300
RectangleShape.TextUpperDistance = 300
RectangleShape.TextLowerDistance = 300
Este cdigo inserta un elemento de dibujo en una pgina y luego agrega el texto en la esquina
superior izquierda del objeto de dibujo usando las propiedades TextVerticalAdjust y
TextHorizontalAdjust. La mnima distancia entre el borde del texto del objeto de
dibujo est ajustada a tres milmetros.
El siguiente ejemplo crea un rectngulo con una sombra con una configuracin vertical y
horizontal desde un restngulo de 2 milmetros. La sombra es renderizada en gris oscuro a un
50 porciento de transparencia-
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
RectangleShape.Shadow = True
RectangleShape.ShadowColor = RGB(192,192,192)
RectangleShape.ShadowTransparence = 50
RectangleShape.ShadowXDistance = 200
RectangleShape.ShadowYDistance = 200
Page.add(RectangleShape)
Crculos y elipses
El servicio com.sun.star.drawing.EllipseShape es el responsable de los crculos
y elipses y soporta los siguientes servicios:
Adicionalmente a estos servicios, los crculos y elipses tambin proveen las siguientes
propiedades:
OpenOffice.orgOpenOffice.org Gua del programador BASIC
El siguiente ejemplo crea una tajada circular con un ngulo de 70 grados (producido por la
diferencia entre el grado inicial de 20 grados y el grado final de 90 grados)
Dim
Dim
Dim
Dim
Dim
Doc As Object
Page As Object
EllipseShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
EllipseShape = Doc.createInstance("com.sun.star.drawing.EllipseShape")
EllipseShape.Size = Size
EllipseShape.Position = Point
EllipseShape.CircleStartAngle = 2000
EllipseShape.CircleEndAngle = 9000
EllipseShape.CircleKind = com.sun.star.drawing.CircleKind.SECTION
Page.add(EllipseShape)
Lneas
OpenOffice.org Provee el servicio com.sun.star.drawing.LineShape para los
objetos de lneas. Los objetos de lneas soportan todos los servicios generales de formateado
con excepcin de los de reas. Los siguientes son todas las propiedades que estn asociadas
con el servicio LineShape:
El siguiente ejemplo crea y formatea una lnea con la ayuda de las propiedades nombradas.
El origen de las lneas es especificado en el propiedad Location, mientras que las
coordenadas listadas en la propiedad Size especifican el punto final de la lnea
Dim
Dim
Dim
Dim
Dim
Doc As Object
Page As Object
LineShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
LineShape = Doc.createInstance("com.sun.star.drawing.LineShape")
LineShape.Size = Size
LineShape.Position = Point
Page.add(LineShape)
Figuras de polgono
OpenOffice.org Tambin soporta figuras de polgonos complejos por medio del servicio
com.sun.star.drawing.PolyPolygonShape. Estrictamente hablando, un objeto
PolyPolygon no es un simple polgono, sino un polgono mltiple. Algunas listas
independientes contienen los puntos de las esquinas que pueden ser especificados y
combinados para formar un objeto completo.
Como las figuras rectangulares, todas las propiedades de formato de los objetos de dibujo
tambin estn provistas para los polypolygons:
El servicio PolyPolygonShape tambin tiene una propiedad que permite definir las
coordenadas del polgono:
PolyPolygon (Array) una matriz que contiene las coordenadas del polgono. (doble
matriz con los puntos del tipo com.sun.star.awt.Point)
Doc As Object
Page As Object
PolyPolygonShape As Object
PolyPolygon As Variant
Coordinates(2) As New com.sun.star.awt.Point
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
PolyPolygonShape = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape")
' Page.add must take place before the coordinates are set
Page.add(PolyPolygonShape)
Coordinates(0).x
Coordinates(1).x
Coordinates(2).x
Coordinates(0).y
Coordinates(1).y
Coordinates(2).y
=
=
=
=
=
=
1000
7500
10000
1000
7500
5000
PolyPolygonShape.PolyPolygon = Array(Coordinates())
Desde que los puntos de un polgono son definidos como valores absolutos, necesita
especificar el tamao de la posicin inicial del polgono. En cambio, necesita crear una
matriz de los puntos, empacar esta matriz en una segunda matriz (usando la llamada (Array
(Coordinates), y luego asignar esta matriz al polgono. Despus de que la llamada
correspondiente es hecha, el polgono puede ser insertado en el documento.
Esta matriz doble en la definicin permite la creacin de formas complejas al combinar
algunos polgonos. Por ejemplo, puede crear un rectngulo e insertar otro rectngulo adentro
para crear un hueco en el rectngulo original:
Doc As Object
Page As Object
PolyPolygonShape As Object
PolyPolygon As Variant
Square1(3) As New com.sun.star.awt.Point
Square2(3) As New com.sun.star.awt.Point
Square3(3) As New com.sun.star.awt.Point
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
PolyPolygonShape = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape")
' Page.add must take place before the coordinates are set
Page.add(PolyPolygonShape)
Square1(0).x
Square1(1).x
Square1(2).x
Square1(3).x
Square1(0).y
Square1(1).y
Square1(2).y
Square1(3).y
=
=
=
=
=
=
=
=
5000
10000
10000
5000
5000
5000
10000
10000
Square2(0).x
Square2(1).x
Square2(2).x
Square2(3).x
Square2(0).y
Square2(1).y
Square2(2).y
Square2(3).y
=
=
=
=
=
=
=
=
6500
8500
8500
6500
6500
6500
8500
8500
Square3(0).x
Square3(1).x
Square3(2).x
Square3(3).x
Square3(0).y
Square3(1).y
Square3(2).y
Square3(3).y
=
=
=
=
=
=
=
=
6500
8500
8500
6500
9000
9000
9500
9500
Con respecto a cuales areas son rellenas y cuales areas son huecos, OpenOffice.org aplica
una regla simple:
El lmite de la figura de afuera es siempre el borde exterior del polgono. La siguiente lnea
interior es el borde interior de la figura y marca la transicin del primer hueco. Si hay otra
lnea adentro, marca la transicin del area de relleno.
Los ltimos elementos de dibujo presentados aqu son objetos grficos basados en el servicio
com.sun.star.drawing.GraphicObjectShape. Este puede ser usado con
cualquier grfico dentro de OpenOffice.org cuya apariencia puede ser adaptada usando un
amplio rango de propiedades.
Los objetos grficos soportan dos de las propiedades generales de formateo:
Propiedades adicionales que son soportadas por los objetos grficos son:
OpenOffice.orgOpenOffice.org Gua del programador BASIC
AdjustRed (Short) valor del rojo como porcentaje (valores negativos tambin son
permitidos)
AdjustGreen (Short) valor del rojo como porcentaje (valores negativos tambin son
permitidos)
AdjustBlue (Short) valor del azul como porcentaje (valores negativos tambin son
permitidos)
GraphicColorMode (enum) modo del color, por ejemplo, standard, estadios de gris,
blanco y negro (valores por defecto de acuerdo con
com.sun.star.drawing.ColorMode)
El siguiente ejemplo muestra como insertar una pgina dentro de un objeto grfico:
Dim
Dim
Dim
Dim
Dim
Doc As Object
Page As Object
GraphicObjectShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Este cdigo inserta el grfico test.jpg y adapta su apariencia usando las propiedades de
Adjust. En este ejemplo, los grfico son decolorados como un 40 porciento con ningn otra
conversin de colores. No toma lugar (GraphicColorMode = STANDARD).
Agrupando objetos
En muchas situacin, es til agrupar varios objetos de dibujo individuales juntos de manera
que se comporten como un slo gran objeto.
El siguiente combina dos objetos de dibujo:
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Doc As Object
Page As Object
Square As Object
Circle As Object
Shapes As Object
Group As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
NewPos As New com.sun.star.awt.Point
Height As Long
Width As Long
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
Point.x = 3000
Point.y = 3000
Size.Width = 3000
Size.Height = 3000
' Crea un elemento de dibujo cuadrado
Square = Doc.createInstance("com.sun.star.drawing.RectangleShape")
Square.Size = Size
Square.Position = Point
Square.FillColor = RGB(255,128,128)
Page.add(Square)
' Crea un elemento de dibujo circular
Circle = Doc.createInstance("com.sun.star.drawing.EllipseShape")
Circle.Size = Size
Circle.Position = Point
Circle.FillColor = RGB(255,128,128)
Circle.FillColor = RGB(0,255,0)
Page.add(Circle)
' Combina los elementos de dibujo cuadrado y crculo
Shapes = createUnoService("com.sun.star.drawing.ShapeCollection")
Shapes.add(Square)
Shapes.add(Circle)
Group = Page.group(Shapes)
' Centra los elementos de dibujo combinados
Height = Page.Height
Width = Page.Width
NewPos.X = Width / 2
NewPos.Y = Height / 2
Height = Group.Size.Height
Width = Group.Size.Width
NewPos.X = NewPos.X - Width / 2
NewPos.Y = NewPos.Y - Height / 2
Group.Position = NewPos
Este cdigo crea un rectngulo y un crculo y los inserta dentro de la pgina. Entonces crea
un objeto que soporte el servicio com.sun.star.drawing.ShapeCollection y usa
el mtodo Add para agregar el rectngulo y el crculo a este objeto. ShapeCollection es
agregado a la pgina usando el mtodo Group y retorna el objeto Group actual que puede
ser aditado como una fugura individual.
Si desea formatear objetos individuales de un grupo, aplique el formateo antes de agregarlos
OpenOffice.orgOpenOffice.org Gua del programador BASIC
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
RectangleShape.RotateAngle = 3000
Page.add(RectangleShape)
El siguiente ejemplo crea el mismo rectngulo como en el ejemplo previo, pero en cambio lo
recorta por el medio 30 grados usando la propiedad ShearAngle:
Dim
Dim
Dim
Dim
Dim
Doc As Object
Page As Object
RectangleShape As Object
Point As New com.sun.star.awt.Point
Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
RectangleShape.ShearAngle = 3000
Page.add(RectangleShape)
Bsqueda y reemplazo
Como en los objetos de texto, los documentos de dibujo proveen una funcin de bsqueda y
reemplazo. Esta funcin es similar a la usada en los objetos de texto descrita en el captulo 6,
Captulo 7 Documentos de libros de clculo
Doc As Object
Page As Object
ReplaceDescriptor As Object
I As Integer
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
ReplaceDescriptor = Page.createReplaceDescriptor()
ReplaceDescriptor.SearchString = "is"
ReplaceDescriptor.ReplaceString = "was"
For I = 0 to Doc.drawPages.Count 1
Page = Doc.drawPages(I)
Page.ReplaceAll(ReplaceDescriptor)
Next I
Este cdigo usa la primera pgina de dibujo del documento para crear el ReplaceDescriptor y
luego aplica este descriptor en un ciclo para todas las pginas del documento de dibujo.
Presentaciones
En OpenOffice.org las presentaciones estn basadas en documentos de dibujo. Cada pgina
de la presentacin es una filmina.
Puede accesar filminas de la misma forma en que un dibujo estndar es accesado por medio
de la lista DrawPages de objeto de documento. El servicio
com.sun.star.presentation.PresentationDocument, es el responsable de los documentos de
presentaciones, tambin provee el servicio completo
com.sun.star.drawing.DrawingDocument.
El cdigo usado en este ejemplo crea un objeto Doc que hace referencia al documento de
presentacin actual y establece el objeto de presentacin asociado. El mtodo start() del
objeto es usado para iniciar el ejemplo y ejecutar la presentacin en pantalla.
Los siguientes mtodos son provistos para los objetos de presentacin:
Pause (long) la cantidad de tiempo en que una pantalla blanca es desplegada al final de
la presentacin
OpenOffice.org puede desplegar los datos como un diagrama, lo cual crea vnculos grficos
entre los datos en forma de barras, grficos de pastel, lneas y otros elementos. Los datos
pueden ser desplegados como grficos en 2D o 3D, y la apariencia de los elementos de
diagramas puede ser adaptada individualmente de la misma manera en que se procesan los
elementos de dibujo.
Si los datos estn disponibles de la hoja de clculo, entonces pueden ser vinculados
dinmicamente al diagrama. Cualquier modificacin en los datos bsicos pueden en esta
instancia ser vistos inmediatamente al diagrama asociado. Este captulo provee un vistazo de
la interface de programacin de los mdulos de diagramas de OpenOffice.org enfocados al
uso de diagramas dentro de los documentos de clculo.
Doc As Object
Charts As Object
Chart as Object
Rect As New com.sun.star.awt.Rectangle
RangeAddress(0) As New com.sun.star.table.CellRangeAddress
Doc = StarDesktop.CurrentComponent
Charts = Doc.Sheets(0).Charts
Rect.X = 8000
Rect.Y = 1000
Rect.Width = 10000
Rect.Height = 7000
RangeAddress(0).Sheet = 0
RangeAddress(0).StartColumn = 0
RangeAddress(0).StartRow = 0
RangeAddress(0).EndColumn = 2
RangeAddress(0).EndRow = 12
Charts.addNewByName("MyChart", Rect, RangeAddress(), True, True)
Mientras el cdigo usado en el ejemplo puede aparecer complejo, el proceso central est
limitado a tres lneas: la primera lnea central crea la variable Doc, que hace referencia a la
hoja de clculo actual. (Lnea Doc = StarDesktop.CurrentComponent). El cdigo
usado en el ejemplo crea una lista conteniendo todos los diagramas de la primera hoja de
clculo. (Lnea Charts = Doc.Sheets(0).Charts). Finalmente, un nuevo diagrama
es agregado en la ltima lnea de la lista usando el mtodo addNewByName. Este diagrama
nuevo es entonces visible al usuario.
Title (Object) objeto con informacin detallada acerca del ttulo del diagrama(soporta
el servicio com.sun.star.chart.ChartTitle).
Subtitle (Object) objeto q}con la informacin detallada acerca del sub-ttulo del
diagrama (soporta el servicio com.sun.star.chart.ChartTitle).
Legend (Object) objeto con informacin detallada acerca de la llave del diagrama
(soporta el servicio com.sun.star.chart.ChartLegendPosition).
Alignment (Enum) posicin en la cual debe aparecer la llave (valores por defecto de
acuerdo con com.sun.star.chart.ChartLegendPosition).
El siguiente ejemplo crea un diagrama y le asigna el titulo "Test", el sub-ttulo "Test 2" y una
llave. La llave tiene un color de fondo gris, es colocado en la parte de abajo del diagrama, y
tiene un tamao de letra de 7 puntos.
Doc As Object
Charts As Object
Chart as Object
Rect As New com.sun.star.awt.Rectangle
RangeAddress(0) As New com.sun.star.table.CellRangeAddress
Rect.X = 8000
Rect.Y = 1000
Rect.Width = 10000
Rect.Height = 7000
RangeAddress(0).Sheet = 0
RangeAddress(0).StartColumn = 0
RangeAddress(0).StartRow = 0
RangeAddress(0).EndColumn = 2
RangeAddress(0).EndRow = 12
Doc = StarDesktop.CurrentComponent
Charts = Doc.Sheets(0).Charts
Charts.addNewByName("MyChart", Rect, RangeAddress(), True, True)
Chart = Charts.getByName("MyChart").EmbeddedObject
Chart.HasMainTitle = True
Chart.Title.String = "Test"
Chart.HasSubTitle = True
Chart.Subtitle.String = "Test 2"
Chart.HasLegend = True
Chart.Legend.Alignment = com.sun.star.chart.ChartLegendPosition.BOTTOM
Chart.Legend.FillStyle = com.sun.star.drawing.FillStyle.SOLID
Chart.Legend.FillColor = RGB(210, 210, 210)
Chart.Legend.CharHeight = 7
Fondo
Cada diagrama tiene un area de fondo. Cada area es un objeto, que cual puede ser accesado
usando las siguientes propiedades del objeto de diagrama:
El fondo del diagrama cubre toda su area, incluyndo el area bajo el ttulo, sub-ttulo y llave
del diagrama. El servicio asociado com.sun.star.chart.ChartArea soporta la
propiedades lnea y relleno y provee ms propiedades.
Floor (Object) piso del panel del diagrama (slo para diagramas de 3D, soportan el
servicio com.sun.star.chart.ChartArea).
Wall (Object) paredes del diagrama (slo para diagramas 3D, soportan el servicio
com.sun.star.chart.ChartArea).
El siguiente ejemplo muestra como los grficos (llamado Sky) puede ser contenido en
OpenOffice.org puede ser usado como fondo de un diagrama
Dim Doc As Object
Dim Charts As Object
Dim Chart as Object
Dim Rect As New com.sun.star.awt.Rectangle
Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress
Rect.X = 8000
Rect.Y = 1000
Rect.Width = 10000
Rect.Height = 7000
RangeAddress(0).Sheet = 0
RangeAddress(0).StartColumn = 0
RangeAddress(0).StartRow = 0
RangeAddress(0).EndColumn = 2
RangeAddress(0).EndRow = 12
Doc = StarDesktop.CurrentComponent
Charts = Doc.Sheets(0).Charts
Charts.addNewByName("MyChart", Rect, RangeAddress(), True, True)
Chart = Charts.getByName("MyChart").EmbeddedObject
Chart.Area.FillStyle = com.sun.star.drawing.FillStyle.BITMAP
Chart.Area.FillBitmapName = "Sky"
Chart.Area.FillBitmapMode = com.sun.star.drawing.BitmapMode.REPEAT
Ejes
OpenOffice.org reconoce cinco diferentes ejes que pueden ser usados en un diagrama. El el
escenario ms simple, estos son los ejes de las X y de las Y. Cuando se trabaja con diagramas
3D, algunas veces tambin es provisto un eje de las Z.
Para diagramas en los cuales los valores de varios renglones de datos derivan unos de otros,
OpenOffice.org provee un segundo eje de las X y eje de las Y para operaciones de escalado.
XAxis (Object) objeto con informacin detallada acerca del eje de las X. (soporta el
servicio com.sun.star.chart.ChartAxis).
Captulo 8 Diagramas (grficos)
XMainGrid (Object) objeto con informacin detallada acerca de la rejilla principal para
el eje de las X (soporta el servicio com.sun.star.chart.ChartGrid).
XHelpGrid (Object) objeto con informacin detallada acerca de la rejilla auxiliar para
el eje de las X. (soporta el servicio com.sun.star.chart.ChartGrid).
XAxisTitle (Object) objeto con informacin detallada acerca del ttulo del eje de las
X.(soporta el servicio com.sun.star.chart.ChartTitle).
SecondaryXAxis (Object) objeto con informacin detallada acerca del segundo eje de
las X. (soporta el servicio com.sun.star.chart.ChartAxis).
StepMain (Double) distancia entre las dos lneas primarias de los ejes.
StepHelp (Double) distancia entre las dos lneas secundarias de los ejes.
Marks (Const) constante que especifica cuales de las lneas primarias de los ejes deben
estar dentro o fuera del area de diagrama (valores por defecto de acuerdo con
com.sun.star.chart.ChartAxisMarks)
HelpMarks (Const) constante que especifica cuales de las lneas secundarias de los
ejes deben estar dentro y/o fuera del area del diagrama (valores por defecto de acuerdo con
com.sun.star.chart.ChartAxisMarks)
Overlap (Long) porcentaje que especifica la extencin en las cuales las barras de los
diferentes conjuntos de datos pueden ser sobrepuestos (al 100%, las barras son mostradas
completamente sobrepuestas, al -100%, hay una distancia de la mitad de una barra entre
ellas).
GapWidth (long) porcentaje que especifica la distancia que puede haber entre entre los
diferentes grupos de barras de un diagrama (al 100%, hay una distancia correspondiente a
la mitad de una barra).
Ejemplo
El siguiente ejemplo crea un diagrama de lnea. El color para la pared de fondo del diagrama
es puesto a blanco. Ambos ejes X y Y tienen una rejilla auxiliar gris para la orientacin
visual. Elvalor mnimo para el eje-Y est fijado en y el valor mximo est fijado en 100 de
manera que la resolucin del diagrama es retenida, an si los valores son cambiados.
Dim Doc As Object
Dim Charts As Object
Dim Chart as Object
Dim Rect As New com.sun.star.awt.Rectangle
Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress
Doc = StarDesktop.CurrentComponent
Charts = Doc.Sheets(0).Charts
Rect.X = 8000
Rect.Y = 1000
Rect.Width = 10000
Rect.Height = 7000
RangeAddress(0).Sheet = 0
RangeAddress(0).StartColumn = 0
RangeAddress(0).StartRow = 0
RangeAddress(0).EndColumn = 2
RangeAddress(0).EndRow = 12
Charts.addNewByName("MyChart", Rect, RangeAddress(), True, True)
Chart = Charts.getByName("MyChart").embeddedObject
Chart.Diagram = Chart.createInstance("com.sun.star.chart.LineDiagram")
Chart.Diagram.Wall.FillColor = RGB(255, 255, 255)
Chart.Diagram.HasXAxisGrid = True
Chart.Diagram.XMainGrid.LineColor = RGB(192, 192, 192)
Chart.Diagram.HasYAxisGrid = True
Chart.Diagram.YMainGrid.LineColor = RGB(192, 192, 192)
Chart.Diagram.YAxis.Min = 0
Chart.Diagram.YAxis.Max = 100
Diagramas 3D
Muchos diagramas en OpenOffice.org pueden ser desplegados con grficos 3D. Todos los
tipos de diagramas que proveen esta opcin soportan el servicio
com.sun.star.chart.Dim3DDiagram. El servicio provee solamente una propiedad:
Diagramas en pila
Los diagramas en pila son diagramas que son arreglados con varios valores individuales uno
sobre el otro para producir un valor total. Esta vista muestra no solamente los valores
individuales, sino tambin un vistazo de todos los valores.
En OpenOffice.org, varios tipos de de diagramas pueden ser desplegados en forma de pila.
Todos estos diagramas soportan el servicio com.sun.star.chart.StackableDiagram, el cual a su
vez provee las siguientes propiedades:
Tipos de diagramas
Diagramas de lneas
Los diagramas de lneas (servicio com.sun.star.chart.LineDiagram) soportan un
eje-X, dos ejes-Y y un eje-Z. Pueden ser desplegados como grficos 2D o 3D (servicio
com.sun.star.chart.Dim3Ddiagram). Las lneas pueden ser apiladas
(com.sun.star.chart.StackableDiagram).
Los diagramas de lneas proveen las siguientes propiedades:
SymbolSize (Long) tamao del smbolo para desplegado de los puntos de datos en
centcimas de milmetro.
Lines (Boolean) vnculos de los puntos de datos por significado de las lneas.
SplineType (Long) funcin spline para el emparejado de lneas (0: sin la funcin, 1:
splines cbicas, 2: splines B).
SplineOrder (Long) ancho polinomial para las splines (solamente para splines B).
Diagramas de rea
Los diagramas de rea (servicio com.sun.star.chart.AreaDiagram) soportan un
eje-X, dos ejes-Y y un eje-Z. Pueden ser desplegados como grficos en 2D y 3D. (servicio
com.sun.star.chart.Dim3Ddiagram). Las areas pueden ser apiladas
(com.sun.star.chart.StackableDiagram).
Diagramas de barras
Los diagramas de barras (servicio com.sun.star.chart.BarDiagram) soportan un
eje-X, dos ejes-Y, y un eje-Z . Pueden ser desplegados como grficos en 2D y 3D. (servicio
com.sun.star.chart.Dim3Ddiagram). Las barras pueden ser apiladas
(com.sun.star.chart.StackableDiagram).
Proveen las siguientes propiedades:
Vertical (Boolean) despliega las barras verticalmente, en otro caso son desplegadas
horizontalmente.
Deep (Boolean) en la vista 3D, posiciones de las barras detrs una de la otra en lugar de
una junto a la otra.
Diagramas de pastel
Los diagramas de pastel (servicio com.sun.star.chart.PieDiagram) no contienen
ejes y no pueden ser apilados. Pueden ser desplegados como grficos 2D o 3D. (servicio
com.sun.star.chart.Dim3Ddiagram).
Fuentes de datos
Una base de datos es incorporada a OpenOffice.org mediante su creacin comnmente
referida a la fuente de datos. La interface de usuario provee una opcin correspondiente para
la creacin de fuentes de datos en el menu Extras. Sin embargo, tambin puede crear fuentes
de datos y trabajar con las mismas usando OpenOffice.org Basic.
Un contexto de objeto que es creado usando la funcin createUnoService sirve como el
punto de inicio para el acceso a las fuentes de datos. Esto esta basado en el servicio
com.sun.star.sdb.DatabaseContext que es el objeto raz para todas las
operaciones de bases de datos.
El siguiente ejemplo muestra como un contexto de base de datos puede ser creado y usando
para determinar los nombres de todas las fuentes de datos disponibles. Despliega los nombres
de un cuadro de mensaje.
El ejemplo crea un objeto DataSource para una fuente de datos llamada "Customers".
Las fuentes de datos proveen un rango de propiedades, los cuales proveen informacin
general acerca del origen de los datos e informacin acerca de los mtodos de acceso. Las
propiedades son:
Info (Array) matriz que contiene los pares de valores de propiedades con los parametros
de conexin (usualmente al menos el nombre de usuario y la contrasea).
TableTypeFilter (Array) lista de los tipos de tablas a ser deplegados. Los valores
disponibles son TABLE, VIEW y SYSTEM TABLE.
Las fuentes de datos de OpenOffice.org no son comparables 1:1 con las fuentes de datos en
ODBC. Mientras una fuente de datos ODBC solamente cubre informacin acerca del origen
de los datos, una fuente de datos en OpenOffice.org tambin incluye un rango de informacin
Captulo 9 Acceso a bases de datos
Consultas
Consultas predefinidas pueden ser asignadas a las fuentes de datos. OpenOffice.org Nota que
los comandos SQL de las consultas estn disponibles todo el tiempo. Las consultas son
usadas para simplificar el trabajo con las bases de datos, porque pueden ser abiertas con un
simple click de mouse y tambin provee a los usuarios sin ningn conocimiento de SQL la
opcin de mentener comandos SQL.
Un objeto que soporta el servicio com.sun.star.sdb.QueryDefinition est
conciliado detrs de una consulta. Las consultas son accesadas por significado de el mtodo
QueryDefinitions de la fuente de datos.
El siguiente ejemplo lista los nombres de las consultas de las fuentes de datos que pueden ser
establecidas en un cuadro de mensaje.
Dim
Dim
Dim
Dim
Dim
DatabaseContext As Object
DataSource As Object
QueryDefinitions As Object
QueryDefinition As Object
I As Integer
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
QueryDefinitions = DataSource.getQueryDefinitions()
For I = 0 To QueryDefinitions.Count() - 1
QueryDefinition = QueryDefinitions(I)
MsgBox QueryDefinition.Name
Next I
El siguiente ejemplo muestra como un objeto de consulta puede ser creado de una forma
controlada por programacin y puede ser asignado a una fuente de datos.
DatabaseContext As Object
DataSource As Object
QueryDefinitions As Object
QueryDefinition As Object
I As Integer
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
QueryDefinitions = DataSource.getQueryDefinitions()
QueryDefinition = createUnoService("com.sun.star.sdb.QueryDefinition")
QueryDefinition.Command = "SELECT * FROM Customer"
QueryDefinitions.insertByName("NewQuery", QueryDefinition)
DatabaseContext As Object
DataSource As Object
Bookmarks As Object
URL As String
I As Integer
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
Bookmarks = DataSource.Bookmarks()
URL = Bookmarks.getByName("MyBookmark")
MsgBox URL
DatabaseContext As Object
DataSource As Object
Connection As Object
InteractionHandler as Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
If Not DataSource.IsPasswordRequired Then
Connection = DataSource.GetConnection("","")
Else
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
Connection = DataSource.ConnectWithCompletion(InteractionHandler)
End If
El cdigo usado en el ejemplo primero verifica si la base de datos est protegida con
contrasea. Si no, crea la conexin a la base de datos requerida usando la llamada
GetConnection call. Las dos cadenas vacas en la lnea de comandos son para el nombre de
usuario y la contrasea.
Si la base de datos est protegida por contrasea, el ejemplo crea un
InteractionHandler y abre la base de datos usando el mtodo
ConnectWithCompletion method. El InteractionHandler se asegura que
OpenOffice.org pregunte al usuario los datos necesarios para accesar la base de datos.
DatabaseContext As Object
DataSource As Object
Connection As Object
InteractionHandler as Object
Statement As Object
ResultSet As Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
If Not DataSource.IsPasswordRequired Then
Connection = DataSource.GetConnection("","")
Else
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
Connection = DataSource.ConnectWithCompletion(InteractionHandler)
End If
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("SELECT CustomerNumber FROM Customer")
If Not IsNull(ResultSet) Then
While ResultSet.next
Wend
MsgBox ResultSet.getString(1)
End If
getByte() soporta los tipos de datos SQL para nmeros, caracteres y cadenas.
getShort() soporta los tipos de datos SQL para nmeros, caracteres y cadenas.
getInt() soporta los tipos de datos SQL para nmeros, caracteres y cadenas.
getLong() soporta los tipos de datos SQL para nmeros, caracteres y cadenas.
getFloat() soporta los tipos de datos SQL para nmeros, caracteres y cadenas.
getDouble() soporta los tipos de datos SQL para nmeros, caracteres y cadenas.
Captulo 9 Acceso a bases de datos
getBoolean() soporta los tipos de datos SQL para nmeros, caracteres y cadenas.
getDate() soporta los tipos de datos SQL para nmeros, cadenas, fecha y hora.
getTime() soporta los tipos de datos SQL para nmeros, cadenas, fecha y hora.
getTimestamp() soporta los tipos de datos SQL para nmeros, cadenas, fecha y hora.
getUnicodeStream() soporta los tipos de datos SQL para nmeros, cadenas y valores
bianrios.
En todas las instancias, el nmero de columnas debe ser listado como un parmetro para
aquellos valores que deben ser consultados.
Todos los mtodos retornan un parmetro booleano que especifica si la nevagacin tuvo
xito.
Para determinar la posicin actual del cursor, estn provistos los siguientes mtodos de
prueba y todos retornan un valor booleano:
Creando dilogos
Puede crear y estructurar dilogos usando el editor de dilogos de OpenOffice.org y usarlo de
la misma manera en que usa OpenOffice.org Draw:
Esencialmente, puede arrastrar los controles que desea de la paleta de diseo (derecha) dentro
del area de dilogo donde puede definir su posicin y tamao.
Este ejemplo muestra un dialogo que contiene una etiqueta y un cuadro de lista.
Puede abrir un dilogo usando el siguiente cdigo
Dim Dlg As Object
DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.DlgDef)
Dlg.Execute()
Dlg.dispose()
Cerrando dilogos
Cerrando con Aceptar o cancelar
Captulo 10 Dilogos
Captulo 10Dilogos
Si un dilogo contiene un botn Aceptar o Cancelar, el dilogo automticamente es cerrado
cuando se presiona uno de estos botones. Ms informacin acerca de cmo trabajan estos
botones est mencionada en la seccin "Elementos de control de los dilogos" de este
captulo.
Si cierra un dilogo haciendo click en el botn Aceptar, el mtodo Execute retorna un
valor de 1, de otra forma es retornado un valor de 0.
Dim Dlg As Object
DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.MyDialog)
Select Case Dlg.Execute()
Case 1
MsgBox "Ok pressed"
Case 0
MsgBox "Cancel pressed"
End Select
Este cdigo define el objeto para el elemento de control "MyButton" y luego inicializa la
variable de objeto "Ctl" con la referencia al elemento. Finalmente, el cdigo ajusta la
propiedad Label para el elemento de control con el valor de "New Label".
Notese que OpenOffice.org Basic distingue entre los caracteres en maysculas y minsculas
para los nombres de los elementos de control.
Este ejemplo desactiva el botn cmdNtext en el dilogo Dlg con la ayuda del objeto model de
cmdNtext.
Propiedades
Nombre y ttulo
Cada elemento de control tiene su propio nombre que puede ser consultado usando la
siguiente propiedad model:
Model.Name (String) nombre del elemento de control
Puede especificar el ttulo que aparece en la barra de ttulo de un dilogo con la siguiente
propiedad model:
Posicin y tamao
Puede consultar el tamao y la posicin de un elemento de control usando las siguientes
propiedades del objeto model:
Captulo 10Dilogos
de su ancho. Mediante el uso de las unidades ma, OpenOffice.org asegura que un dilogo se
vea de la misma forma en los diferentes sistemas operativos, bajo diferentes configuraciones
de sistema.
Si desea cambiar el tamao o la posicin de los elementos de control en tiempo de ejecucin,
determine el tamao total del dilogo y ajuste los valores para el elemento de control de
acuerdo al radio de las partes.
La unidad Map AppFont (ma) reemplaza la unidad Twips archivada par una mejor
independencia de la plataforma.
Model.Tabstop (Boolean) permite al elemento de control que sea accesado por medio
de la tecla Tab.
Finalmente, el elemento de control provee un mtodo getFocus que asegura que el elemento
de control subyacente reciba el foco:
Dilogos de multi-pgina
Un dilogo en OpenOffice.org puede tener una o ms pginas. La propiedad Step de un
dilogo define la pgina actual del dilogo mientras la propiedad Step para el elemento de
control especifica la pgina en la cual los elementos de control van a ser desplegados.
El valor 0 en Step es un caso especial. Si ajusta este valor a cero en un dilogo, todos los
elementos de control son visibles independientemente de su valor Step. De manera similar,
si ajusta este valor a cero para un elemento de control, el elemento ser desplegado en todas
las pginas en el dilgo.
En el ejemplo precedente, puede tambin asignar el valor 0 al Step para la lnea divisoria y
para los botones "Cancel", "Prev", "Next", y "Done" para desplegar estos elementos en todas
las pginas. Tambin puede asignar los elementos a una pgina individual (por ejemplo la
pgina 1).
El siguiente cdigo de programa muestra como el valor Step en los manejadores de eventos
de los botones "Next" y "Prev" pueden ser incrementados y reducidos y cambiar el estado de
los botones.
Sub cmdNext_Initiated
Dim cmdNext As Object
Dim cmdPrev As Object
cmdPrev = Dlg.getControl("cmdPrev")
cmdNext = Dlg.getControl("cmdNext")
cmdPrev.Model.Enabled = Not cmdPrev.Model.Enabled
cmdNext.Model.Enabled = False
Dlg.Model.Step = Dlg.Model.Step + 1
End Sub
Sub cmdPrev_Initiated
Dim cmdNext As Object
Dim cmdPrev As Object
cmdPrev = Dlg.getControl("cmdPrev")
cmdNext = Dlg.getControl("cmdNext")
cmdPrev.Model.Enabled = False
cmdNext.Model.Enabled = True
Dlg.Model.Step = Dlg.Model.Step 1
End Sub
Una variable global Dlg que hace referencia al dilogo abierto debe ser incluida para hacer
este ejemplo posible. El dilogo cambia su apariencia como sigue:
Captulo 10 Dilogos
Captulo 10Dilogos
Pgina 1:
Pgina 2:
Eventos
Los dilogos y formularios de OpenOffice.org estn basados en un modelo de programacin
orientada a eventos donde puede asignar controladores de eventos a los elementos de control.
Un controlador de evento ejecuta un procedimiento predefinido cuando ocurre una accin
particular, aun cuando la accin es otro evento. Se pueden editar documentos o abrir bases de
datos con el control de eventos y tambin accesar otros elementos de control.
Los elementos de control de OpenOffice.org reconocen diferentes tipos de eventos que
pueden ser disparados en diferentes situaciones. Estos tipos de eventos pueden ser divididos
en cuatro grupos:
Control del Mouse: Eventos que corresponden a acciones del mouse (por ejemplo, simples
movimientos del mouse o un click en un lugar especfico de la pantalla)
Control de teclado: Eventos que son disparados por golpes de teclas.
Modificacin del Foco: Eventos que OpenOffice.org realiza cuando los elementos de control
son activados o desactivados.
Eventos especficos de los controles: Eventos que solamente ocurren en relacin con ciertos
elementos de control.
Cuando trabaja con eventos, asegurese crear el dilogo asociado en el ambiente de desarrollo
de OpenOffice.org y que contenga los elementos de control requeridos o documentos (si sus
eventos son aplicados a un formulario).
Captulo 10 Dilogos
Captulo 10Dilogos
La figura anterior muestra el ambiente de desarrollo con una ventana de dilogo que contiene
dos cuadros de listas. Puede mover datos de una lista a otra lista usando los botones entre los
dos cuadros de listas.
Si desea desplegar el formato en pantalla, entonces debe crear los procedimientos asociados
con OpenOffice.org Basic de manera que puedan ser llamados por los controladores de
eventos. Aun cuando pueda usar estos procedimientos en cualquier mdulo, lo mejor es
limitar su uso a dos mdulos. Para hacer su cdigo ms fcil de leer, asigne nombres con
significado a los procedimientos. Saltar directamente a un procedimiento de programa
general desde una macro puede tener como resultado un cdigo no muy claro. En cambio,
para simplificar el mantenimiento del cdigo y la resolucin de problemas, debe crear otro
procedimiento que sirva como punto de entrada al manejador de eventos aun cuando
solamente ejecute una simple llamada al procedimiento destino.
El siguiente cdigo muestra un ejemplo de movimiento de una entrada de izquierda a derecha
en un cuadro de lista de un dilogo:
Beep
End If
End Sub
Parmetros
La ocurrencia de un evento particular no es siempre suficiente para una respuesta apropiada.
Se puede requerir informacin adicional. Por ejemplo, para procesar un click de mouse,
puede necesitar la posicin en la pantalla donde el botn del mouse fue presionado.
En OpenOffice.org Basic, puede usar los parmetros del objeto para proveer ms
informacin acerca de un evento a un procedimiento, por ejemplo:
Captulo 10 Dilogos
Captulo 10Dilogos
Sub ProcessEvent(Event As Object)
End Sub
La ocurrencia con la cual el objeto Event est estructurado depende del tipo de evento del
cual el procedimiento puede disparar llamadas. Las siguientes secciones describen los tipos
de eventos en detalle.
Independientemente del tipo de evento, todos los objetos proveen acceso a elementos de
control importantes y sus modelos. El elemento de control puede ser accesado usando
Event.Source y su modelo usando Event.Source.Model
Puede usar estas propiedades para dispara eventos dentro de un controlador de eventos.
Mouse moved while key pressed el usuario arrastra el mouse, mientras sostiene un botn.
X (long) Coordenada Xdel mouse, medida en pixels desde la esquina superior izquierda
del elemento de control
Y (long) Coordenada Y del mouse, medida en pixels desde la esquina superior izquierda
del elemento de control
Las constantes definidas en com.sun.star.awt.MouseButton para los botones del mouse son:
El siguiente ejemplo muestra la posicin del mouse y tambin cual botn del mouse ha sido
presionado:
Los eventos de VBA Click y Doubleclick no estn disponibles en OpenOffice.org Basic. En su lugar debe
usar el evento de OpenOffice.org Basic MouseUp para el evento click e imite el evento Doubleclick
cambiando la lgica de la aplicacin.
Ambos eventos estn relacionados a las acciones lgicas de las teclas, no a acciones fsicas.
Si el usuario presiona varias teclas para un carcter individual (por ejemplo, para agregar un
acento a un caracter), entonces OpenOffice.org Basic solamente crea un evento.
Una accin simple de una modificacin de una tecla, como la tecla Shift o la letra Alt no crea
un evento independiente.
La informacin sobre las teclas presionadas est provistas por el objeto de evento que
OpenOffice.org suple para el manejo de eventos. Este contiene las siguientes propiedades:
KeyCode (short) cdigo de la tecla presionada (los valores por defecto de acuerdo con
com.sun.star.awt.Key)
KeyChar (String) el carcter que ha sido ingresado (tomando en cuenta las teclas de
modificacin)
El siguiente ejemplo usa la propiedad KeyCode para establecer si ha sido presionada la tecla
"Enter", la tecla "Tab", o alguna otra de las teclas de control. Si una de estas teclas ha sido
presionada, retorna el nombre de la tecla, de otra forma el carcter de la tecla es retornado:
Captulo 10 Dilogos
Captulo 10Dilogos
Sub KeyPressed(Event As Object)
Dim Msg As String
Select Case Event.KeyCode
Case com.sun.star.awt.Key.RETURN
Msg = "Return pressed"
Case com.sun.star.awt.Key.TAB
Msg = "Tab pressed"
Case com.sun.star.awt.Key.DELETE
Msg = "Delete pressed"
Case com.sun.star.awt.Key.ESCAPE
Msg = "Escape pressed"
Case com.sun.star.awt.Key.DOWN
Msg = "Down pressed"
Case com.sun.star.awt.Key.UP
Msg = "Up pressed"
Case com.sun.star.awt.Key.LEFT
Msg = "Left pressed"
Case com.sun.star.awt.Key.RIGHT
Msg = "Right pressed"
Case Else
Msg = "Character " & Event.KeyChar & " entered"
End Select
MsgBox Msg
End Sub
Ms informacin sobre las constantes de las teclas puede ser encontrado en la Referencia a la
API bajo el grupo de constantes de com.sun.star.awt.Key.
Eventos de foco
Los eventos de foco indican si un control recibe o pierde el foco. Puede usar estos eventos
para, por ejemplo, determinar si un usuario finaliza un proceso en un elemento de control de
manera que se puedan actualizar otros elementos del dilogo. Los siguientes eventos de foco
estn disponibles:
FocusFlags (short) causa del cambio del foco (Los valores por defecto de acuerdo con
com.sun.star.awt.FocusChangeReason).
NextFocus (Object) el objeto que recibe el foco (solamente para el evento "When
losing focus" -el elemento pierde el foco-)
When initiating una accin que puede ser realizada cuando un elemento de control es
disparado (por ejemplo, se presiona un botn)
Cuando trabaje con eventos, note que ciertos de ellos, como el "When initiating", puede ser
inicializado cada vez que haga un click en el mouse o en algunos de los elementos de control
(por ejemplo, los botones de radio). No se realizan acciones para verificar si el estado del
elemento de control actualmente ha cambiado. Para evitar estos "elementos ciegos", guarde el
valor viejo del elemento de control en una variable global, y luego verifquelo para ver si el
valor ha cambiado cuando se ejecuta un evento.
Las propiedades para el evento "Item Status Changed" son:
Campos de entradas:
Campos de texto
Campos de fechas
Campos de hora
Campos numricos
Campos de moneda
Botones estndar
Botones de radio
Listas de seleccin
cajas de listas
cajas de combo
Captulo 10 Dilogos
Captulo 10Dilogos
Grupos de campos
Barras de progreso
Lneas divisorias (horizontal y vertical)
Grficos
Campos de seleccin de archivos
Los elementos de control ms importantes son presentados a continuacin:
Botones (buttom)
Un botn realiza una accin cuando se hace click en l.
El escenario ms simple para el botn es disparar un evento "When Initiating" cuando el
usuario le da click. Puede vincular otras acciones al botn para abrir un dilogo usando la
propiedad PushButtonType. Cuando hace click en un botn en el que esta propiedad ha
sido puesta en el valor de 0, el dilogo no se afecta. Cuando hace click en un botn en el que
esta propiedad ha sido puesta en el valor de 1, el dilogo es cerrado y el mtodo Execute
del dilogo retorna el valor de 1. (la secuencia del dilogo ha terminado correctamente).
Si el "PushButtonType" tiene el valor de 2, el dilogo es cerrado y el mtodo Execute
del dilogo retorna el valor de 0 (dilogo cerrado).
Las siguientes son todas las propiedades que estn disponibles mediante el modelo del botn:
PushButtonType (short) accin que est vinculada al botn (0: sin accin, 1: Aceptar,
2: Cancelar)
Tambin puede usar las siguientes propiedades del modelo de botones de opcin:
Para combinar varios botones de opcin en un grupo, debe posicionarlos uno despus del otro
en la secuencia de activacin sin interrupcin (propiedad Model.TabIndex, descrita como
Order en el editor de dilogos). Si la secuencia de activacin es interrumpida por otro
elemento de control, OpenOffice.org automticamente inicia un nuevo grupo de elementos de
control que puede ser activado independientemente del primer grupo de elementos de control.
A diferencia de VBA, no puede insertar botones de opcin en un grupo de elementos de control en
OpenOffice.org Basic. La agrupacin de los elementos de control en OpenOffice.org Basic solamente es
usada para asegurar la divisin visual mediante el dibujo de un marco alrrededor de los elementos de
control.
State (Short) estado de la caja de chequeo (0: no, 1: si, 2: estado intermedio)
6 N.T. Es bastante dificil traducir estos nombres, porque en su mayora son conocidos por los nombres en ingls.
Para ms claridad dejo tambin los nombres en ingls.
Captulo 10 Dilogos
Captulo 10Dilogos
puede usar el estado intermedio
El objeto model provee las siguientes propiedades:
Model.State (Short) estado de la caja de chequeo (0: no, 1: si, 2: estado intermedio)
Model.Tabstop (Boolean) el elemento de control puede ser accesado con la tecla Tab
Tambin, las siguientes propiedades son provistas por el objeto model asociado:
OpenOffice.orgOpenOffice.org Gua del programador BASIC
Model.Border (short) tipo de borde (0: sin borde, 1: borde 3D, 2: borde simple)
Model.Tabstop (Boolean) el elemento de control puede ser accesado por la tecla Tab
SelectedItems (Array Of Strings) campo de datos con las entradas resaltadas, slo
lectura
Captulo 10Dilogos
mltiple, Falso bloquea las selecciones mltiples (la propiedad no puede ser llamada
directamente, sino por medio de IsMultipleMode)
makeVisible (Pos) se mueve por entre los campos de la lista de manera que la entrada
especificada en "Pos" sea visible
Model.Border (short) tipo de borde (0: sin borde, 1: borde 3D, 2: borde simple)
Model.Tabstop (Boolean) el elemento de control puede ser accesado por la tecla Tab.
La opcin VBA para registrar entradas de la lista con un valor nmerico adicional (ItemData) no existe en
OpenOffice.org Basic. Si desea administrar un valor numrico (por ejemplo un ID de base de datos)
adicional al texto de lenguaje natural, debe crear un campo de datos adicional que es administrado de
forma paralela a la caja de lista.
Captulo 11Formularios
Dim Doc As Object
Dim DrawPage As Object
Dim Form As Object
Doc = StarDesktop.CurrentComponent
DrawPage = Doc.DrawPage
Form = DrawPage.Forms.GetByIndex(0)
Doc As Object
Sheet As Object
DrawPage As Object
Form As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.GetByIndex(0)
DrawPage = Sheet.DrawPage
Form = DrawPage.Forms.GetByIndex(0)
El ejemplo determina el modelo del elemento de control "MyListBox", el cual est localizado
en el primer formulario del documento de texto abierto actualmente.
Si no est seguro del formulario del elemento de control, puede usar la opcin de bsqueda
por todos los formularios por el elemento de control requerido:
Dim
Dim
Dim
Dim
Dim
Doc As Object
Forms As Object
Form As Object
Ctl As Object
I as Integer
Doc = StarDesktop.CurrentComponent
Forms = Doc.Drawpage.Forms
For I = 0 To Forms.Count 1
Form = Forms.GetbyIndex(I)
If Form.HasByName("MyListBox") Then
Ctl = Form.GetbyName("MyListBox")
Exit Function
End If
Next I
El ejemplo usa el mtodo HasByName para verificar todos los formularios de un documento
de texto para determinar cual de ellos contiene un elemento de control llamado "MyListBox".
Si un modelo correspondiente es encontrado, entonces una referencia es salvada en la
variable "Ctl" y la bsqueda es terminada.
Captulo 11 Formularios
Captulo 11Formularios
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Doc As Object
DocCrl As Object
Forms As Object
Form As Object
Ctl As Object
CtlView As Object
I as Integer
Doc = StarDesktop.CurrentComponent
DocCrl = Doc.getCurrentControler()
Forms = Doc.Drawpage.Forms
For I = 0 To Forms.Count 1
Form = Forms.GetbyIndex(I)
If Form.HasByName("MyListBox") Then
Ctl = Form.GetbyName("MyListBox")
CtlView = DocCrl.GetControl(Ctl)
Exit Function
End If
Next I
El cdigo listado en el ejemplo es muy similar al ejemplo previo para determinar el modelo
de un elemento de control. No usa solamento del objeto de documento "Doc" sino tambin el
controlador de documento "DocCrt" el cual hace referencia a la ventana del documento
actual. Con la ayuda de este controlador de documento y el modelo del elemento de control,
entonces usa el mtodo GetControl para determinar la vista (variable CtlView) del
fomulario de elemento de control.
El ejemplo verifica todos los elementos de dobujo para determinar si soportan la interface
com.sun.star.drawing.XControlShape necesaria para los elementos de control de los
formularios. Si este es el caso, entonces se verifica la propiedad Control.Name para ver si el
nombre del elemento de control es "MyListBox". Si es verdadero, la funcin termina la
bsqueda.
El objeto forma del elemento de control debe sr conocido para que el cdigo funcione. Si este
no es el caso, puede ser determinado usando el cdigo de ejemplos anteriores.
Botones
El objeto modelo de un botn provee las siguientes propiedades:
DefaultButton (Boolean) el botn sirve como valor por defecto. En este caso,
tambin responde a la entrada si el botn no tiene el foco.
Captulo 11 Formularios
Captulo 11Formularios
Tag (String) cadena que contiene informacin adicional, la cual puede ser guardada en el
botn para el acceso controlado por programa.
TargetURL (String) URL destino para los botones del tipo URL
ButtonType (Enum) accin que est vinculada con el botn (valores por defecto de
com.sun.star.form.FormButtonType).
Por medio de la propiedad ButtonType, tiene la oportunidad de definir una accin que es
automaticamente realizada cuando el botn se presionado. El grupo de constantes
com.sun.star.form.FormButtonType asociado, provee los siguientes valores:
URL llama la URL definida en TargetURL (es abierta dentro de la ventana que ha sido
definida por medio de TargetFrame).
Los tipos de botn Aceptar y Cancelar provistos en los dilogos no estn soportados en los
formularios
Botones de opcin
Las siguientes propiedades estn disponibles por medio de su objeto modelo:
Tabstop (Boolean) el elemento de control puede ser accesado por la tecla "Tab".
Tag (String) cadena que contiene informacin adicional, la cual puede ser guardada en el
RefValue (String) cadena para salvar informacin adicional (por ejemplo, para
administrar Id de los registros de datos).
HelpText (String) texto automticamente desplegado, cuando el cursor del mouse est
sobre el elemento de control.
Doc As Object
Forms As Object
Form As Object
Ctl As Object
I as Integer
Doc = StarDesktop.CurrentComponent
Forms = Doc.Drawpage.Forms
For I = 0 To Forms.Count 1
Form = Forms.GetbyIndex(I)
If Form.HasByName("MyOptions") Then
Ctl = Form. GetGroupbyName("MyOptions")
Exit Function
End If
Next I
Captulo 11Formularios
Tabstop (Boolean) el elemento de control puede ser accesado mediante la tecla "Tab".
Tag (String) cadena que contiene informacin adicional, la cual puede ser guardada en el
botn para acceso controlado por programacin.
RefValue (String) cadena para guardar informacin adicional (por ejemplo, administrar
ID de resgitros de datos).
Campos de texto
Los objetos modelo de los formularios de campos de texto ofrecen las siguientes
propiedades:
Align (short) orientacin del texto (0: alineado a la izquierda, 1: centrado, 2: alineado a
la derecha).
Border (short) tipo de borde (0: sin borde, 1: borde 3D, 2: borde simple).
Tabstop (Boolean) el elemento de control puede ser accesado por la tecla "Tab".
Cajas de listas
El objeto de modelo de las cajas de listas proveen las siguientes propiedades:
Border (short) tipo de borde (0: sin borde, 1: cuadro 3D, 2: cuadro simple).
FontDescriptor (struct) estructura con los detalles de las fuentes usadas (de acuerdo
con la estructura com.sun.star.awt.FontDescriptor).
Tabstop (Boolean) el elemento de control puede ser accesado por la tecla "Tab".
Tag (String) cadena que contiene informacin adicional que puede ser guardada en el
botn para acceso controlado por programacin.
Captulo 11 Formularios
Captulo 11Formularios
Por medio de su propiedad ValueItemList, las cajas de listas proveen la contraparte de la propiedad de
VBA, ItemData, por medio de la cual puede administrar informacin adicional para las entradas
individuales de las listas.
removeItems (Pos, Count) remueve las entradas "Count" desde la posicin "Pos".
makeVisible (Pos) bsca por el campo de lista de forma que la entrada especificada
en "Pos" sea visible.
Command (String) nombre de la tabla, consulta o coamndo Select SQL al cual el vnculo
es hecho.
TABLE Tabla
QUERY - Consulta
Los campos de las base de datos son asignados a los elementos de control individuales por
medio de la siguiente propiedad:
Tablas
Otro elemento de control provisto para el trabajo con bases de datos: el elemento de control
tabla. Este representa el contenido completo de una tabla o consulta. En el escenario ms
simple, un elemento de control tabla es vinculado a una base de datos usando el formulario
de autopiloto, el cual vincula todas las columnas de los campos de la base de datos de
acuerdo a las especificaciones del usuario. Debido a que la API asociada es relativamente
compleja, no vamos a dar una descripcin completa en este punto.
Captulo 11 Formularios
^ 19
AutoMin 142
_blank 59
AutoOrigin 142
_hidden 59
AutoStepHelp 143
- 19
AutoStepMain 142
* 19
AVERAGE 114
/ 19
\ 19
BackColor 84 s., 87, 107
+ 19
BackGraphicFilter 107
< 20
BackGraphicLocation 107
<= 20
BackGraphicURL 107
<> 20
BackgroundColor 179, 182 s.
= 20
Beep 47
> 20
beforeFirst() 155
>= 20
BITMAP 121
compatibilidad entre OpenOffice.org Basic y
boleanas 13
VBA 2
Border 182 s.
BorderBottom 117
addItem 174, 184
BorderLeft 117
addItems 174, 184
BorderRight 117
AdjustBlue 131
BorderTop 117
AdjustContrast 131
BottomBorder 108
AdjustGreen 131
BottomBorderDistance 108
AdjustLuminance 131
BottomMargin 84, 87, 108
AdjustRed 131
Bubble sort 25
afterLast() 155
Buttons 166
Align 182
ButtonType 180
Alignment 139
AllowAnimations 135
Cadenas 8
Ambiente de desarrollo integrado 2
Cambios dinmicos en las dimensiones de los
AnchorType 82
campos de datos 16
AnchorTypes 82
Campos de datos 14
AND 20
cancelRowUpdates() 156
Angle 119 s.
CBool(Var) 32
ANNOTATION 115
CDate(Var) 32
Anotaciones 91
CDbl(Var) 32
ANSI 9
Cell.Type 100
API de
49
CellAddress 102
Application 57
CellBackColor 103
Area 140
CellInsertMode 101
ArrangeOrder 143
CellRangeAddress 101 s.
AS_CHARACTER 88
CenterHorizontally 112
Asc 34
CenterVertically 112
ASCII 9
cero 36
AsTemplate (Boolean) 60
CharacterSet (string) 62
Author 91
CharacterSet (String) 60
AutoMax 142
i
CharBackColor 71
com.sun.star.chart.ChartTitle 138, 142
CharColor 71
com.sun.star.chart.Dim3Ddiagram 145 s.
CharFontName 71, 124
com.sun.star.chart.Dim3DDiagram 144
CharHeight 71
com.sun.star.chart.PieDiagram 146
CharKeepTogether 71
com.sun.star.chart.StackableDiagram 145
CharStyleName 71
com.sun.star.document.OfficeDocument 57
CharUnderline 71
com.sun.star.drawing.BitmapMode 121
CharWeight 71, 124
com.sun.star.drawing.CircleKind 127
Chr 34
com.sun.star.drawing.CircleKind.ARC 127
CInt(Var) 32
com.sun.star.drawing.CircleKind.CUT 127
CircleEndAngle 127
com.sun.star.drawing.CircleKind.FULL 127
CircleKind 127
com.sun.star.drawing.CircleKind.SECTION 127
CircleStartAngle 127
com.sun.star.drawing.ColorMode 131
clearContents 115
com.sun.star.drawing.DrawPage 117
ClickCount 166
com.sun.star.drawing.FillProperties 128
CLng(Var) 32
com.sun.star.Drawing.FillProperties 122
Close 44
com.sun.star.drawing.Hatch 120
Cdigos de pgina 9
com.sun.star.drawing.LineProperties 128
CollapseToEnd 76
com.sun.star.drawing.LineProperties
127
CollapseToStart 76
com.sun.star.drawing.LineShape 127
Collate (Boolean) 63
com.sun.star.drawing.LineStyle 122
Color 104, 120
com.sun.star.drawing.PolyPolygonShape 128
Column 85, 102
com.sun.star.drawing.RotationDescriptor 133
Columns 98
com.sun.star.drawing.ShadowProperties 128
COLUMNS 101 s.
com.sun.star.drawing.Shape 118
com.sun.star.awt.Gradient 119
com.sun.star.drawing.Text 127 s.
com.sun.star.awt.HatchStyle) 120
com.sun.star.form.FormButtonType 180
com.sun.star.awt.Key 167 s.
com.sun.star.frame.Desktop 57
com.sun.star.awt.Point 128, 179
com.sun.star.frame.XStorable 61
com.sun.star.awt.Selection 172
com.sun.star.sdb.CommandType 185
com.sun.star.awt.Size 179
com.sun.star.sdb.DatabaseContext 148
com.sun.star.awt.UnoControlEdit 172
com.sun.star.sdb.DataSource 149
com.sun.star.awt.UnoControlListBox 173
com.sun.star.sdb.DefinitionContainer 151
com.sun.star.beans.PropertyState 74
com.sun.star.sdb.QueryDefinition 150
com.sun.star.beans.propertyState.AMBIGUOS_V com.sun.star.sdbc.ResultSetConcurrency 154
ALUE 74
com.sun.star.sdbc.ResultSetType 154
com.sun.star.beans.propertyState.DEFAULT_VAL com.sun.star.sheet.CellDeleteMode 102
UE 74
com.sun.star.sheet.CellFlags 115
com.sun.star.beans.propertyState.DIRECT_VALU com.sun.star.sheet.CellInsertMode 101
E 74
com.sun.star.sheet.GeneralFunction 114
com.sun.star.chart.AreaDiagram 145
com.sun.star.sheet.HeaderFooterContent 111
com.sun.star.chart.ChartArea 140
com.sun.star.sheet.Spreadsheet 96
com.sun.star.chart.ChartAxis 141 s.
com.sun.star.sheet.SpreadsheetDocument 95
com.sun.star.chart.ChartAxisArrangeOrderType
com.sun.star.sheet.TablePageStyle
112
143
com.sun.star.sheet.XRangeMovement 100
com.sun.star.chart.ChartAxisMarks 143
com.sun.star.style.CharacterProperties
71, 103,
com.sun.star.chart.ChartGrid 142
127 s.
com.sun.star.chart.ChartLegendPosition 138 s. com.sun.star.style.GraphicLocation 107
ii
com.sun.star.style.PageProperties 107 s.
Content 91
com.sun.star.style.ParagraphProperties
71, 103, Conversiones 31
127 s.
ConvertFromURL 58
com.sun.star.table.BorderLine 108
ConvertToURL 58
com.sun.star.table.CellAddress 102
CopyCount (Integer) 63
com.sun.star.table.CellContentType
100
copyRange 102
com.sun.star.table.CellProperties 103
COUNT 114
com.sun.star.table.CellRangeAddress 101
COUNTNUMS 114
com.sun.star.table.ShadowFormat 103, 109
createInstance 53
com.sun.star.table.ShadowLocation 103
CreateInstance 82
com.sun.star.table.TableColumns 97
createSearchDescriptor 79
com.sun.star.table.TableColumns
96
createTextCursorByRange 93
com.sun.star.table.TableRows 96 s.
CreateUnoDialog 157
com.sun.star.table.XtableRows 84
createUnoService 148
com.sun.star.text.BaseFrameProperties 87
CSng(Var) 32
com.sun.star.text.bookmark 92
CStr(Var) 32
com.sun.star.text.ChapterFormat 92
CustomShow 135
com.sun.star.text.ControlCharacter 78
com.sun.star.text.Paragraph 68
DataField 185
com.sun.star.text.TextContent 82
DataSourceName 184
com.sun.star.text.TextContentAnchorType 82
Date 39, 91
com.sun.star.text.TextField.Annotation 91
DATETIME 115
com.sun.star.text.TextField.Chapter 92
DateTimeValue 92
com.sun.star.text.TextField.CharacterCount 90
datos multi-dimensionales 15
com.sun.star.text.TextField.DateTime 91
Day 38
com.sun.star.text.TextField.PageCount 90
DBG_methods 52
com.sun.star.text.TextField.WordCount 90
DBG_properties 52
com.sun.star.text.TextTable 68, 84
DBG_supportedInterfaces 52
com.sun.star.text.TextTableRow 84
Declaracin explcita de variables
com.sun.star.text.VertOrientation 85
Declaracin implicita de variables
com.sun.star.text.WrapTextMode 82
Deep 145
com.sun.star.TextField.PageNumber 91
DefaultButton 179
com.sun.star.util.ReplaceDescriptor 81
Dim3D 144
com.sun.star.util.XNumberFormatsSupplier 149
Dir 40
com.sun.star.view.PaperFormat.A4 64
DisplayLabels 143
com.sun.star.view.PaperFormat.Letter 64
Distancia 120
com.sun.star.view.PaperOrientation.LANDSCAPE
Do ... Loop 23
64
dobles 11
com.sun.star.view.PaperOrientation.PORTAIT
dlar 36
64
DOWN 101
com.sun.star.view.Xprintable 63
DrawPages 116
com.sun.star.view.XPrintable 61
coma 36
Comentarios 6
EchoChar 182
Command 150, 184
Editable 172
COMMAND 185
EDITATTR 115
CommandType 184
EMPTY 100
ComputeFunction 114
Enabled 179 ss., 183
iii
7
7
enableTriState 171
end 135
EndColor 119
EndColumn 101
endExecute 158
EndIntensity 119
EndRow 101
entero largo 11
enteros 10
Environ 48
eof 44
EQV 20
Erl 29
Err 29
Error$ 29
escritura exponencial 12
Event.Source 166
Event.Source.Model 166
Exit Function 26
Exit Sub 26
Falso y verdadero 13
fecha 14
file:/// 58
FileCopy 42
FileDateTime 43
FileExist 42
FileLen 43
FileName (String) 63
FillBitmapMode 121
FillBitMapName 121
FillBitmapURL 121
FillColor 118
FillTransparence 122
FillTransparenceGradient 122
FillTransparenceGradientName 119
FilterName (string) 62
FilterName (String) 60
FilterOptions (String) 60
FilterOptions (String)
63
findFirst 80
findNext 80
first() 155
FirstPage 135
Floor 140
FocusFlags 168
FontDescriptor 183
Gamma 131
GapWidth 143
get, mtodo 50
GetAttr 42
getBinaryStream 154
getBoolean 154
getByIndex 55, 85
getByName 53, 96
getByte 153
getBytes 154
getCellRangeByName 113
getCharacterStream 154
getColumns 85
GetCount 55, 85
iv
getDate 154
getDouble 153
getElementNames 54
getFloat 153
getFocus 160
getInt 153
getLong 153
getObject 154
getPosition 50
getPropertyState 73
getShort 153
getString 154
getTextTables() 83
getTime 154
getTimestamp 154
getUnicodeStream 154
goLeft
76
goRight 76
gotoEnd 76
gotoEndOfParagraph 76
gotoEndOfWord 76
gotoNextParagraph 76
gotoNextWord 76
gotoPreviousParagraph 76
gotoPreviousWord 76
gotoRange 76
gotoStart 76
gotoStartOfParagraph 76
gotoStartOfWord 76
GRADIENT 119
GraphicColorMode 131
GraphicURL 131
HasXAxisGrid
142
HasXAxisHelpGrid 142
HasXAxisTitle 142
HeaderBackColor 109
HeaderBackGraphicFilter 109
HeaderBackGraphicLocation 109
HeaderBackGraphicURL 109
HeaderBackTransparent 109
HeaderBodyDistance 109
HeaderBottomBorder 109
HeaderBottomBorderDistance 109
HeaderHeight 109
HeaderIsDynamicHeight 109
HeaderIsShared 109
HeaderLeftBorder 109
HeaderLeftBorderDistance 109
HeaderRightBorder 109
HeaderRightBorderDistance 109
HeaderRightMargin 108
HeaderShadowFormat 109
HeaderText 112
HeaderTextLeft 112
HeaderTextRight 112
HeaderTopBorder 109
HeaderTopBorderDistance 109
Height 85, 97, 107, 117
Heigth 87
HelpMarks 143
HelpText 180 ss.
HelpURL 180 ss.
hexadecimales 13
Highlighted 169
HoriJustify 104
HoriOrient 88
Hour 38
HScroll 182
HARD_HYPEN 78
HARD_SPACE 78
HARDATTR 115
HardLineBreaks 182
hasByName 54, 96
HasLegend 138
hasLocation() 62
HasMainTitle 138
hasMoreElements 55
HasSecondaryXAxis 142
HasSecondaryXAxisDescription
HasSubTitle 138
HasXAxis
141
HasXAxisDescription 142
142
InStr 35
interface 51
Internet Standard RFC 1738 58
Intrprete 2
isAfterLast() 155
IsAlwaysOnTop 135
IsArray 33
IsAutoHeight 85
IsAutomatic 135
isBeforeFirst() 155
IsCellBackgroundTransparent 103
IsCollapsed 76
IsDate 33, 92
IsEditable 172
IsEndless 135
isEndOfParagraph 76
isEndOfWord 76
isFirst() 155
IsFixed 92
IsFullScreen 135
IsLandscape 107
isLast( 155
IsModified() 62
IsMouseVisible 135
IsMultipleMode 174
IsNumeric 33
ISO8859 9
IsPasswordRequired 149
IsReadOnly 149
IsReadOnly() 62
isStarOfParagraph 76
isStarOfWord 76
IsStartOfNewPage 97
IsTextWrapped 104
IsTransparent 103
IsVisible 96 s.
ItemCount 173
ItemId 169
JumpMask (String)
KeyChar
KeyCode
Kill 42
167
167
Label
60
last()
155
Left 35
LEFT 102, 166
LeftBorder 108
LeftBorderDistance 108
LeftMargin 84, 87, 107
LeftPageFooterContent 111
LeftPageHeaderContent 111
Legend 138
Len 35
Line Input 44
LINE_BREAK 78
LINE_TOP 88
Lneas de programacin 5
LineColor 123
LineCount 183
LineJoint 123
Lines 145
LineShape 127
LineStyle 123
LineTransparence 123
LineWidth 123
loadComponentFromURL 57
LoadLibrary 157
Location 103, 128
Logarithmic 143
Model.Border 173 s.
Model.DefaultButton 170
Model.EchoChar 173
Model.Enabled 160
Model.FontDescriptor 170 ss.
Model.HardLineBreaks 173
Model.Height 159
Model.HelpText 170 ss.
Model.HelpURL 170 ss.
Model.HScroll 173
Model.Label 170 ss.
Model.LineCount 174
Model.MaxTextLen 173
Model.MultiLine 173
Model.MultiSelection 174
Model.PositionX 159
Model.PositionY 159
Model.Printable 170 ss.
Model.ReadOnly 173 s.
Model.SelectedItems 174
Model.State 171 s.
Model.StringItemList 174
Model.TabIndex 160, 171
Model.Tabstop 160, 172 ss.
Model.Text 173
Model.TextColor 170 ss.
Model.Title 159
Model.VScroll 173
Model.Width 159
mdulos 51
moneda 11
Month 38
moveRange 102
Msgbox 45
MultiLine 182
MultipleMode 173
MultiSelection 183
64
OBJECTS 115
objeto Selection 68
objetos dependientes del contexto
octales 13
Offset 91
On Error 28
On Error Resume Next 29 s.
Open 43
OpenOffice.org Basic 5
OptimalHeight 97
OptimalWidth 97
OR 20
Orientation 104, 117
Origin 142
Overlap 143
Overwrite (Boolean) 63
Pages (String) 64
PageStyle 96
Pgina actual 90
PaperFormat (Enum) 64
PaperOrientation (enum) 64
PaperSize (Size) 64
ParaAdjust 72
ParaBackColor 72
ParaBottomMargin 72
PARAGRAPH_BREAK 78
ParaLeftMargin 72
ParaLineSpacing 72
ParamArray 28
parmetros 26
Parmetros opcionales 27
ParaRightMargin 72
ParaStyleName 72
ParaTabStops 72
ParaTopMargin 72
Password 149
Password (String) 60, 63
Pause 135
vii
53
Percent 144
Point 118
PolyPolygon 128
Position 118, 139, 179
previous() 155
Print 44, 63
Printable 181 ss.
PrintAnnotations 112
PrintCharts 113
PrintDownFirst 113
PrintDrawing 113
Printer, propiedad 64
PrinterPaperTray 107
PrintFormulas 113
PrintGrid 113
PrintHeaders 113
PrintObjects 113
PrintZeroValues 113
private:factory 61
Procedimientos 25
PRODUCT 114
PropertyValue 60
Propiedades 50
punto 36
PUSH 180
PushButtonType 170
ResultSetType 154
Resume 28
Right 35
RIGHT 101, 166
RightBorder 108
RightBorderDistance 108
RightMargin 84, 87, 107
RightPageFooterContent 111
RightPageHeaderContent 111
RmDir 41
RotateAngle 104, 133
Row 102
Rows 98
ROWS 101 s.
QUERY 185
QueryDefinitions
150
ReadOnly 182 s.
ReadOnly (Boolean) 60
Red de Objetos Universal (UNO)
ReDim 16
RefValue 181 s.
rehearseTimings 135
removeByIndex 55, 98
RemoveByIndex 85
removeByName 54
removeItems 174, 184
RemoveRange 101
removeTextContent 83
RepeatHeadline 84
replaceByName 54
ReplaceDescriptor 81
RESET 180
ResultSetConcurrency 154
49
SCROLL_INSENSITIVE 155
SCROLL_SENSITIVE 155
SearchBackwards 79
SearchCaseSensitive 79
SearchDescriptor 79
SearchFlags 59
SearchRegularExpression 79
SearchSimilarity 79
SearchSimilarityAdd 79
SearchSimilarityExchange 79
SearchSimilarityRelax 80
SearchSimilarityRemove 79
SearchStyles 79
SearchWords 79
Second 38
SecondaryXAxis 142
Select ... Case 21
Selected 169
SelectedItem 173
SelectedItemPos 173
SelectedItems 173, 183
SelectedItemsPos 173
SelectedText 172
Selection 172
selectItem 174, 184
sencillas 11
set, mtodo 50
SetAttr 43
setPosition 50
Shadow 125
ShadowColor 125
ShadowFormat 103, 108
viii
ShadowTransparence 125
ShadowWidth 103
ShadowXDistance 125
ShadowYDistance 125
ShearAngle 133
Sheet 101 s.
Sheets 95
Shell 47
Size 118, 128, 139, 179
SOFT_HYPEN 78
Sort (Boolean) 63
SplineOrder 145
SplineResolution 145
SplineType 145
Stacked 144
StackedBarsConnected 145
StarColor 119
StarDesktop 57
StarDesktop.CurrentComponent 58
StarDesktop.LoadComponentFromURL
StarIntensity 119
start 135
StartColumn 101
StartRow 101
StartWithNavigator 135
State 171, 181 s.
STDEV 114
STDEVP 114
StepCount 119
StepHelp 142
StepMain 142
storeAsURL 62
String 139
STRING 115
StringItemList 183
Style 119 s.
StyleFamilies 65
STYLES 115
SUBMIT 180
Subtitle 138
SUM 114
supportsService 52
SuppressVersionColumns 149
SymbolBitmapURL 145
SymbolSize 145
SymbolType 145
59
Unicode 9
Universal Network Objects (UNO)
Unpacked (Boolean) 63
UP 102
UpdateCatalogName 150
updateRow() 156
UpdateSchemaName 150
UpdateTableName 150
URL 149, 180
UsePn 135
User 149
49
Variables boleanas 13
VBA, recuperar solo directorios 41
Variables globales 18
VBA, Redimensionar matrices 16
Variables locales 17
VBA, reiniciar los estados de error 29
Variables privadas 18
VBA, RmDir 42
Variables pblicas 17
VBA, Snapshot 155
VARP 114
Verificar el contenido de las variables 33
VBA, Application.ActiveDocument 58
Vertical 145
VBA, Application.ActiveWorkBook 58
VertJustify 104
VBA, atributos de archivos 43
VertOrient 85, 88
VBA, ByRef 27
VScroll 183
VBA, Cambio de los lmites de la matriz 17
VBA, Document.Tables.Add 83
VBA, Dynaset Recordset
155
X 166
VBA, For Each ... Next 23
XAxis 141
VBA, Formateo fecha y hora 37
XAxisTitle 142
VBA, funciones y procedimientos 27
XEnumeration 55
VBA, InsertAfter 75
XEnumerationAccess 55
VBA, InsertBefore 75
XHelpGrid 142
VBA, Like 20
XIndexAccess 55
VBA, marcadores 7
XIndexContainer 55
VBA, marcos 87
XMainGrid
142
VBA, mximo de caracteres 10
XmultiServiceFactory 53
VBA, mensajes de error 29
XNameAccess 53
VBA, MkDir 42
XNameContainer 53 s.
VBA, MoveEnd 75
XoffSet 119
VBA, MoveStart 75
XOR 20
VBA, objetos 50
XrangeMovement 102
VBA, Paragraph(1) 69
VBA, Paragraphs 69
Y 166
VBA, ParamArray 28
Year 38
VBA, Parmetros 27
YoffSet 119
VBA, Range 75, 83, 103