el open script - Universidad Nacional Jorge Basadre Grohmann

Transcripción

el open script - Universidad Nacional Jorge Basadre Grohmann
Universidad Nacional Jorge Basadre Grohmann
Facultad de Ciencias
CONSTRUCCIÓN DE HIPERTEXTOS CON UN
LENGUAJE DE PROGRAMACIÓN ORIENTADO
A OBJETOS: EL OPEN SCRIPT
Mgr. Eduardo Rodríguez Delgado
Lic. Luis César Mendez Ávalos
Dra. Elena Álvares Saiz
S.A.P. Oscar F. Menéndez Ale
Tacna – Perú
2003
1
PRESENTACION
El avance de la informática en los últimos años ha permitido
concebir programas en los que el uso del computador abre
nuevas e interesantes perspectivas. Aunque inicialmente se
utilizaba el computador para almacenar datos, que se
presentaban al usuario como texto, los avances realizados en los
años sucesivos permitieron combinar el texto con los gráficos. Se
conseguía así una mejor calidad de los programas y una
presentación más atractiva de los mismos. En esta etapa, sin
embargo, muy pocas veces el usuario podía interaccionar con
estos elementos.
Actualmente, es posible utilizar el computador y los programas
de forma totalmente distinta; la información contenida en el
programa se presenta al usuario mediante combinaciones de
textos interactivos, gráficos, sonido, vídeo, animación, etc.
Surgen de esta forma los métodos multimedia, que revolucionan
la concepción de almacenamiento de la información así como la
de su presentación, permitiendo producir aplicaciones en las que
se involucran los sentidos humanos.
Si una persona desea leer un texto tradicional, cuya estructura
habitual es en páginas, deberá realizar la lectura en forma
secuencial para su total comprensión. Sin embargo, muchas
veces el nivel de concentración del lector y la gran cantidad de
información expuesta hace necesario volver sobre aspectos que
no quedaron suficientemente comprendidos. El índice de
contenidos o el índice por palabras clave y/o autores facilitan
muchas veces este trabajo. No obstante, con frecuencia el
usuario desiste en su búsqueda ante la imposibilidad de
encontrar lo que inicialmente deseaba por el excesivo tiempo
empleado en este proceso.
Los hipertextos, que incorporan elementos no típicamente de
textos, facilitan enormemente este proceso. Permiten, entre
otras muchas opciones, acceder rápidamente a cualquier página
y reconducir el flujo de la información de forma individualizada
según las exigencias o conocimientos del usuario. Asimismo, se
puede combinar el texto con animaciones, vídeo y sonidos que
muestren relaciones con aquellas palabras cuya importancia se
quiera poner de manifiesto.
2
En esta línea se ha producido un avance notable en los llamados
documentos compuestos que permiten diseñar productos
constituidos por módulos elaborados cada uno de ellos con
aplicaciones distintas, bien sean hojas de cálculo, procesadores
de texto, una base de datos, etc. Uno puede pensar en
programas cuya respuesta a los datos del usuario sea un gráfico
y que, a medida que el usuario va introduciendo nuevos valores,
el programa se encargue de abrir la aplicación que realiza el
gráfico y nos devuelva el programa inicial una vez terminada
esta operación.
Todos estos elementos amplían las posibilidades de cualquier
programa y hacen imposible predecir el futuro más próximo. La
herramienta ToolBook, que se describe en este proyecto, debe
situarse en este contexto.
ToolBook es una herramienta de programación que posee un
lenguaje de fácil comprensión aunque a la vez muy poderoso,
Open Script. Con esta herramienta se pueden construir de forma
rápida aplicaciones que combinen los elementos típicos de una
aplicación Windows (como ventanas, menús, botones, iconos,
etc.).
En toda aplicación de calidad el desarrollo de una buena interfase
de usuario absorbe gran parte del tiempo del cómputo global.
Con ToolBook se pueden construir interfases de gran complejidad
que superan a muchas de las aplicaciones desarrolladas con
lenguajes convencionales. ToolBook también es utilizado para la
creación de prototipos de programas y demostraciones ya que
permite combinar de forma rápida y sencilla texto, gráficos,
vídeo, animaciones y sonido. Además, su capacidad de
comunicación con otras aplicaciones, que pueden ser llamadas
desde ToolBook y enviarle resultados, hacen de él una
herramienta muy útil para este fin.
La utilización de ToolBook en el desarrollo de programas
educativos permite la creación de aplicaciones en las que, de
forma sencilla y rápida se tiene la posibilidad de cambiar el flujo
de la información según las necesidades del usuario, relacionar
palabras, incluir cuestiones planteadas al usuario y marcadores
que evalúen los conocimientos alcanzados, activar animaciones y
vídeos aclarativos, incorporar el lenguaje hablado, etc. Todos
estos elementos aplicados a la enseñanza hacen que el
aprendizaje sea menos traumático y se pueda realizar de forma
3
individualizada, ajustándose a las necesidades particulares de
cada persona y a las específicas de cada tema. También es
posible utilizar ToolBook para la creación de programas de tipo
personal como, por ejemplo, agendas o contabilidades. Muchos
de los usuarios de ToolBook son programadores aficionados que
construyen sus aplicaciones para uso personal en las que
almacenan teléfonos, direcciones o cualquier información
privada. La razón principal para ello es que se pueden construir
aplicaciones muy aparentes sin grandes esfuerzos ni
conocimientos de informática.
A modo de resumen se puede concluir que ToolBook puede
utilizarse para muchos fines comenzando desde la realización de
programas de uso doméstico hasta importantes y complicadas
aplicaciones. En todas ellas se pueden combinar los elementos
típicos de una aplicación Windows como ventanas, menús,
botones, iconos, sonidos, etc., lográndose resultados que por
otros medios implicarían mucho más tiempo.
La idea de realizar este proyecto surgió como consecuencia de
observar que los docentes y alumnos de la especialidad de
informática y Sistemas no utilizan ni mucho menos trabajan en
este entorno; y la mayoría de usuarios únicamente utilizan los
programas tradicionales como el Power Point donde las
animaciones, gráficos, video y sonido están muy limitados; así
mismo el deseo de comenzar a trabajar en este entorno en
donde la carencia de documentación en español que, sin duda,
nos hubiera facilitado la profundización en la herramienta y la
elaboración de materiales. Así pues, dada la importancia que el
programa está adquiriendo entre los desarrolladores multimedia,
aspiramos a realizar una aportación a la escasa bibliografía
existente.
Se ha pretendido estructurarlo con criterio, y orientarlo hacia el
uso exclusivo del lenguaje de programación orientado a objetos,
el Open Script para la creación de la más caprichosas e
imaginativas animaciones posibles, de modo que el avance en el
proyecto se identifique sensiblemente con el progreso de dominio
del programa y con la respuesta a las dudas que de cada etapa
sucesiva puedan ir surgiendo
4
INDICE
1. EL LENGUAJE DE PROGRAMACION OPEN SCRIPT
- Introducción
- Referencia a los objetos
- Variables y contenedores
- Constantes
- Operadores
- Estructuras de control
- Mensajes
- Propiedades
2. ESTRUCTURA DE UN PROGRAMA EN TOOLBOOK
- El libro
- La pagina: el frente y el fondo
- Los objetos
- Nivel autor y nivel lector
3. LA INTERFASE DE TOOLBOOK
- Los menús
- Barra de herramientas
- Las paletas
- Barra de estado
4. LOS OBJETOS EN TOOLBOOK
- La paleta de herramientas
- Objetos gráficos
- Botones
- Campos
- Cuadros de selección y cuadros combinados
- Palabras activas
- Objetos OLE
5. EL EDITOR Y EL DEPURADOR DE GUIONES
- El editor de guiones
- La ventana de guiones propio
- Grabando guiones
- El depurador de guiones
6. ANIMACION Y SONIDO
- Introducción
- Animaciones
- Sonido
7. MULTIMEDIA CON TOOLBOOK
5
EL LENGUAJE DE PROGRAMACION OPEN SCRIPT
INTRODUCCION
OpenScript es el lenguaje de programación de ToolBook.
Se trata de un lenguaje orientado a objetos. Esto quiere decir
que su filosofía es diferente de la que rige la programación
tradicional, en la que el programa está pensado para trabajar en
secuencias predeterminadas.
En nuestro caso existen muchos objetos, como ya se ha
visto anteriormente, y cada uno de ellos tiene un conjunto de
programas asociados que forman lo que se llama su guión
(script). El flujo del programa no está previamente fijado, sino
que lo marca el usuario al accionar sobre los objetos. De esta
forma, el control pasa de un guión a otro dependiendo de ciertos
sucesos.
Para incluir estos programas se dispone del editor de
objetos que es una ventana en la que se puede editar, compilar
y chequear la sintaxis de los guiones. ToolBook permite abrir
varios editores de guiones de varios objetos a la vez.
Veamos cómo abrir el asociado a un objeto para poder incluir los
guiones de las prácticas que se proponen en este capítulo.
Deberá proceder de la forma siguiente:
•
•
seleccione el objeto cuyo guión quiere editar
pulse sobre el botón
editor de guiones en la barra de
herramientas o en el menú de información que se obtiene
después de pulsar el botón derecho del ratón cuando se
encuentre el cursor encima del objeto.
REFERENCIA A LOS OBJETOS
A cada objeto en ToolBook le corresponde una palabra
clave con la que se puede hacer referencia al mismo. La
siguiente tabla recoge la denominación OpenScript de los
objetos:
6
AngledLine
Arc
background
Book
Button
curve
ComboBox
Ellipse
field
Group
Hotword
irregularPolygon
Line
Ole
page
PaintObject
Picture
pie
Polygon
RecordField
rectangle
RoundedRectangle Viewer
Además de hacer referencia a estos objetos se necesita, a la
hora de programar los guiones, denominar a otro tipo de objetos
como son las paletas, la barra de estados, etc. El nombre que
reciben estos elementos se recoge en la tabla siguiente:
ColorTray
LineEndsPalette
PolygonPalette
StatusBox
ToolBar
CommandWindow
MenuBar
Scrollbar
StatusControl
ToolPalette
linePalette
patternPalette
statusBar
statusIndicators
Cuando el objeto sea del frente de la página en la que se
ejecuta la sentencia se utiliza su palabra clave y su número de
identificación. Por ejemplo, los siguientes guiones indican,
respectivamente, cómo seleccionar un objeto rectángulo con
número de identificación 3 y ocultar el botón de nombre Salir:
select rectangle ID 3
hide button "Salir"
Si el objeto no está en la página actual se tiene que indicar
además su localización en el libro. Por ejemplo, para mostrar en
pantalla un campo de nombre Texto que se encuentra en el
fondo Ejemplo del visor Estado:
show field "Texto" of background "Ejemplo" of viewer
"Estado"
y si, por ejemplo, se quiere mostrar un objeto de tipo combo box
de nombre Estilos que forma parte del grupo Opciones que se
encuentra en la página 3 del libro OBJETOS.TBK:
show comboBox "estilos" of group "opciones" of page 3 \
of book "Objetos.TBK"
7
Importante:
A veces una sentencia OpenScript no cabe en
una línea por lo que es necesario
dividirla en dos o
más (ver ejemplo anterior). Para indicar que una
línea continúa en la siguiente se utiliza el símbolo "\"
al final de la primera.
Cuando se quiere referir al objeto con el que se está trabajando
en un momento dado se pueden utilizar los siguientes términos:
my o self Se refiere al objeto cuyo guión contiene el ejecutor
del mensaje. Por ejemplo, si se quiere ocultar un
objeto cuando se haga clic sobre él, deberá incluirse el
siguiente guión:
to handle buttonClick
hide self
end buttonClick
this
ejemplo,
Se refiere a la página, fondo o libro actual. Por
show group ID 3 of this background
target
Se refiere al objeto que inicialmente recibió el mensaje
que se está ejecutando.
Por ejemplo, si se hace clic sobre un objeto de un
grupo,
el
target
es
el
propio elemento mientras que el self es el grupo que
contiene el mensaje buttonClick:
to handle buttonClick
if object of target is "line"
go to page 2
end if
end buttonClick
selection Se refiere al objeto a objetos seleccionados. Por
ejemplo, el siguiente guión permite modificar el estilo
del borde del objeto que esté seleccionado en el
momento de ejecutarse
borderStyle of the selection = shadowed
8
Además de los objetos, que ya se han descrito, en un guión
intervienen los elementos siguientes: parámetros, variables,
mensajes, comandos y funciones cuya descripción es el objetivo
de este capítulo.
VARIABLES Y CONTENEDORES
Una variable es simplemente un nombre que hace referencia
a un cierto espacio de memoria que contiene una cierta
información. OpenScript se encarga de identificar, por el
contexto de las instrucciones que escribe el usuario, qué
nombres corresponden a variables y cuáles no.
Existen variables de rango local, que son las que sólo
existen durante la ejecución de un guión, y variables globales o
del sistema, que existen desde su creación hasta que se cierra
ToolBook. Éstas se definen con el comando system. Así, la
instrucción,
System nombre,apellidos,dirección,teléfono
nos define como globales las cuatro variables cuyo significado es
obvio. Para obtener las variables globales que han sido
declaradas hasta el momento sé puede utilizar la propiedad
sysSistemVariables.
Para asignar un valor a una variable se utiliza el comando de
asignación (=), o los comandos set o put. Cuando el valor sea de
tipo texto se deberá incluir entre comillas. Por ejemplo,
colorTexto = "rojo"
- - Define la variable colorTexto
- - con valor rojo
put 10 into tamaño
- - Define la variable tamaño con
valor 10
set nombre to "Rodrigo"
- - Define la variable
nombre
- - con valor Rodrigo
ToolBook dispone de tres variables reservadas:
•
it. Es una variable local en la que se incluye el resultado
de ciertos comandos (ask, get, pop, request, set). Si
quiere utilizar posteriormente el valor almacenado en
esta
9
variable no olvide copiarlo en algún otro
contenedor.
•
argList. Es un contenedor en el que se almacenan los
parámetros que se han pasado en el ejecutor con el que
se está trabajando.
•
argCount. Es una variable que contiene el número de
parámetros del ejecutor.
No es necesario definir el tipo de variables (numérica,
alfanumérica, etc.) ya que OpenScript selecciona para la
variable, en el momento en que aparece por vez primera, el tipo
de dato que considera apropiado. Sin embargo se puede definir
haciendo referencia al tipo antes del nombre de la variable. Por
ejemplo:
local INT I
system COLOR colorTexto
También es posible definir arrays en OpenSeript. Pueden ser
unidimensionales o multidimensionales, con un número fijo de
elementos o con tamaño dinámico. Cuando declare este tipo de
variable el programa se encarga de inicializar todos los valores.
Ejemplos de declaraciones de estas variables son los siguientes:
local Tamaños[10] - - Define un array de 10 elementos
local Tamaños[]
- - Define un array unidimensional
dinámico
local Estilos[3] [4] - - Define un array bidimensional
- - de tres filas por cuatro columnas
local Estilos[][]
- - Define un array bidimensional
dinámico
Cuando se quiere hacer referencia, por ejemplo, al elemento 4
del array Tamaños o al elemento (2,1) del array Estilos deberá
escribir:
Tamaños[4]
Estilos [2] [1]
No olvide que el índice de cualquier array en ToolBook comienza
con 1. Para iniciar un array con todos los elementos con el
mismo valor se puede utilizar el comando fill, y para obtener su
10
dimensión, la función dimensions() (para una descripción en
detalle ver los apartados correspondientes en el apartado de
comandos).
CONSTANTES
A continuación se da una lista de algunas constantes en
OpenSeript.
Black
Blue
Cyan
Green
Gray
Magenta
Red
White
Yellow
LightGray
Color
Espaciado
CR
CRLF
Formfee
d
Ansi 13
LF
Ansi 10, Ansi space
13
Ansi 12
Tab
Ansi 10
Ansi 32
Ansi 9
Ansi 171
Ansi 34
Especiales
Leftquot
e
Null
Pi
quote
""
rightquote
3.1415926535 EOF
89793
Ansi 187
Ansi 26
OPERADORES
Los operadores son elementos que actúan en la evaluación
de las expresiones afectando a los valores que intervienen en
ellas. Todos los operadores que admite la versión 3.0 de
OpenScript se comentan a continuación.
11
Operadores aritméticos
Un operador aritmético combina dos valores aritméticos y
produce un resultado aritmético. Estos operadores son:
^
*
/
div
mod
+
-
Exponenciación.
Multiplica dos valores numéricos.
Divide dos valores numéricos.
Divide y trunca (división entera).
Módulo (resto al dividir por el número indicado).
Suma dos valores numéricos.
Resta dos valores numéricos. Ante un sólo valor
(operación unaria) lo cambia de signo.
Operadores lógicos
Un operador lógico combina dos valores lógicos (cierto o
falso) o afecta a uno solo y produce un resultado lógico. Por
ejemplo, el operador or entre los valores cierto y falso produce
un resultado que es cierto. Algunos de los operadores lógicos
que se listan a continuación requieren que los valores lógicos que
combinan estén almacenados en un contenedor.
and
ciertas.
Y lógico. Devuelve true si ambas expresiones son
Contains Contiene. Devuelve cierto o falso según el primer
texto contenga al segundo o no, respectivamente.
is
Igual. Devuelve cierto si ambas expresiones son
equivalentes.
Las
expresiones
pueden
ser
números, texto, fechas o tiempo.
is in
Está en. Devuelve cierto o falso según el primer
texto esté contenido en el segundo o no,
respectivamente.
is not
Diferente. Devuelve true si las dos expresiones
no son equivalentes.
is not in No está en. Devuelve falso o cierto según el primer
texto esté contenido en el segundo o no,
respectivamente.
12
not
No (negación lógica). Devuelve true si la expresión
de la derecha es falsa, en caso contrario devuelve
false.
Or
O lógico. Devuelve true si alguna de las
expresiones es cierta.
=
Igual. Devuelve cierto si las dos expresiones
tienen el mismo valor.
<
Menor. Devuelve true si la expresión de la
izquierda es menor que la expresión de la derecha.
<=
Menor o igual. Devuelve true si la expresión de la
izquierda es menor o igual que la expresión de la
derecha.
>
Mayor. Devuelve true si la expresión de la
izquierda es mayor que la expresión de la derecha.
>=
Mayor o igual. Devuelve true si la expresión de la
izquierda es mayor o igual que la expresión de la
derecha.
<>
Diferente. Devuelve true si las dos expresiones
son diferentes.
Operadores entre cadenas de caracteres (strings)
Son operadores de concatenación. Existen las variantes
siguientes:
&
Concatena dos cadenas de caracteres.
&&
Concatena dos cadenas de caracteres dejando un
espacio blanco entre ambas. Por ejemplo, si
asignamos los textos que se especifican a las
variables Textol, Texto2
texto1 ="Esto es"
13
texto2 ="un ejemplo"
la concatenación de ambos se puede hacer
put textol&&texto2 into Frase
El resultado final es que la variable Frase es la
secuencia de caracteres "Esto es un ejemplo".
char, chars,
ejemplo,
character,
characters
graphic
Indica uno o más caracteres del texto. Por
put "¿Cómo" into texto
put "estás?" after char 6 of Texto
Asigna un gráfico a un carácter de un texto o
devuelve una referencia a un carácter gráfico
existente. Por ejemplo,
put bitmap "logotipo" into graphic of character 1\
of textline 2 of text of field "Texto"
word, words
ejemplo,
Indica una o más palabras de un texto. Por
select word 1 of text of field "Texto"
item, items
Indica uno o más valores de un lista. Por ejemplo,
put
"rojo,azul,amarillo,verde"
into
ListaColores
put item 2 of ListaColores into elemento
textline,
Obtiene uno o más strings que terminan con un
salto de línea (CRLF).
textlines
por ejemplo,
put first textline of text of field "Texto" into
linea 1
Operador argument
El operador argument consigue el valor de un parámetro
pasado al receptor de mensajes que se está ejecutando. Por
ejemplo,
14
on Dibujar Parametrol,Parametro2,Parametro3
put argument 3 into text of field "Prueba"
end
Jerarquía de operadores
Para evitar conflictos, en el orden de evaluación de
expresiones, están fijados los niveles de prioridad que se indican
en la tabla siguiente (0 la máxima y 14 la mínima).
Cuando hay que evaluar una expresión (cadena de
operadores y operandos) OpenScript opera en el orden que se
indica en la tabla y, en caso de igualdad, de izquierda a derecha
de la expresión.
OPERADORES
Paréntesis
PRIORIDAD
0
PRIORIDAD
1
2
OPERADORES
not,
unary -,
argument
bitNot
character,
graphic, word,
item, textline
BitShiftLeft,
BitShiftRight
bitOr, bitXOr
*, / , mod , div
& , &&
4
bitAnd
5
6
8
10
^
+, is in
is not in
contains
And
7
9
11
<,>,<=,
>=,=,<>,
is , is not
Or
12
3
13
14
PRACTICA 01.- Practique con la página Operadores del libro
EJEMPLO7.TBK. que se incluye en el disquete que se adjunta
en esta documentación.
15
ESTRUCRURAS DE CONTROL
Las estructuras de control son las encargadas de controlar
el flujo del programa. Entre ellas destacan las que permiten
tomar decisiones en función de ciertos sucesos o valores de
ciertas expresiones y las que permiten realizar un número de
ciclos fijo o variable.
if / then / else
If <expresión> [then]
<sentencias>
[else
<sentencias>]
end [if]
Descripción: Ejecuta un bloque
dependiendo de una condición.
de
comandos
o
nada,
step
step <variable> from <valor inicial> to <valor final> [by
<paso>]
<sentencias>
end [step]
Descripción: Incrementa o decrementa una variable desde el
valor inicial hasta el valor final sumando las unidades indicadas
en paso (paso puede ser negativo).
while
while <condición>
<sentencias>
end [while]
Descripción: Repite un ciclo mientras se verifica la condición
indicada.
conditions / when /else
conditions
when
<expresión>
16
<sentencias>
[else
........
<sentencias>]
end [conditions]
Descripción: Controla si se verifica una condición y ejecuta las
sentencias incluidas en la primera condición cierta.
do / until
Do
< sentencias >
until <expresión>
Descripción: Repite un ciclo hasta que se verifica la condición
indicada.
MENSAJES
Como ya se ha indicado anteriormente OpenScript está
basado en el envío de mensajes a los diferentes objetos. Unos
mensajes son estándar y otros son generados por el
programador o analista de la aplicación. Los primeros son
enviados por el sistema automáticamente, que informa a los
objetos de la ocurrencia de ciertos sucesos. Los segundos los
envía el programador cuando desea, sin más que evocar su
nombre, bien en los guiones o mediante la ventana de
comandos.
Jerarquía de Mensajes
Cuando se envía un mensaje a un objeto, éste tiene la
posibilidad de recibirlo. Para ello es necesario que exista en su
guión un ejecutor o receptor de aquél. El ejecutor no es otra
cosa que un fragmento de programa (subrutina o procedimiento)
que lleva el nombre del mensaje, empezando por una línea que
comienza con la palabra to handle y termina con la palabra end.
La estructura general de un mensaje es:
to handle <Nombre del mensaje>
<sentencias OpenScript>
end [<Nombre del mensaje>]
17
donde se considera opcional todo lo que aparece entre corchetes.
Un ejemplo de un mensaje creado por el usuario puede ser
to handle SiguientePágina
- - pasa a la página siguiente
go to next page
end
Importante: La inclusión de comentarios siempre es
aconsejable para revisar más fácilmente
el código.
Para escribir un comentario en el guión de un objeto
deberá escribirse dos signos menos ("--") delante de
la sentencia que se quiere sea ignorada por el
compilador.
Si el objeto carece de ejecutor de ese mensaje, pasará al
objeto siguiente en la jerarquía. Esta no es más que un orden de
prioridades para el progreso de los mismos.
Si se desea que un objeto intercepte un mensaje sin que
ocurra nada, basta con colocar un ejecutor o receptor vacío. Si,
por el contrario, se quiere que no lo intercepte, basta con
eliminar el ejecutor del mensaje. Finalmente, si se pretende que
ocurra alguna acción y que posteriormente el mensaje progrese
a través de la jerarquía, se puede utilizar el comando
forward <mensaje>
al final del ejecutor, con lo que éste pasará al objeto siguiente en
la jerarquía.
Desde cualquier otro mensaje (ya sea predefinido o enviado
por el usuario) se pueden igualmente enviar mensajes. Así, por
ejemplo, se puede incluir el anterior en el guión de un botón. De
esta manera, se podrá navegar y acceder a la página siguiente.
Bastaría incluir en el guión del botón
to handle ButtonUp
send SiguientePágina
end
para que al pulsar sobre él se pase a la página siguiente del
libro.
18
Mediante el comando send se puede enviar un mensaje a
cualquier objeto en la jerarquía. Por ejemplo,
send buttonClick to button "Salir"
También es posible pasar parámetros en los mensajes, para
ello bastará escribirlos a continuación del nombre del ejecutor
separados por comas. Por ejemplo,
to handle TrazarLinea ColorObjeto,Grosor
- - Instrucciones OpenScript
end TrazarLinea
Para utilizar este mensaje desde un guión bastará escribir, por
ejemplo,
to handle Dibujar
send TrazarLinea ColorElegido,GrosorElegido
end Dibujar
donde ColorElegido y GrosorElegido deberán definirse
previamente a la sentencia en la que aparecen como
parámetros.
Cuando se quiere declarar el tipo de una variable que es el
parámetro de un ejecutor se puede incluir en la sentencia to
handle. Por ejemplo, podría escribirse
to handle TrazarLinea Color ColorObjeto,Int Grosor
- - Instrucciones OpenScript
end TrazarLinea
Listado de mensajes
Mensajes del ratón:
Si se está en el nivel lector son enviados cuando se pulsa el
botón del ratón, se cambia de posición o cuando entra o sale del
rectángulo que delimita a un determinado objeto.
19
ButtonClick <localización>,<isShift>,<isCtrl>
ButtonDoubleClick <localización>,<isShift>,<isCtrl>
ButtonDown <localización>,<isShift>,<isCtrl>
ButtonStillDown <localización>,<isShift>,<isCtrl>
ButtonUp <localización>,<isShift>,<isCtrl>
MouseEnter
MouseLeave
RightButtonDoubleClick <localización>,<isShift>,<isCtrl>
RightButtonDown < localización >,<isShift>,<isCtrl>
RightButtonUp < localización >,<isShift>,<isCtrl>
PRÁCTICA 02.- Abra el libro EJEMPL07.TBK. Sitúese en la página
cuyo título es Mensajes y realice los pasos siguientes:
1.
2.
3.
Crear un botón llamado Botón y etiquetado con el texto
Receptor de mensajes Botón
Cree un campo llamado MensajesRecibidos. Elija como
tipo Word Wrap y de estilo Scrolling.
Introducir en él el siguiente guión
to handle buttonClick
system contador
put contador+l into contador
put "mensaje buttonClick" into textline contador \
of text of Field "mensajesRecibidos"
select textline contador of text \
of Field "mensajesRecibidos"
end
4.
Escriba un ejecutor análogo para los diferentes
mensajes que puede recibir el botón en su guión.
5.
Para inicializar la variable global utilizada en el guión
del punto 3 escriba en el guión de la página:
to handle enterPage
system contador
put 0 into contador
put null into text of field "mensajesRecibidos"
end
20
6.
Pase al modo lector y compruebe los mensajes que va
recibiendo el botón según, entra o sale de su
rectángulo o hace clic sobre él.
Mensajes del teclado:
Se envían, en el nivel lector, cuando se pulsa una tecla del
teclado. ToolBook responde de forma diferente según la tecla
que se pulse y el objeto sobre el que se encuentre el cursor en
ese momento. Si, por ejemplo, se trata de un campo, la acción
que se producirá será la inserción dentro del campo del carácter
correspondiente.
KeyChar <tecla>, <isShift>,<isCtrl>
KeyDown <tecla>, <isShift>,<isCtrl>
KeyMnemonic <tecla>
KeyUp <tecla>, <isShift>,<isCtrl>
PRÁCTICA 03.- Incluya en el guión del libro EJEMPL07.TBK:
to handle keyUp TeclaPulsada
conditions
- - Si la tecla pulsada es la flecha izquierda
- - del teclado se va a la página anterior
when TeclaPulsada=KeyleftArrow
go to previous page
- - Con la flecha derecha se va a la página
siguiente
when TeclaPulsada =keyRightArrow
go to next page
end conditions
end
Navegue por el libro mediante las teclas en forma de flecha
izquierda y derecha para avanzar, respectivamente, a la página
siguiente y anterior.
PRÁCTICA 04.- Incluya en el guión de la página Mensajes del
libro EJEMPLO7.TBK. Compruebe que aparecen las órdenes que
21
permiten escribir en el texto del campo MensajesRecibidos
(utilizado en la práctica 43) información de la tecla que se pulsa:
to handle KeyChar tecla,isShift,isControl
system contador
put contador+l into contador
put "mensaje KeyChar con los parámetros"&&\
tecla&","&&isShift&","&&isControl\
into textline contador \
of text of Field "mensajesRecibidos"
- - Selecciona la línea almacenada en la variable
contador
- del texto del campo cuyo nombre es
MensajesRecibidos
select
textline
contador
of
text
of
Field
"mensajesRecibidos"
end
Mensajes de los visores (viewers):
Son enviados a los viewers cuando se abren, cierran,
muestran, ocultan o cambian alguna de sus propiedades como su
tamaño y posición.
CloseWindow
enterWindow <viewer
anterior>,<handle
anterior>
leaveWindow <viewer
nuevo>,<handle nuevo>
Moved
Shown
enterMenu < Nombre>, < Alias>
Hidden
MenuItemSelected
<Nombre>,<Alias>
OpenWindow
sized
PRÁCTICA 05.- Sitúese en la última página del libro
EJEMPLO7.TBK y cree una nueva página con fondo diferente.
Posteriormente realice los siguientes pasos:
1. Sitúe un campo en el frente de la nueva página y
póngale por nombre Texto.
2. Cree un visor que tenga esa página por defecto.
Póngalo por nombre Portada.
3. Incluya en el guión del libro:
22
to handle EnterBook
system nombre
put "Rodrigo" into Nombre
send presentación
end
4.
Incluya en el guión del libro el siguiente ejecutor
to handle Presentacion
open viewer "Portada"
show viewer "Portada"
pause 120 seconds
hide viewer "Portada"
end
5.
"Texto"
Incluya en el guión del visor el siguiente ejecutor:
to handle openWindow
system nombre
put "Bienvenido;"&&nombre
into
text
of
field
end
6.
Cierre el libro y vuélvalo a abrir. Observe cómo se abre
el visor cuando arranca el libro y escribe el texto que se
ha indicado en el punto 5 en el campo Texto del visor.
Mensajes de objetos OLE:
Son enviados cuando se eligen opciones
relacionadas con el tipo de objeto OLE.
InsertOLEObject
Olelinks
de
los
menús
oleAction <comando>
PasteSpecial[<formatos del
Portapapeles>]
Mensajes de arrastre y caída:
23
Son enviados cuando se quiere realizar animaciones mediante
operaciones de cambio de posición del objeto (artastre) o mover
unos objetos sobre la posición que ocupan otros (caída).
to get allowDrag
BeginDrag
allowDrop
endDrag <Objeto destino>,
<localización>,<target
window>
EnterDrop <objeto fuenle>
leaveDrop <objeto fuente>
ObjectDropped
<objeto stillOverDrop
<objeto
fuente>,
fuente>,
<localización>
<localización>
PRÁCTICA 06.- En esta práctica se comentará cómo arrastrar
objetos de dos tipos (manzanas y naranjas), que inicialmente se
muestran en una pila, a dos cestos para su clasificación, Sitúese
en la página Mensajes del libro EJEMPLO7.TBK e incluya en el
guión del grupo cuyo nombre es Frutas las siguientes
instrucciones:
to handle buttontown
- - Arrastra sobre cualquier objeto
drag target silently
end
to handle beginDrag
- - En cuanto empieza el proceso se oculta el objeto
hide target
end
to handle endDrag destObj
- - Guarda en Destino el nombre del objeto sobre el
cual
- - ha finalizado el proceso de arrastre-caída
put name of destObj into Destino
- - Guarda en Origen el nombre del objeto sobre el
- - cual se hizo clic al comienzo de este proceso
put name of target into Origen
conditions
-- Comprueba si se está sobre un objeto que
no
-- es uno de los dos cestos considerados
when Destino is null or \
24
(Destino<>"Manzanas"
and
Destino<>"Naranjas")
request "Estás echando la fruta fuera de los
cestos"
show target
- Comprueba si se está en el cesto
adecuado
when Destino <> Origen
request "Estas mezclando manzanas y
naranjas"
show target
end
end
Mensajes DDE:
Son enviados cuando se conectan aplicaciones que
funcionen en el entorno Windows y se cambia información a
través de DDE (Windows Dynamic Data Exchange).
RemoteCommand
<comandos>
RemoteSet<ítem>,<valor>
remoteGet<ítem>
Mensajes del menú:
son enviados cuando se eligen opciones de los menús.
PRACTICA 07.- Cree un campo en el libro EJEMPLO7.TBK a
incluya el guión en el libro:
to handle transparent
- - Indica que se ha seleccionado dicha opción
request "Se ha seleccionado la opción Transparent".
forward
end transparent
Seleccione dicho campo y elija la opción Transparent del menú
Draw. El resultado será que después del cuadro de diálogo (en el
que se mostrará el texto indicado en el guión) se tendrá que el
campo seleccionado tiene ahora la propiedad de ser transparente
(ver apartado de propiedades).
25
PRÁCTICA 08.- Cree un nuevo fondo en el libro EJEMPLO7.TBK.
Dibuje cuatro círculos en dicho fondo y escriba el siguiente guión
en el libro:
to handle borrarFondo
send background
select all
send clear
send foreground
end
Abra la ventana de comandos y teclee:
send borrarFondo
El resultado será que todos los objetos del fondo se habrán
borrado.
Mensajes de sucesos de entrada y salida
Son enviados a una página (page), fondo (background), libro
(book) o al sistema (system) cuando el usuario abre un libro,
navega por el mismo o lo cierra.
ActivateInstance
EnterBackground
EnterButton
EnterDrop
EnterField
EnterPage
EnterSystem <cmdLine>
LeaveApplication
LeaveBook
LeaveComboBox
LeaveDropDown
LeavePage
LeaveSystem
enterApplication
enterBook.
enterComboBox.
enterDropDown
enterMenu
<Menu
>,
<menuAlias>
enterRecordField
enterWindow
<viewer
antiguo>.
<handle antiguo>
leaveBackground
leaveButton
leaveDrop
leaveField
leaveRecordField
leaveWindow
<viewer
nuevo>,
<handle nuevo>
26
PRÁCTICA 09.- ToolBook responde al mensaje enterBook sin
hacer nada. Si existe un receptor de éste mensaje ToolBook
muestra la ventana principal, ejecuta el guión y luego muestra la
primera página del libro. Por este motivo puede utilizarse este
ejecutor para realizar inicializaciones de variables globales o para
definir los menús del libro, etc. Por ejemplo un ejecutor
EnterBook puede ser:
to handle enterBook
system nombre,num
- - Solicita al usuario su nombre
ask "¿Cómo te llamas?"
put it into nombre
put 0 into num
send presentacion
end
De esta forma cada vez que entre en el libro el programa
solicitará su nombre. Además, se enviará el mensaje
Presentación donde podrá escribir las órdenes necesarias para
realizar una introducción al libro que acaba de abrir.
Mensajes de sucesos estándar
Son mensajes que se envían cuando se seleccionan algunos
botones de los cuadros de propiedades de los objetos.
AutoScript [<target>]
CustomEdit [<target>]
EditScript [<target>]
PreviewHelp
SizeToViewer
convertPicture
debugScript [<target>]
pageSize [<isBackground>]
showGrid
snapGrid
PRÁCTICA 10.- Estando abierto el libro EJEMPLO7.TBK teclee
en la ventana de comandos:
send editScript this book
27
Inmediatamente se abrirá el editor de guiones en el que podrá
ver todos los guiones del libro incluidos hasta el momento.
Otros mensajes
Son mensajes que notifican que un objeto ha sido creado,
destruido o movido.
Destroy
LinkSysBook
MenuItemSelected
<Nombre>, <alias>
PageScrolled
<ultimo
pageScroll>,
<nuevo pageScroll>
SelectionChanged
Sized
UnlinkSysBook
idle
make
moved
selectChange <Texto>
shown
textScrolled <newPos>
PRÁCTICA 11.- Como se ha indicado el mensaje idle se envía a la
página cuando no ocurre ninguna acción. ToolBook responde no
haciendo nada. Si queremos, por ejemplo, que cuando no se
realice ninguna acción, el cursor vaya variando de aspecto
realice los siguientes pasos:
1.
Incluya el siguiente guión en el libro EJEMPLO7.TBK:
to handle idle
system num
If num<38 then
- - Escribe el número del cursor y
- - hace una pausa para su lectura
put num
pause 60
- - Define el tipo de cursor asociado al valor
de num
set syscursor to num
- - Aumenta en una unidad el valor de num
increment num
else
put 1 into num
end
end
28
2.
En el guión anterior aparece la variable Num que ya
fue inicializada a cero en la práctica 49. Sin embargo
por si no se hubiera ejecutado este guión utilice la
ventana de comandos para enviar el mensaje
EnterBook, es decir, teclee en dicha ventana
send EnterBook
3.
Pase posteriormente al modo lector y observe cómo
va variando el aspecto del cursor según se va
modificando la variable num.
Ejecutores de notificación
Un ejecutor de notificación (notify handler) es aquel que
avisa cuando un mensaje llega a la página. Hasta ahora hemos
visto que un objeto puede recibir un mensaje si es el destinatario
de una acción (ya sea directamente o a través de la jerarquía de
mensajes) o a través de los comandos send y forward. Sin
embargo, existe una posibilidad más si el objeto posee un
ejecutor de notificación.
Imaginemos que estamos construyendo un libro de
ejercicios en el que se encuentra un campo en el que se incluye
su solución. Con el fin de que el usuario no tenga acceso a la
solución cada vez que se abra una página con un nuevo ejercicio
se deberá ocultar este campo. Por ello, cuando la página reciba
el mensaje enterPage el campo deberá ocultarse. Una posibilidad
es escribir el comando que permite ocultar el objeto dentro de un
ejecutor enterPage en el guión de la página y otra es utilizar un
ejecutor de notificación en el campo. En el segundo caso
ToolBook permite que la página envíe una copia del mensaje al
objeto (en nuestro caso el campo) en cuanto ésta lo reciba. La
principal ventaja de esta posibilidad es que al copiar el objeto
que incluye un ejecutor de este tipo en cualquier otra página, de
este a otro libro, las órdenes escritas en dicho receptor se
ejecutarán sin necesidad de volverlas a escribir en el guión de la
página en la que hemos pegado el objeto.
Existen dos tipos de ejecutores de aviso: notifyBefore y
notifyAfter. Mientras que el primero se ejecuta justo antes del
mensaje cuyo aviso se ha enviado, el segundo se ejecuta justo
después. La sintaxis de este tipo de ejecutores es la siguiente:
29
notifyBefore <nombre mensaje>
- - sentencias OpenScript
end
notifyAfter <nombe mensaje>
- - sentencias OpenScript
end
Siguiendo con el ejemplo que se ha puesto anteriormente se
podría incluir en el guión del campo el siguiente ejecutor:
notifyBefore enterPage
hide self
end
A la hora de utilizar este tipo de mensajes hay que tener en
cuenta las observaciones siguientes:
•
Si existen varios objetos con un mismo mensaje de
notificación no se puede determinar el orden en el que los
objetos irán recibiéndolo.
•
No se debe utilizar el comando forward en este tipo de
ejecutores.
•
Para suspender la ejecución de un mensaje de este tipo utilice
el comando break.
Importante: Recuerde que los objetos del frente o del fondo
son los únicos que pueden incluir este tipo de
ejecutores y que no deberá incluirlos, por tanto, en
los guiones de las páginas, fondos, visores y/o libros.
Además, debe tener también siempre presente que
responden a mensajes que llegan a la página.
PRÁCTICA 12.- En esta práctica se incluirá un mensaje del tipo
analizado en este apartado en el libro EJEMPLO7.TBK. Sitúese en
la página Mensajes e incluya el siguiente guión en el botón
Restablecer Pila:
notifyBefore enterPage
show objects of group "FRUTAS" of parent of self
30
end
De esta forma cada vez que se entre en la página, el botón
Restablecer Pila recibirá el aviso y mostrará todos los objetos
que forman el grupo Frutas. Si se hubiera puesto el contando
show en la página cuando se lleve el grupo Frutas a otra página
de este u otro libro, habría sido necesario modificar el guión de
la página destino para incluir este comando en un ejecutor
enterPage.
PROPIEDADES
Una propiedad es un atributo de un objeto, ventana, paleta
o del sistema. En este apartado veremos cómo pueden
modificarse y hacer referencia a las mismas.
Cuando se quiere modificar el valor de una propiedad a un
objeto se tiene que utilizar o el operador de asignación (=) o el
comando set. Así, por ejemplo, para dar nombre a un campo
cuyo número de identificación es 3 podremos escribir cualquiera
de los dos comandos siguientes
set the name of field ID 3 to "Campo1"
the name of field ID 3 = "Campol"
y si luego queremos cambiar el tipo de letra del campo anterior
podremos escribir los siguientes comandos
set fontFace of field "Campol" to "Times New Roman"
fontFace of field "Campol" "Times New Roman"
Para obtener el valor de una propiedad de un objeto se
utilizan los comandos get y put. Mientras que el primero de ellos
devuelve el resultado en una variable local: it, el segundo
permite guardarlo en variable definida par el usuario. Así, por
ejemplo, se puede obtener el tamaño del campo utilizado
anteriormente escribiendo cualquiera de las dos órdenes
siguientes:
get the size of field "Campo1"
put the size of field "Campol" into Tamaño
Listado de propiedades agrupadas por objetos
31
Propiedades de un libro
Permiten modificar el texto de la barra de títulos, los
encabezamientos y pies de página cuando se imprime el libro, el
tamaño de las páginas, el número de páginas y fondos de un
libro.
PRÁCTICA 13.- Abra el libro EJEMPLO7.TBK y practique con la
página Propiedades de los objetos 3 pulsando sobre el ítem
Book.
Propiedades de un visor
Al igual que los objetos, los viewers tiene propiedades a las que
puede hacerse referencia desde los guiones. Las propiedades de
estos objetos se dividen en permanentes y no permanentes. Las
primeras corresponden aquellas propiedades que se almacenan
en el fichero ToolBook y las segundas sólo existen cuando se
abre visor.
PRÁCTICA 14.- Abra el libro EJEMPLO7.TBK y practique con la
página Propiedades de los objetos 3 pulsando sobre el ítem
Viewer. Previamente pulse sobre el botón Mostrar Viewer para
presentar en pantalla el visor sobre el que actúan todas las
órdenes de los ejemplos.
Propiedades de una página
Entre sus propiedades están sus características referentes al
número de páginas, el número de objetos que se encuentran en
ella así coma la que permite guardar su imagen offscreen para
su optimización.
PRÁCTICA 15.- Abra el libro EJEMPLO7.TBK y practique con la
página Propiedades de los objetos 3 pulsando sobre el ítem
Page.
PRÁCTICA 16.- Para cambiar de posición una página dentro de
un libro se puede utilizar la propiedad PageNumber. Si se sitúa
32
en el libro EJEMPLO7.TBK y escribe el siguiente guión en la
ventana de comandos:
Send newPage
PageNumber of this page = 1
en primer lugar se creara una nueva página y posteriormente,
con la segunda orden, se recordaran las páginas del libro
situándose la pagina recién creada en el primer lugar.
Propiedades del fondo
Mediante estas propiedades se definen el color y el sombreado
del fondo, además de guardar la imagen offscreen del fondo con
objeto de ganar velocidad a la hora de mostrarse.
PRÁCTICA 17.- Abra el libro EJEMPLO7.TBK y practique con la
página Propiedades de los objetos 3 pulsando sobre el ítem
Background.
PRÁCTICA 18.- Para dar color y cambiar el patrón de relleno al
fondo del libro EJEMPLO7.TBK puede escribir en la ventana de
comandos:
fillColor of this background = green
pattern of this background = 25
Propiedades de un botón
Estas propiedades permiten definir la etiqueta con la que se
muestra el botón así como el estilo del
texto y su tipo
(redondeado, tipo radio, ...). También permite conocer si el
botón se pone negativo cuando se pulsa sobre él, si un botón de
tipo radio o de marca esta o no chequeado, etc...
PRÁCTICA 19.- Abra el libro EJEMPLO7.TBK y practique con las
páginas Propiedades de los objetos 1 y propiedades de los
objetos 2 pulsando sobre el ítem Botón.
33
Propiedades de un campo o de un campo tipo registro
Las propiedades de un campo o recordfield hacen referencia a las
características de su texto y su borde. También permiten
especificar si el campo es para el editable, o si es de tipo lista,
...
PRÁCTICA 20.- Abra el libro EJEMPLO7.TBK y practique con las
páginas Propiedades de los objetos 1 y propiedades de los
objetos 2 pulsando sobre el ítem Campo.
PRÁCTICA 21.- Incluir
EJEMPLO7.TBK:
el
siguiente
guión
en
el
libro
to handle buttonClick
if object of target is "field"
activated of target = false
end if
end bultonClick
Cuando en modo lector se haga clic sobre un campo se podrá
editar en él.
Propiedades de un combo box
Las propiedades de un Combo box hacen referencia
fundamentalmente a su apariencia y a las características del
campo en el que se muestran sus opciones.
PRÁCTICA 22.- Abra el libro EJEMPLO7.TBK y practique con las
páginas Propiedades de los objetos 1 y Propiedades de los
objetos 2 pulsando sobre el ítem Combo box.
Propiedades de un gráfico
Las propiedades de un gráfico permiten definir sus atributos
como, por ejemplo, el color, la posición, el tamaño, el estilo de la
línea, si se dibuja o no directamente, etc.
34
PRÁCTICA 23.- Abra el libro EJEMPLO7.TBK y practique con las
páginas Propiedades de los objetos 1 y Propiedades de los
objetos 2 pulsando sobre el ítem Gráfico.
Propiedades de un grupo
Las propiedades asociadas a un grupo son similares a las de un
gráfico.
PRÁCTICA 24.- Abra el libro EJEMPLO7.TBK y practique con las
páginas Propiedades de los objetos 1 y Propiedades de los
objetos 2 pulsando sobre el ítem Grupo.
Propiedades de un texto activo
Además de algunas propiedades comunes con las de los otros
objetos, un hotword o texto activo tiene como específica invert
que determina si un hotword se invierte (resaltando su texto)
cuando se pulsa sobre él.
PRÁCTICA25.-Abra el libro EJEMPLO7.TBK y practique con las
páginas Propiedades de los objetos 1 y Propiedades de los
objetos 2 pulsando sobre el ítem Hotword.
Propiedades de un objeto OLE
Las propiedades de este tipo de objetos hacen referencia a su
tamaño, color,... y a la posibilidad de actualizar los cambios que
se realice en el fichero fuente.
PRÁCTICA26.- Abra el libro EJEMPLO7.TBK y practique con las
páginas Propiedades de los objetos 1 y Propiedades de los
objetos 2 pulsando sobre el ítem Objeto OLE.
Propiedades de los objetos del sistema
Los tipos de objetos del sistema son las paletas y las barra de
herramientas que facilitan la construcción del resto de objetos
analizados anteriormente. La siguiente tabla muestra el nombre
con el que OpenScript los identifica.
35
ColorTray
LinePalette
MenuBar
PolygonPalette
StatusBar
StatusControl
ToolBar
commandWindow
lineEndsPalette
patteraPalette
scrollBar
statusBox
slatusIndicators
toolPalette
Las
propiedades
de
estos
objetos
fundamentalmente a su posición y tamaño.
hacen
referencia
Propiedades definidas por el usuario
ToolBook permite definir propiedades nuevas a los objetos
según las necesidades del programador del libro. Estas
propiedades se pueden crear en cualquier lugar del guión
simplemente declarando:
• su nombre,
• la referencia al objeto cuyo atributo se está definiendo y
• el valor que se le quiere asignar.
Por ejemplo, se puede definir la propiedad Colores a un
rectángulo cuyo valor sea rojo. El comando que permite hacerlo
es:
Colores of rectangle ID 0 = red
Si el nombre de la propiedad definida no existe, ToolBook la crea
de forma automática y le asigna el valor indicado. Si se omite la
referencia al objeto en lugar de una propiedad se define una
variable local,
Colores = red
También es posible definir propiedades utilizando guiones. Para
ello se deberá utilizar el ejecutor to set cuya sintaxis es:
to set <Nombre de la propiedad> to <Valor>
- - sentencias OpenScript
end
36
Por ejemplo, una propiedad definida por el usuario que asigne
diferentes colores a un objeto puede ser la siguiente:
to set Colores to Valor
Objetos="ellipse,rectangle,polygon,pie,background,"&\
"irregularPolygon,roundedRectanglé"
If object of target is not in Objetos
break
end if
conditions
when valor is "None"
fiIIColor of target = white
when valor is "ColorBase"
fillColor of target = red
end conditions
end Colores
Para utilizar esta propiedad desde cualquier otro guión de un
objeto que se encuentre en la jerarquía superior se puede
escribir un comando como el siguiente:
to set Colores of rectangle Id 0 to ColorBase
Para obtener el valor de una propiedad creada con el receptor
de mensajes to set hay que construir un ejecutor to get que
permita obtener los valores de la propiedad. La estructura es
to set <Nombre de la propiedad>
- - sentencias OpenScript
return <valor>
end
Por ejemplo, puede considerarse el ejecutor to get para la
propiedad Colores definida anteriormente:
to get Colores
Objetos="ellipse,rectangle,polygon,pie,background,"&\
"irregularPolygon,roundedRectanglé"
If object of target is not in Objetos
break
end if
return fillColor of target
end Colores
37
ESTRUCTURA DE UN PROGRAMA EN TOOLBOOK
En esta sección analizamos cuál es la estructura básica de todo
programa realizado con ToolBook.
EL LIBRO
Un programa creado con ToolBook recibe el nombre de libro
(book) en el que se incluyen todas sus componentes. Cuando
arranca ToolBook por primera vez o hace doble clic sobre su
icono, el libro que se muestra en pantalla está vacío (untitled).
Un libro es, por tanto, sinónimo de un fichero ToolBook. Cada
libro consta de un cierto número de páginas (pages) que viene a
representar lo de una página de papel es a un libro impreso.
Estás páginas se muestran en ventanas ToolBook que reciben el
nombre de visores (viewers). La ventana que utiliza ToolBook
por defecto recibe el nombre de ventana principal (main
window).
LA PAGINA : EL FRENTE Y EL FONDO
Asociado a cada página o a un grupo de páginas se encuentra el
fondo. En efecto, cada página presenta dos niveles: el frente
(foreground) y el nivel de fondo (background). En el fondo se
coloca todo aquello que es común a aquellas páginas que lo
comparten y en el frente lo que es específico de cada una de
ellas. Por ejemplo, si se quiere que desde cada página se tenga
acceso a un botón salir que permita abandonar ToolBook, se
debera colocar en el fondo. De esta forma se hace una sola vez
y, sin embargo, se puede utilizar (pulsar) desde todas ellas.
Mediante esta distinción de niveles se evita una duplicidad de
información. Los objetos comunes (botones mensajes, etc...), se
sitúan en el fondo de una página y se asigna el mismo fondo a
aquella páginas que se desea compartan estos elementos. Esto
no significa que todas las páginas deban tener el mismo fondo.
ToolBook permite que existan varios grupos de páginas en un
mismo libro compartiendo, cada uno de ellos, un mismo fondo.
LOS OBJETOS
A los elementos que forman una página se les llama objetos
(objects). Estos pueden ser de los siguientes tipos:
•
Gráficos
38
•
•
•
•
•
Campos : son contenedores de información
Palabras activas : permiten fácilmente la búsqueda de
información almacenada en el libro
Botones : permiten gobernar gran cantidad de
operaciones (entradas a determinadas opciones, salidas
de las ventanas...)
Cuadros combinados y cuadros de selección :
almacenan listas en las que cada item es una opción
que se puede elegir
Objetos OLE : son objetos que son almacenados
guardando la información necesaria para acceder a la
aplicación que los creó.
Estos objetos pueden agruparse a su vez dando lugar a uno
nuevo que recibe el nombre de grupo.
ToolBook posee herramientas que permiten la construcción de
cada uno de los objetos.
NIVEL AUTOR Y NIVEL LECTOR
A la hora de trabajar con un programa en ToolBook existen dos
formas o modos de hacerlo:
-
Nivel Autor que es el que permite construir un libro
diseñando las páginas, creando y modificando los
objetos, y escribir el programa en el lenguaje
OpenScript.
-
Nivel Lector que es donde se ejecuta el libro pudiendo
navegar por sus diferentes elementos, ejecutar las
acciones programadas en los mensajes, etc.
Para pasar de un nivel a otro basta pulsar la tecla de función F3.
En lo que sigue supondremos siempre que usted se encuentra en
el nivel autor y nos centraremos en describir cómo crear los
diferentes elementos que componen un libro.
39
LA INTERFASE DE TOOLBOOK
En el momento de arrancar ToolBook le aparecerá en pantalla la
ventana mostrando un libro vacío en modo autor. En esta
primera ventana se pueden distinguir los siguientes elementos:
-
Fondo y/o página
Barras de Menús
Barra de Herramientas
Paletas
Barra de estado
Tanto las barras de menús y de estado como las paletas
desaparecerán cuando se pase al modo lector. Se describen a
continuación con detalle estos elementos:
LOS MENUS
A lo largo de este proyecto se comentarán todas las acciones que
permiten sus ítems. Básicamente descritas, las funciones de los
diferentes menús son :
•
•
•
•
•
•
Menú File : abrir, guardar e imprimir un fichero,
importar y exportar objetos, ejecutar la aplicación y
salir del programa.
Menú Edit : típico menu de edición. Además, permite
insertar objetos de tipo OLE y pasar de modo lector a
modo autor y viceversa.
Menú Wiew : permite pasar del fondo al frente y
mostrar las barras de estado y de herramientas así
como las seis paletas de las que dispone ToolBook.
Menú Page : navegar por las páginas del libro (ir a la
siguiente, anterior, primera y última página) y definir su
tamaño.
Menú Object : definir las propiedades de los objetos,
del fondo, de la página y del libro así como crear
páginas nuevas (bien con un fondo ya existente o con
uno nuevo) y visores (viewers). También permite
agrupar objetos.
Menú Text : permite definir el tipo de letra y el estilo
del párrafo para el texto de los objetos. También
permite insertar gráficos en campos y crear palabras
activas (hotwords).
40
•
•
•
Menú Draw : establecer el modo en el que se ha de
mostrar los objetos en pantalla, alinearlos, cambiarlos
de nivel de capa y transformarlos mediante reflejos y
rotaciones.
Menú Tools : permite dar información sobre las
propiedades del sistema y definidas por el usuario,
modificar las propiedades por defecto de ciertos objetos,
alinear objetos, modificar su tamaño e importar y
exportar texto.
Menú Help : permite ayudarnos en el manejo del
programa ToolBook y de su lenguaje de programación,
OpenScript.
BARRA DE HERRAMIENTAS
Con ayuda de la barra de herramientas se puede elegir de forma
más rápida las principales opciones de los menús. Algunas de las
posiciones de dicha barra contienen dos botones uno de los
cuales permanece oculto hasta que se pulsa la tecla control
(ctrl.) del teclado.
La barra de herramientas se muestra inicialmente en la parte
superior del documento abierto; sin embargo, el usuario puede
cambiarla de posición o incluso convertirla en una paleta flotante
que puede desplazar a cualquier lugar de la pantalla. Para ello
deberá :
•
•
Hacer doble clic sobre cualquier lugar de la barra de
herramientas en la que no se encuentre un botón
Arrastrar la paleta a la posición deseada
Si realiza estos mismos pasos sobre la paleta flotante volverá a
obtener la barra de herramientas en la posición habitual.
También es posible modificar la posición de esta barra mediante
programación. Para ello deberá :
•
Abrir la ventana de comandos; Esta ventana permite
asignar y conseguir valores de las propiedades de los
objetos, enviar mensajes en el nivel autor para verificar
los guiones, evaluar expresiones y ejecutar sentencias.
Para mostrar en pantalla esta ventana deberá elegir el
botón
de la barra de harramientas o bien la opción
Commands del menú View.
41
•
•
Teclear en ella el comando que permite situar la barra
de menús en varias posiciones. Dicho comando es tile
que admite las opciones: none, top, buttom, left right
según desee convertir la barra de menús en paleta o
situarla en la parte superior, inferior, izquierda o
derecha respectivamente de la ventana principal. Si
elige la primera opción deberá escribir
Tile of toolBar = none
Pulsar a continuación la tecla enter.
La barra de herramientas puede presentarse en pantalla en tres
formas diferentes: en modo gráfico (graphics), en modo de
títulos (captions) o ambos a la vez. Para seleccionar el estilo en
el que desee se visualice deberá:
•
•
•
Abrir la ventana de comandos
Teclear cualquiera de las tres posibilidades siguientes:
style of toolBar = “graphics”
style of toolBar = “graphics, captions”
style of toolBar = “captions”
Pulsar la tecla return para ejecutar el comando elegido.
La primera posibilidad es la considerada por defecto.
LAS PALETAS
ToolBook posee seis paletas flotantes que están formadas por
botones cuya función facilita la creación o el cambio de
propiedades de los objetos.
La utilización de estas paletas permiten:
•
•
•
•
•
•
Paleta de herramientas : Crear nuevos objetos
Paleta de patrones : Modificar el relleno de los objetos
Paleta de colores : Dar color a los objetos
Paleta de polígonos : Dar el número de lados para
crear polígonos
Paleta de líneas : Elegir el tipo de línea de un objeto
gráfico o el tipo de borde de cualquier otro objeto.
Paleta de flechas : Elegir el tipo de flecha para un
segmento
Las opciones de estas paletas se describen mas adelante.
42
BARRA DE ESTADO
La barra de estado se encuentra en la parte inferior de un
documento ToolBook y consta de los elementos siguientes :
-
Información de ayuda
Posición del cursor
Fondo o frente
Página anterior
Número de página en libro
Página siguiente
El indicador que diferencia si está en el fondo o en el frente
permite saber en todo momento en el nivel en que nos
encontramos.
La barra de estado desaparece al pasar al modo lector por lo que
en este modo no se podrán utilizar los botones en forma de
flecha que aparecen en ella. La función de estos botones es
facilitar la navegación por las páginas que componen el libro. No
obstante, también dispone de algunas opciones del menú Page
para ir a la página siguiente, anterior, primera y última del libro.
LOS OBJETOS EN TOOLBOOK
LA PALETA DE HERRAMIENTAS
Para crear objetos en una pagina se necesita utilizar la paleta de
herramientas. Inicialmente esta paleta se muestra a la izquierda
del libro y únicamente en el modo autor. Para situarla en
cualquier posición simplemente deberá arrastrarla con ayuda del
ratón a donde desee. También es posible modificar el aspecto
que presenta utilizando el lenguaje OpenScript. El nombre con el
que se identifica esta paleta de toolPalette. Así, por ejemplo,
puede ponerla en la parte superior de la pagina sin más que
hacer doble clic sobre cualquier punto de ella en la que no se
cuenta un botón. También es posible convertirla nuevamente en
una paleta flotante tecleando en la ventana de comandos
tile of toolpalette = none
43
Puede situarla en la parte derecha, izquierda, superior o inferior
de la página escribiendo en dicha ventana la misma instrucción
pero sustituyendo el valor none por right, left, top o bottom,
respectivamente. Estos comentarios son igualmente validos para
cualquiera de las 6 paletas que incluye ToolBook.
OBJETOS GRÁFICOS
Propiedades de los gráficos :
Referencia a las propiedades OpenScrip de un gráfico
Las propiedades de un objeto gráfico permiten a definir sus
atributos como, por ejemplo, el color, posición, tamaño, estilo
de la línea, si se dibuja directamente, etc.
Bounds
DragImage
IdNumder
LineEndStyle
NodropImage
defaultAllowDrop
DrawDirect
Layer
LineStyle
notifyAfterMessages
Object
Position
Script
Transparent
UseWindowsColors
Parent
RgbFill
Size
UniqueName
Vertices
defaultAllowDrag
fillColor
lineEndSize
name
notifyBeforeMessag
es
pattern
rgbStroke
strokeColor
userProperties
visible
Referencia a las propiedades OpenScript de un grupo
Las propiedades asociadas a un grupo son similares a las de un
gráfico.
AutoRadioButtons
DrawDirect
Name
Bounds
IdNumber
NobropImage
NotifyBeforeMessage
s
Parent
Size
UserProperties
Object
dragImage
layer
notifyAfterMessage
s
objects
Position
Transparent
Vértices
script
uniqueName
visible
44
PRACTICA27.- Cree un rectángulo en el fondo de la primera
página del libro EJEMPLO5.TBK. Seleccione el rectángulo y
teclee en la ventana de comandos las siguientes instrucciones:
•
Para ver cuál es su número de identificación:
put idNumber of selection
•
Para definir el patron (pattern), color (fillColor y
strokeColor) y el borde (lineStyle) del gráfico cuyo
número de identificación hemos obtenido con la orden
anterior. En lo que sigue se supondrá que su número ID
es cero:
pattern of rectangle ID 0 of this background = 58
fillColor of rectangle ID 0 of this background = blue
strockColor of rectangle ID 0 of this background =
red
lineStyle of rectangle ID 0 of this background = 6
•
Elimine este rectángulo del fondo de la pagina eligiendo
la opción Clear del menú Edit.
BOTONES
Tipo de botones
ToolBook nos provee de varios tipos de botones, que serán
elegidos en función del uso al que vayan a ser destinados.
Existen seis botones en la barra de herramientas con los que
crear este tipo de objetos:
Botón rectangular estándar.
Botón etiqueta, que se utiliza para etiquetar grupos de
opciones o incluir texto fijo. Este tipo de botones se suele
utilizar como descripción de un campo. Imaginemos, por
ejemplo, un libro en el que se quiere datos identificativos
de personas. En cada una de ellas existirán unos campos
en los que el usuario podrá incluir texto: serán campos
editables. Con el fin de aclarar cual es el dato que se debe
45
introducir en cada uno de ellos se pondrá una etiqueta.
Esto, aunque también puede hacerse mediante un campo
no editable (que solo admita texto fijo), en algunas
ocasiones conviene hacerlo con un botón etiqueta. La razón
es que un botón etiqueta permite el acceso mnemotécnico
por caracteres (teclas DMA, mnemonic access character)
facilitando su selección por su propiedad caption que se
describe en el siguiente apartado.
Botón de radio, que normalmente aparece en grupo y es
utilizado rincipalmentepara elegir opciones excluyentes.
Actúan, por tanto, de la misma forma que los botones de
selección de frecuencias de la radio o los canales de
televisión. La pulsación de uno de estos botones implica
que los demás permanecen inactivos, de modo que al
pulsar otro, es éste el que se activa, dejando sin
funcionamiento a todo los demás. Para que esto se
produzca deberá agrupar todos los botones de tipo radio, si
así lo hace se conseguirá que cuando uno esté
seleccionado los demás no lo estén. Para agruparlos
deberá seleccionar todos a la vez y elegir la opción Group
del menu Draw.
Botón de radio tridimensional, análogo al anterior.
Botón de marca, que al pulsar sobre ellos se activan
mostrando en ese momento una cruz indicativa de su
estado.
Botón de marca tridimensional, análogo al anterior.
Referencia a las propiedades OpenScrip de un botón
Estas propiedades permiten definir la etiqueta del botón así
como el estilo de este texto y su tipo (redondeo, tipo radio,...).
También permiten conocer si el botón se pone negativo cuando
se pulsa sobre él, si un botón de tipo radio o de marca esta o no
chequeado.
46
BorderStyle
CaptionPosition
DefaultAllowDrag
DragImage
ExcludeTab
FontSize
IdNumber
Layer
NormalGraphic
Bounds
CkeckedGraphic
DefaultAllowDrop
DrawDirect
FillColor
FontStyle
InsertGraphic
Name
NotifyAfterMessages
Object
RgbFill
Parent
RgbStroke
caption
checked
disabledGraphic
enabled
fontFace
hightlight
invert
noDropImage
notifyBeforeMessage
s
position
script
PRACTICA 28.- Cree una nueva pagina con fondo diferente en el
libro EJEMPLO5.TBK. Cree dos botones de las mismas
dimensiones en el fondo de la segunda pagina del libro con estilo
PushButton. Averigüe el numero de identificación de cada uno de
los objetos mediante su cuadro de propiedades o pulsando el
botón derecho del ratón encima de cada uno de ellos. En lo que
sigue de esta práctica supondremos que el primer botón creado
tiene el numero de identificación 0 o el segundo 1. Teclee en la
ventana de comandos las siguientes instrucciones:
•
indiquemos para cada botón el texto con el que aparece
en pantalla:
caption of button ID 0 of this background = “Anterior”
name of button ID 0 of this background = “Anterior”
caption of button ID 0 of this background = “Siguiente”
name of button ID 0 of this background = “Anterior”
•
indiquemos para cada botón la posición del texto
captionPosition of button “Anterior” of this background =
left
captionPosition of button “Siguiente” of this background =
right
•
indiquemos para cada botón que deseamos que su color
se invierta cuando pulsemos sobre él:
highlight of button “Anterior” of this background = True
47
highlight of button “Siguiente” of this background = True
CAMPOS
Tipos de campos
En este apartado se estudiara otro tipo de objetos: los campos.
Un campo contiene información en forma de texto o numérica
(hasta 32.000 caracteres por página). ToolBook facilita su
creación utilizando los siguientes botones de la paleta de
herramientas:
Campos con bordes, son campos editables pudiendo incluir
texto en ellos.
Campos sin borde o transparentes, contiene texto fijo y el
usuario no puede
editar en ellos.
Aunque también es posible incluir texto en campos de tipo
registro (recordField), de selección (list boxes) o en cuadros
combinados (combo boxes), estos objetos son tratados en
apartados diferentes ya que poseen algunas características
diferentes.
Propiedades de los campos
Una vez creado un campo se puede acceder a su cuadro de
información y modificar sus propiedades (características). Para
crear y modificar estas propiedades deberá seguir los siguientes
pasos:
•
Seleccionar el tipo de campo que se desea crear en la
paleta de herramientas y arrastrar el ratón manteniendo
pulsado el botón hasta definir las dimensiones del
campo.
•
Abrir el cuadro de propiedades y seleccionar las que se
deseen entre las especificadas de los campos:
48
Field Type: permite definir si se muestra el texto
completo aunque tenga que dividirse en varias líneas
en el caso de que su longitud sea grande y también
las opciones de un cuadro de selección (list box)
Border Style: permite definir el tipo de borde del
campo.
Transparent: muestra el objeto transparente.
Use Windows Colors: utiliza como colores los
definidos en el panel de control de la ventana
principal.
Activated (typing disabled): si está activo, no
permite al usuario editar el texto en modo lector. De
esta forma se consigue que el campo tenga un guión
asociado y que realice alguna función cuando se
pulsa sobre él. También permite incluir palabras
activas (hotwords). Un campo activo no se excluye
en la lista de autotabuladores, es decir, en la lista de
objetos por los que se pasa al pulsar la tecla
tabuladora.
Enabled: indica si el campo puede recibir o no los
mensajes del botón del ratón.
Baselines: permite mostrar u ocultar líneas de
puntos sobre las que se escribiría el texto.
•
Cerrar el cuadro de propiedades pulsando sobre el botón
OK para confirmar los valores introducidos.
PRACTICA 29.- Cree un campo transparente no editable en el
fondo de la segunda página del libro EJEMPLO5.TBK. Incluya
como texto Objetos y dé a la propiedad DrawTextDirect el valor
True. Sitúe este campo en la parte superior del fondo. Dibuje
posteriormente una elipse encima y mueva el campo a lo largo
del rectángulo que delimita a la elipse.
Referencia a las propiedades OpenScript de un campo
49
Las propiedades de un campo hacen referencia a las
características de un texto y su borde. También permiten
especificar si el campo es para editar el texto, o si es de tipo
lista, ...
Activated
Bounds
DragImage
Enabled
FontFace
IdNumber
Name
NotifyBeforeMessages
Parent
RgbStroke
Scroll
Spacing
TabType
TextOverflow
UniqueName
Vértices
Baselines
DefaultAllowDrag
DrawDirect
FieldType
FontSize
Indents
NoDropImage
Object
position
RichText
SelectedTextLines
StrokeColor
Text
TextUnderflow
UserProperties
Visible
borderStyle
defaultAllowDrop
drawTextDirect
fillColor
fontStyle
layer
notifyAfterMessages
objects
rgbFill
script
Size
tabSpacing
textAlignment
transparent
useWindowColors
CUADRO DE SELECCION Y CUADROS COMBINADOS
Los cuadros de selección (list boxes) y cuadros combinados
(combo boxes) se utilizan para almacenar listas en las que cada
componente (ítem) es una secuencia de caracteres. Cuando se
pulsa sobre una de las líneas del campo el sistema controla qué
línea ha sido seleccionada. De esta forma, utilizando
programación, se puede realizar determinadas acciones según la
opción que se elija.
La diferencia entre un list box y un combo box es que mientras
que el primer caso se muestran las opciones en un campo en los
que cada línea es una posible selección, en el segundo caso
aparecen desplegadas las opciones cuando se pulsan sobre un
botón de forma de flecha. Además, en un cuadro combinado o
combo box aparece, a la izquierda del botón, un campo en el que
se indica el ítem elegido por defecto o el último seleccionado.
Cuadros de selección: creación y propiedades
50
Para crear un cuadro de selección y modificar sus propiedades,
siga los siguientes pasos:
• Seleccione la herramienta de construcción de un cuadro de
selección (list box) en la paleta de herramientas:
.
Arrastre el ratón hasta definir el tamaño del objeto mientras
mantiene pulsado el botón del ratón.
• Elija la opción Field Properties del menú Object. Las
propiedades son comunes a las analizadas para un campo y
son explicadas en el apartado correspondiente. Podrá
escoger entre:
1. Single-Select List Box o Multi-Select List Box en el
campo Field Type
2. el estilo del borde (Border style) y
3. uno o más de las siguientes propiedades: Baselines,
Enabled, Draw Text
Direct, Activated, Transparent, Use Windows
Colors.
•
Cierre el cuadro de propiedades.
El texto que contiene un cuadro de selección se introduce de la
misma forma que en un campo: debe hacer doble clic sobre él.
Después deberá teclear cada uno de los ítems o líneas pulsando
la tecla Enter
cuando pase de una a otra. Para dejar de
introducir el texto bastará con que haga doble clic fuera del
campo.
Cuando se pulsa sobre alguno de los ítems éste se muestra en
negativo. La prioridad selectedTextLines, que contiene una lista
con el número de aquellas líneas que se han seleccionado,
permite escribir guiones de acuerdo con las posibilidades de
selección del campo.
Si el campo de este tipo Single-Select List el siguiente guión
muestra un ejemplo en el que se obtiene tanto la línea como el
texto de la opción seleccionada para, posteriormente, escribirlo
en la ventana de comandos:
51
to handle buttonClick
- - Determina la línea seleccionada y
- - lo almacena en la variable “línea”
linea = selectedTextLines of field id 1
- - Determina el texto de la línea seleccionada y
- - lo almacena en la variable “texto”
texto = textline linea of text of field id 1
- - Escribe la variable “texto” en la ventana de
comando
put texto
end
Guión 1.- Seleccionando ítem de un list box con la
propiedad de
selección única
Si el campo es de selección múltiple, la propiedad
selectedTextLines contiene la lista de números separados por
comas, de las líneas pulsadas. En el siguiente ejemplo se
muestra un guión en el que se accede al texto de la ultima
opción seleccionada:
to handle buttonClick
- - Determina la línea seleccionada y
- - lo almacena en la variable “líneas”
lineas = selectedTextLines of field id 1
- - Determina el numero de items de la lista de
números
- - “lineas” y lo almacena en la variable “numero”
numero = itemCount(lineas)
- - Si existe alguna línea seleccionada
If numero>0 then
- - Guarda en la variable “lineaultima” el
numero de
- - línea de la última seleccionada
lineaultima = item numero of lineas
- - Determina el texto de la línea seleccionada y
- - lo almacena en la variable “texto”
texto = textline lineaultima of text of field id 1
- - Escribe la variable “texto” en la ventana de
comando
put texto
end if
end
52
Guión 2.- Seleccionando ítems de un list box
con la propiedad de
selección múltiple
PRACTICA30.- Realice los siguientes pasos:
• Sitúese en la pagina tercera del libro EJEMPLO5.TBK
• Cree un cuadro de selección (list box) en el frente e
introduzca las opciones: primera, segunda, tercera, cuarta,
quinta, sexta. Seleccione la opción de desplazable como
estilo del borde de este objeto en su cuadro de propiedades.
• Elija como tipo de campo: Single-Select List Box e incluya
el guión 1. En estos programas deberá cambiar el número
de identificación del campo por el que tenga el que haya
creado. Puede abrir el editor de guiones seleccionando el
objeto y pulsando sobre el icono
de la barra de
herramientas. Para salir del editor elija Exit en el menú File.
• Sitúese en el modo lector, pulse sobre cualquiera de las
opciones y compruebe el resultado.
• Repita los pasos anteriores con el guión 2 modificando
previamente la propiedad del cuadro de selección múltiple
(Multi-Select List Box).
Cuadros combinados: creación y propiedades
Un cuadro combinado (combo box) es otro objeto ToolBook que
posee tres elementos:.
•
•
•
Un botón de forma de flecha
Un campo editable
Una zona para incluir las opciones que se mantiene
oculta hasta que se pulsa sobre el botón.
Un usuario puede escribir en el campo editable o elegir los ítems
que se muestren
cuando se pulse sobre el botón. En el
momento en el que se seleccione un ítem de la lista de opciones,
ésta se oculta y el ítem seleccionado aparece en el campo
editable. Por defecto los cuadros combinados son editables pero
se puede modificar esta propiedad. Cuando no son editables al
hacer clic sobre el área de opciones el objeto interpreta que la
línea sobre la que estaba el cursor es la elegida.
53
Para crear un cuadro combinado e incluir sus ítems:
•
•
•
•
•
Seleccione la herramienta de construcción de combo box en
la paleta de herramientas:
Arrastre el ratón hasta definir
el tamaño del objeto mientras mantiene pulsado el botón
del ratón.
Teclee en el campo editable el texto que quiere sea la
opción por defecto
Haga clic sobre el botón en forma de flecha para mostrar el
área donde escribirá las opciones
Escriba los diferentes ítems pulsando la tecla Enter después
de cada uno
Haga doble clic fuera del objeto para terminar.
Para ver las opciones del objeto deberá elegir Combo Box
Properties del menú Object. Además de las opciones ya
comentadas: Transparent, Use Windows Colors, Editable,
Enable y Scrollable, puede elegir las dos siguientes
especificaciones de este tipo de objeto:
•
•
Line Count: que indica el numero de ítems del objeto
Sort Items: que permite ordenar los ítems de forma
alfanumérica cuando se encuentre en modo lector.
Para escribir guiones que responden de forma diferente según el
valor que se seleccione o que almacene en una variable la opción
elegida para utilizarla posteriormente, deberá incluir programas
que intercepten los mensajes que se producen cuando el usuario
elige un determinado ítem. Así, al pulsar sobre el ítem el sistema
envía el mensaje selectChange al objeto. Este mensaje posee un
parámetro en el que se indica la elección realizada por el
usuario. Puede incluirse el siguiente guión en un cuadro
combinado creado para que devuelva en la ventana de comandos
el ítem seleccionado:
to handle selectChange TextoItem
put “Se ha elegido: “&TextoItem
end
Guión 3.- Determinando el texto elegido en un objeto
combo box
54
Cuando el usuario pulsa sobre un ítem, se cierra la lista de
opciones y la elegida aparece en el campo editable. A veces
interesa guardar la opción
asignada anteriormente en una
variable que, como es obvio, deberá realizarse antes de que el
usuario seleccione una nueva. El momento puede ser cuando el
lector de la aplicación pulsa sobre el botón en forma de flecha. El
sistema envía el mensaje enterDropDown indicando que este
suceso se está produciendo. Por tanto, podría escribirse el
siguiente guión para guardar la opción anterior:
to handle enterDropDown
- - Guarda en una variable global el valor de la
opción
system opcionAnterior
opcionAnterior = text of self
end
to handle selectChange TextoItem
system opcionAnterior
- - Escribe en la ventana de comandos
- - la opción anterior guardada en la variable global
put “La opción anterior es = ”& opcionAnterior
-- - Hace una pausa antes de escribir el siguiente
texto
- - para dar tiempo a su lectura
pause 80
- - Escribe en la ventana de comandos
- - la opción escogida
put “La opción escogida es = ” & TextoItem
end
Guión 4.- Determinando
seleccionada en un combo box
la
opción
anterior
y
la
PRACTICA31.- Realice los siguientes pasos:
•
•
Sitúese en la pagina tercera del libro EJEMPLO5.TBK
Cree un cuadro combinado o combo box en el frente e
introduzca las opciones: primera, segunda, tercera, cuarta,
quinta, sexta. Seleccione la opción de desplazable como
estilo del borde en el cuadro de propiedades.
55
•
•
Incluya los guiones 3 y 4. Puede abrir el editor de
guiones seleccionando el objeto y pulsando el icono
de
la barra de herramientas. Para salir del editor elija Exit en el
menu File.
Sitúese en el modo lector, pulse sobre cualquiera de las
opciones y compruebe el resultado.
Referencia a las propiedades OpenScript de un combo box
Las propiedades de un cuadro combinado o combo box hacen
referencia fundamentalmente a las características de un texto y
a su borde.
Bounds
DragImage
Editable
FontFace
IdNumber
Name
Object
RgbFill
Script
StrokeColor
TextUnderflow
UserProperties
Visible
DefaultAllowDrag
DrapdownItems
Enabled
FontSize
Layer
NodropImage
Parent
RgbStroke
Scroll
Text
Transparent
UseWindowColors
defaultAllowDrop
drawDirect
fillColor
fontStyle
lineCount
notifyAfterMessages
position
richText
size
textOverFlow
uniqueName
vertices
PALABRAS ACTIVAS (HOTWORDS)
Los textos activos (hotwords) son objetos especialmente
prácticos a la hora de navegar por el libro, ya que se puede
conectar de forma fácil con las paginas que lo componen. Son
objetos independientes, con propiedades especificas, que envían
y reciben mensajes pero que forman parte del texto de un
campo (ya sea una palabra o todo el texto contenido en él).
Referencia a las propiedades OpenScript de un hotword
Además de algunas propiedades comunes a las de otros objetos,
tiene como especificas invert, que permiten determinar si un
56
hotword se invierte (resaltando su texto) cuando se pulsa sobre
él.
Highlight
DefaultAllowDrop
NotifyAfterMessages
IdNumber
Object
Text
UserProperties
Bounds
Draglmage
NotifyBeforeMessage
s
Invert
Parent
TextOffset
defaultAllowDrag
noDropImage
hotwordStyle
name
script
uniqueName
PRACTICA32.- Sitúese en la cuarta pagina
EJEMPLO5.TBK y realice los siguientes pasos:
•
•
•
del
libro
Cree un campo y póngale de nombre TextoHotword
(utilice para ello su cuadro de propiedades). Escriba en él el
siguiente texto: Pulsando sobre la palabra portada volverá a
la primera pagina de este libro.
Seleccione la palabra portada y conviértalo en texto
activo. Mire en el cuadro de propiedades su numero de
identificación (ID). En los siguientes guiones supondremos
que éste es el número 1.
Abra la ventana de comandos y teclee cada uno de los
siguientes órdenes comprobando el efecto que producen:
hotwordStyle of hotword ID 1 = frame
invert of hotword ID 1 = true
highlight of hotword ID 1 = true
OBJETOS VINCULADOS E INCRUSTADOS (OLE OBJECT)
Cada vez resulta mas frecuente crear documentos en las que
aparecen elementos combinados de aplicaciones diferentes. Así,
un documento realizado con un procesador de texto puede tener
un gráfico creado con un programa de dibujo o que represente
unos datos incluidos en una hoja de calculo, o una formula
escrita con un editor adecuado, etc... La versión Windows 3.1
facilita utilizar esta técnica en muchos programas y distingue
entre aplicaciones:
57
•
•
Servidores (server application): permiten crear objetos
que pueden ser incluidos en otras aplicaciones
Clientes (client application): permiten incorporar objetos
de ficheros de otras aplicaciones.
Los términos vinculados (linking) e incrustado (embedding)
hacen referencia a la forma en que ToolBook almacena estos
objetos en un libro:
•
Objeto vinculado (linked object): en este aso ToolBook
almacena una referencia para indicar donde se encuentra la
información.
Un objeto de este tipo contiene una representación visual
del objeto original además de su nombre, propiedades y
una información adicional para que ToolBook pueda
encontrar el objeto.
Cuando en modo Autor se hace doble clic sobre él,
ToolBook abre el fichero en la aplicación servidor con que
fue creado y permite editar el objeto. Todo los cambios
que se efectúen en esta aplicación quedaran reflejados en
el objeto Toolbook.
•
Objeto incrustado (Embedded object): en este caso
ToolBook pega en el libro una copia del objeto. Almacena
una información relativa al tipo de objeto que es y la
aplicación con la que se creó, pero no una referencia al
fichero fuente.
Cuando se hace doble clic sobre el objeto en modo autor,
ToolBook abre un nuevo fichero en la aplicación servidor y
copia el objeto incrustado en él para editarlo. Cuando se
modifica el fichero los cambios son utilizados en el objeto
ToolBook. Sin embargo, cada vez que se haga doble clic
sobre un objeto de este tipo se creará un nuevo fichero
en la aplicación servidor.
Debido a la posibilidad de los objetos OLE para acceder de forma
rápida a la aplicación servidora para hacer cambios de ellos,
suelen utilizarse con mucha frecuencia en la etapa de
construcción del libro. Una vez que éste esté creado puede
interesar invertirlo en un objeto estático. Para ello deberá utilizar
el cuadro de propiedades del objeto y elegir Static en la lista
58
Type y cerrar posteriormente el cuadro de dialogo de sus
propiedades.
Objeto vinculado
Existen dos formas de crear un objeto vinculado. Una de ellas
consiste en utilizar la paleta de herramientas y definir mediante
el cuadro de propiedades la aplicación servidor. La otra es
utilizando los comandos Copy en la aplicación servidor y Paste en
ToolBook.
Para la primera deberá seguir los siguientes pasos:
•
•
•
•
•
•
Dibujar, con la paleta de herramientas, el recuadro
correspondiente al objeto OLE.
Abrir el cuadro de propiedades del objeto
Elegir Linked para la opcion Type.
Elegir el tipo de aplicación servidor con la que se deberá
enlazar el objeto en la lista que aparece en la opción Class.
Elegir el fichero fuente. Para ello deberá teclear en el
campo Source del cuadro de propiedades el camino
completo para acceder al fichero o hacer clic sobre el botón
Browse del mismo cuadro para elegir el fichero con el que
enlazar el objeto creado.
Cerrar el cuadro de propiedades.
La segunda posibilidad para crear un objeto OLE se describe a
continuación:
•
•
•
•
Copiar el objeto en la aplicación servidor con el
comando Copy
Situarse en el libro ToolBook en el frente o en el fondo
de la página donde se desea colocar el objeto
Elegir la opción Paste del menú Edit y seleccionar el tipo
de dato del objeto, sino estuviera seleccionado ya, que se
mantiene copiado en el portapapeles (clipboard).
Pulse sobre el botón Paste Link.
Una vez creado el objeto, si se hace doble clic sobre el o se elige
Object del menú Edit se accederá a la aplicación servidor. Si se
realizan cambios en el fichero, cuando se guarde y se cierre
éste, el objeto en ToolBook quedará modificado de la misma
manera. No obstante, ToolBook permite que esta actualización
pueda realizarse de dos formas diferentes: automáica
59
(automatic) y manual (manual). Estas opciones pueden
elegirse en el cuadro de propiedades del objeto. Las diferencias
entre ambas posibilidades son:
•
•
Automatic: los cambios en el objeto se producen
automáticamente cada vez que el objeto es modificado en la
aplicación servidor.
Manual: los cambios solamente se producen cuando la
consideramos. En este caso deberá hacer clic sobre el botón
Update Now del cuadro de propiedades del objeto.
PRACTICA33.- Sitúese en la quinta página del libro
ELEMPLO5.TBK. Cree un contenedor para un objeto vinculado
con el fichero FIGURA1.BMP realizado con PaintBruch y que se
encuentra en el disquete que se adjunta con
esta
documentación. Después añada un cuadro a toda la figura desde
PaintBruch y vea como queda afectado el objeto en el libro.
Objeto incrustado
ToolBook permite crear un objeto o definir uno ya creado como
incrustado. En el caso de que quiera crear uno nuevo con esta
característica deberá usar la opción Insert OLE Objet del menú
Edit. Para ello, una vez elegida esta opción:
•
•
•
•
•
Seleccione en el cuadro de dialogo de inserción de
objetos el tipo del que desea insertar.
Seleccione la aplicación servidor y pulse sobre el botón
OK
Cree el contenido del objeto en la aplicación servidor
(ToolBook le conducirá a ella después del paso anterior).
Elija Update en la aplicación servidor
Cierre el fichero fuente en la aplicación servidor.
Al final de estos pasos el objeto estará creado en el libro
ToolBook. Si este es gráfico se mostrará gráficamente, en otro
caso, aparecerá un icono que representará a la aplicación
servidor.
Si lo que se desea es encajar un fichero ya existente debe
utilizar la paleta de herramientas y posteriormente el cuadro de
60
propiedades para elegir el fichero fuente. No debe olvidarse de
elegir como Type el valor Embedded.
Para elegir el objeto incrustado deberá hacer doble clic en él o
elegir Object del menú Edit depuse de seleccionarlo.
Inmediatamente, ToolBook le conducirá a la aplicación servidor y
podrá hacer los cambios oportunos. Para que estos
se
manifiesten en el libro deberá elegir Update en el menú File de la
aplicación servidor y cerrarlo.
PRACTICA34.- Sitúese en la quinta página del libro
EJEMPLO5.TBK. Cree un contenedor para un objeto incrustado
con el fichero FIGURA2.BMP realizado con PaintBrush. Añada
después un cuadro a toda la figura y vea como queda afectado
el objeto en el libro. Seleccione el texto que se encuentra en el
fichero TEXTO1.DOC y conviértalo en un objeto incrustado en la
misma pagina del libro mediante las opciones Copy y Paste. Los
ficheros FIGURA2.BMP y TEXTO1.DOC se encuentra el
disquete que se adjunta en esta documentación.
Propiedades
Existen dos propiedades especificas de los objetos OLE que
aparecen en su cuadro de propiedades y que aun no se han
comentado:
•
•
Transparent: que permite ser asignada a algunos
objetos OLE para que den la sensación de que son
transparentes.
Track size: controla si el tamaño del objeto es el
mismo que el del fichero fuente en la aplicación servidor.
Referencia a las propiedades OpenScript de un OLE
Además de algunas propiedades comunes a las de los otros
objetos tiene, como se ha comentado anteriormente, algunas
especificaciones como trasparent y trackSize.
Action
DefaultAllowDrop
FillColor
LineStyle
NotifyAfterMessage
Bounds
DragImage
InNumber
Name
NotifyBeforeMessage
DefaultAllowDrag
DrawDirect
Layer
NoDropImage
Object
61
Parent
RgbFill
Size
Transparent
UpToDate
Vértices
s
Position
RgbSgroke
StrokeColor
UniqueName
UserProperties
Visible
Reference
Script
TrackSize
UpdateType
UseWindowsColors
EL EDITOR Y EL DEPURADOR DE GUIONES
EL EDITOR DE GUIONES
Anterior se ha descrito el lenguaje de programación de ToolBook
y a lo largo de diferentes ejemplos se ha mostrado algunas de
las posibilidades de OpenScript. Para facilitar la inclusión de
estos programas o chequear sus errores se dispone del editor y
depurador de guiones.
Abriendo el editor de guiones
Para abrir el editor de guiones en el modo autor deberá realizar
una cualquiera de las opciones siguientes:
•
•
•
•
Elegir el botón de la barra de herramientas
Seleccionar el objeto y elegir en su cuadro de
propiedades el botón Scripot. Recuerde que para acceder
al cuadro de propiedades deberá escoger el ítem adecuado
en el menú Object.
Elegir el botón del editor de guiones, en la barra
de herramientas que se despliega cuando pulsa el botón
derecho del ratón encima del objeto
Escribir en la ventana de comandos
Edit script of <referencia al objeto >
Desde el editor de guiones se puede acceder también de forma
rápido a los guiones de aquellos objetos que se encuentran en
un orden superior en la jerarquía ToolBook. Para que la lista con
la referencia de los objetos superiores se despliegue deberá
pulsar sobre el botón. Una vez abierto el editor de guiones para
incluir el programa asociado a un objeto deberá escribir su texto
62
procediendo a la misma manera que en un editor de texto
común. No obstante conviene que recuerde las siguientes
consideraciones:
•
•
•
•
•
Las líneas que pueden tener cualquier longitud
pero se truncan cuando superan los 80 caracteres.
Si desea escribir una sentencia en mas de una
línea deberá utilizar el símbolo backsla (\) para indicar la
continuación. Por ejemplo,
Put “Hola, ¿qué tal estas?” Into \
Text of field “Ejemplo”
Se puede incluir más de una sentencia en una
línea poniendo como separación el símbolo punto y coma
(;).
Utilice las tabulaciones para que el guión sea más
fácilmente legible. Si una línea siguiente el punto de
inserción es el que marque el tabulador que exista en la
línea presente.
Utilice comentarios en el guión para explicar el
funcionamiento de los diferentes fragmentos de programa.
Recuerde que los comentarios son líneas precedidas por los
símbolos menos (--).
La barra de herramientas
En la barra de herramientas del editor se encuentra una
serie de botones que facilitan el manejo de las diferentes
opciones de los menús. La siguiente tabla describe brevemente
la acciones que permiten.
Deshacer los cambios.
Recupera la situación
previa a
La acción de deshacer
los
cambios (undo).
Pone
la
línea
Sitúa la línea o el texto
Seleccionado
en
la seleccionada
como
línea
de
posición que
Indique
el
siguiente comentarios.
tabulador.
Elimina las marcas de
comentario a la línea
Mueve la línea o el texto
seleccionada.
Seleccionado
a
la
63
posición que
Indique
el
tabulador
previo.
Encuentra texto.
Busca un texto para
reemplazarlo.
Busca el siguiente texto
Corta la selección y lo
Especificado.
almacena en el
portapapeles
(clipboard).
Pega
desde
el
Copia
la
selección
portapapeles
almacenándolo
(clipboard).
en
el
portapapeles
(clipboard).
Muestra el cuadro de
Pega
un
guión
diálogo de
grabado.
Guiones propios.
Abre el depurador de
Compila, actualiza y
guiones.
sale del
guión.
Verifica la sintaxis del
Permite acceder a los
guión.
guiones
de los objetos padre.
LA VENTANA DE GUIONES PROPIOS
ToolBook facilita la escritura de ciertos guiones básicos mediante
el cuadro de diálogo de guiones propios asociado a un objeto.
Gracias a él se pueden incorporar programas sencillos para
realizar algunas de las acciones más habituales sin necesidad de
dominar el lenguaje de programación OpenScript. Se trata de
fragmentos de guiones ya escritos que se pueden incorporar en
cualquier instante y en cualquier posición del guión asociado a
un objeto. De esta forma acciones como pasar a la siguiente
página, realizar un determinado efecto visual, situar un objeto en
una determinada posición, etc. Pueden incluirse fácilmente en
cualquier libro ToolBook.
Para añadir un guión utilizando el cuadro de guiones propios
deberá seguir los siguientes pasos:
64
• Pulsar el botón derecho del ratón cuando el cursor esté
encima del objeto o el botón
en el editor de guiones
asociado a dicho objeto.
• Elegir en el cuadro combinado o combo box de la izquierda
de este cuadro de diálogo el tipo de ejecutor que se desea.
Por defecto aparecen todos (opción All).
• Seleccionar en el campo correspondiente la acción cuyo
guión ya escrito se desea incorporar. Si el ejecutor
requiere de algunas variables deberá especificarlas como
opciones. Para ello tendrá que hacer clic sobre la columna
de la izquierda en el campo cuya referencia es Options
Handler. Posteriormente escribirá su valor en el campo
editable del combo box para, a continuación, confirmar su
valor haciendo clic sobre el botón. Si los valores fuesen
predefinidos deberá escoger uno de ellos de la lista que se
mostrará con las diferentes posibilidades.
• Elegir el mensaje que se desee responda al guión cuya
acción se ha seleccionado en el campo etiquetado con
Name.
• Pulsar sobre el botón OK para salir del cuadro de guiones
propios.
Finalizado
estos
pasos
ToolBook,
incorpora
el
guión
correspondiente en aquélla posición del editor de guiones en la
que estuviera el punto de inserción (ver figura 8.4). También
permite incorporar guiones que se encuentren en un fichero tipo
texto. Por defecto este fichero es TB30.ATS y contiene los
guiones.
GRABANDO GUIONES
Otra de las posibilidades que permite ToolBook es grabar una
secuencia de acciones que pueden ser añadidas a los guiones de
un objeto mediante su traducción al lenguaje de programación
OpenScript. Así, se puede ir grabando los pasos necesarios para
crear un determinado objeto, los movimientos que dan lugar a
una animación, la elección de ciertos comandos, etc., para,
posteriormente, incorporarlos a un guión como instrucciones
OpenScript. No obstante, existen algunas acciones que no
pueden ser grabadas como, por ejemplo, movimientos del ratón,
cambiar el formato de un texto seleccionado, etc.
Para grabar un guión deberá:
65
•
•
•
Elegir Star Recording del menú Edit. En ese
momento la barra de estados se modifica incorporando el
indicador de que se esta en proceso de grabación.
Realizar aquellas acciones que desee grabar
Elegir Stop Recording del menú Edit cuando
finalice la grabación.
El paso siguiente será incorporar el guión que ToolBook genera
en editor del objeto. Para ello el proceso será:
• Abrir el editor de guiones del objeto.
• Situarse en la posición en la que se desea pegar el guión
de las acciones grabadas
• Elegir Paste Recording del menú Edit del editor de guiones
• Salir del editor de guiones guardando los cambios.
Con frecuencia estos guiones no son definitivos y es necesario
realizar algunas modificaciones sobre ellos. Por ejemplo, si se
graba el proceso para realizar un rectángulo y posteriormente
asignarle un color de relleno, cuando en el editor se copien las
instrucciones en toda las que se haga referencia al objeto creado
se utilizará la palabra selección. Esto produce que, en ocasiones,
cuando en el modo lector se quiera ejecutar el guión se produzca
errores de ejecución si el objeto no ha sido seleccionado
previamente.
EL DEPURADOR DE GUIONES
Con el fin de mejorar y corregir los guiones que componen un
libro, ToolBook incorpora un depurador (debugger). Esta utilidad
permite avanzar paso a paso en la ejecución, a la vez que
observar el contenido de las distintas variables que intervienen
en él. Para corregir un guión, se pueden introducir en él puntos
de interrupción que sirvan como guía para localizar la zona que
se comporta de un modo regular.
El depurador de guiones resulta de gran utilidad cuando se utiliza
en guiones complejos, en los que se tienen varias sentencias
condicionadas y ciclos de repetición. Así, se podrá avanzar, paso
a paso, en la ejecución del guión reservando los fenómenos que
se van produciendo, tanto con las acciones de los comandos
como con los valores de las variables. En los guiones sencillos no
resulta necesaria la utilización de esta aplicación.
66
Otra de las situaciones en las que el depurador resulta de
especial utilidad es en la corrección de los errores de un guión.
ToolBook produce un mensaje de error cada vez que no es
posible continuar con la ejecución del guión; en este caso
aparecerá una ventana de diálogo mostrando que tipo de error
se ha producido. Esta ventana contiene:
•
•
•
•
Un botón Cancel, para interrumpir la ejecución del
guión que ha causado el error,
Un botón Authur con el que se suspende la
ejecución del guión y se accede al modo autor,
Un botón Edit que permite mostrar el editor de
guiones en el que aparece iluminado el texto que ha
producido el error,
Un botón Debug que suspende la ejecución del
receptor de mensaje que desencadenó el error.
En ocasiones, es suficiente la información que aporta la ventana
de error para corregir el mismo, sin embargo, en los ejecutores
complejos es frecuente encontrarse con problemas difíciles de
resolver y que requieren mas información que la ofrecida en la
ventana de error. En estos casos, el depurador de guiones
simplifica mucho la tarea de localizar y corregir el fallo de
programación cometida.
La ventana del depurador de guiones
La ventana del depurador de guiones tiene tres áreas
diferenciadas. En esta sección se analizan detalladamente estas
componentes que dan información de cómo se esta
desarrollando la ejecución del libro. Estos tres elementos son:
• La ventana del trazador: muestra los identificadores de los
ejecutores que en ese momento están activos resaltando
en negativo el que ha motivado la suspensión de la
ejecución.
• La ventana del guión: el guión del objeto que contiene el
ejecutor que produce el error. En negativo aparecen los
términos en los que se ha parado la ejecución. Esta zona
no constituye la ventana de edición de guiones, pues se
puede leer el guión pero no se puede modificar ninguna
parte del mismo.
67
• La barra de estados del depurador: contiene una breve
descripción del motivo por el que el error se ha producido.
Puntos de interrupción (Breakpoints)
Un punto de interrupción (Breakpoint) es un indicador que
situado en un guión avisa a ToolBook de que en el punto
indicado se paralice la ejecución del guión y se abra el
depurador. Para definir un texto como un término de parada de
la ejecución deberá abrir el depurador de guiones y hacer clic
sobre dicho término. Inmediatamente ToolBook lo tachará con
símbolos slash (/) que facilitarán su identificación. Para eliminar
esta característica de un texto únicamente deberá hacer clic
sobre él, desapareciendo con ello los símbolos slash.
Puede eliminar deforma rápida todo los puntos de interrupción
que se encuentra en un guión o en la aplicación con la ayuda de
las opciones Clear Script Breakpoints o Clear all
Breakpoints del menú Breakpoints de la ventana del depurador.
El trazador
La ventana principal del depurador de guiones contiene además
8 botones que simplifican la elección de distintas acciones como
la forma de avanzar en la ejecución del guión, abrir ventanas
adicionales en las que se pueden acciones complejas que
precisen, a su vez, de otras opciones, etc. Estos botones son los
siguientes:
editar el guión (Script... del menú View): este botón
permite entrar en la ventana de edición del guión y realizar
las modificaciones necesarias.
Debido a que la ventana del depurador no es un editor
y, por tanto, no se puede realizar directamente
cambio en los guiones de los objetos es necesario
utilizar esta opción para realizar modificaciones de los
mismos sin tener que abandonar el depurador.
ventana de comandos (Command del manú View): con
este botón se puede abrir la ventana de comandos. Esta
posibilidad es muy útil para obtener el valor de
determinadas
propiedades
como,
por
ejemplo,
activeWindowHandle,
printerConditions,
selection,
focusWindow, focus, sysErrorNumber y sysTimeFormat. La
68
modificación del valor de las variables globales en la
ventana de comandos exige de su declaración previa. Por
ejemplo, si desea modificar el valor de la variable global
Nombre deberá escribir:
system nombre; nombre = “Pepe”
para que el cambio se produzca.
ventana de variables (Variables del menú View): permite
abrir un lista con todas las variables que estan activas, así
como mostrar los valores que contienen. En ella aparece el
nombre de la variable precedido por un carácter: L, si la
variable es local, o S, si la variable es global. El dato final,
que se incluye en la línea asociada a cada variable, es su
valor actual. cuando éste no aparezca completo por ser
demasiado extenso, ToolBook le facilita una nueva
ventana, sin mas que hacer clic sobre el nombre de la
variable, en la que puede obtener esa información.
Además, se puede cambiar el valor que toma cualquier
variable del guión haciendo clic sobre su nombre y
tecleando en el campo superior. Su nuevo valor que deberá
confirmar pulsando sobre el botón
.
ToolBook tambien permite acceder a la lista de las
variables globales declaradas en el libro. Basta elegir la
opción System Variables del menú View.
Ejecutar línea a línea (Trace Statement del menú Trace):
este botón permite ejecutar un guión de distinta forma
dependiendo de la línea del guión que se encuentre en
modo inverso. Permite avanzar en la ejecución del mismo
una línea u otro receptor de mensajes (subrutina) en cada
paso. Si la línea del guión que se encuentra en negativo es
el receptor de un mensaje, entonces este botón ejecutará
toda la subrutina intermedia y detendrá la ejecución; en
cambio, si la línea en negativo no es un recetor, este botón
simplemente la ejecutará y detendrá la ejecución. Hay que
destacar que si un comando de una línea llama a otra
subrutina, este botón ignora la llamada y sigue en la
subrutina actual.
69
ejecución condicionada (Trace call del menú Trace): este
botón ejecuta la línea del guión que se encuentra en
negativo. Después detiene la ejecución del guión y pone en
negativo la siguiente línea
del guión. Así se puede
observar el resultado que producen las siguientes líneas del
guión al ir ejecutándose una a una. Hay que señal que si
un comando de una línea llama
a otro receptor de
mensajes (subrutina), éste se ejecuta también paso a
paso. Para evitar salir de una subrutina cuando se pase por
una línea que produzca una llamada a otra subrutina, se ha
de utilizar el botón anterior.
ejecución de expresiones (Trace Expreson del menú
Trace): este botón ejecuta las líneas del guión verifando
cada una de las diferentes expresiones que aparecen.
ejecución de una subrutina y vuelta a la línea de partida
(Trace Return del menú Trace): este botón ejecuta la
presente subrutina hasta el final y después regresa a la
línea de partida poniéndola en el modo inverso.
continuar (Continue Execution del menú Trace): este botón
cierra el depurador de guiones y continua normalmente la
ejecución del guión hasta el siguiente punto de parada.
Todos estos botones facilitan el seguimiento de las sentencias
OpenScript así como la detección de posibles errores que se
pueden producir en los programas.
ANIMACIÓN Y SONIDO
INTRODUCCIÓN
El mundo de hoy no puede ser concebido sin la existencia de
la imagen. La componente visual forma parte de la cultura de
nuestro tiempo; lo que antes se dejaba a la libre imaginación del
lector o el usuario, hoy se concreta mediante imágenes. El
mundo informático no es ajeno a estos principios: la existencia
de máquinas más potentes y con mayor capacidad de memoria y
posibilidades gráficas hacen que, cada día, la interfase de
usuario sea más importante.
70
ToolBook, como herramienta de comunicación con el
usuario, incorpora grandes posibilidades desde el punto de vista
de las animaciones. En este capítulo se abordan estas técnicas,
si bien no se pretende ofrecer un análisis pormenorizado para
expertos, sino, más bien, una visión global de estas potentes
herramientas a modo de introducción. Con ellas el usuario podrá
dar respuesta a su necesidad o deseo de dotar a sus libros de
una presentación mucho más agradable.
ANIMACIONES
La animación consiste esencialmente en una ilusión visual. Se
trata de engañar al cerebro humano mostrándole una sucesión
de imágenes distintas que se suceden a gran velocidad. En
ToolBook existen diferentes maneras de animar objetos en una
página. En esta sección serán descritos los siguientes tipos:
•
•
•
•
•
efectos visuales
movimientos de objetos
ciclos de colores
animación de iconos
procesos de arrastre y caída
A continuación se procede a desarrollar en detalle cada uno
de ellos.
Efectos visuales
Los efectos visuales constituyen el modo más usual y
sencillo de producir animaciones. Algunos de estos efectos son
ya habituales en otros programas; mientras que otros se erigen
en nuevas aportaciones de ToolBook.
Uno de los efectos visuales consiste en disponer de varias
páginas, cada una de ellas con un dibujo, de manera que todas
las páginas representan el mismo dibujo con ligeras variaciones
o en diferentes posiciones. Al recorrer en pantalla todas las
páginas con suficiente rapidez se produce la sensación de que el
objeto se mueve.
Este método presenta la ventaja de que es fácil de
programar y modificar. El principal inconveniente reside en el
hecho de que estas animaciones requieren de una gran cantidad
de espacio en disco, sobre todo si la animación es muy compleja;
71
por ejemplo, cuando en cada página se cambia la totalidad de la
misma.
Otros efectos visuales consisten en producir efectos
especiales en la transición o paso de una páginas a otras. Para
ello se utiliza el comando de ToolBook: Transition, cuyo formato
es el siguiente:
transition <cadena efecto> [at <punto>] to <página color>
• El parámetro <cadena efecto> tiene la siguiente sintaxis:
<efecto> <dirección> <destino> <velocidad>
Los diferentes efectos visuales son: blinds, dissolve, drip,
fade, iris, push, puzzle, rain, slide, spiral, split, tear,
turnPage, wipe, zoom. Algunos de ellos admiten además la
dirección del movimiento del efecto, su destino y la
velocidad de la transición.
•
El parámetro <punto> indica el punto desde el
que comienza a producirse el efecto visual. No todos los
efectos admiten este parámetro. Admite como valor
cualquier lista formada por dos números en unidades de
página.
• El parámetro <página | color> permite navegar por los
páginas produciéndose el efecto elegido en el tránsito de
unas a otras. En el caso de que se especifique la página
deberá indicarse la referencia completa; si, por el
contrario, se indica un color éste se expresará bien en
unidades HLS o bien como una constante ToolBook
asociada a un color.
PRÁCTICA 35.- Abra el libro EJEMPLO9.TBK y pulse sobre la
opción Efectos visuales en el Índice del mismo. En la página a la
que será conducido, seleccione diferentes efectos en el campo de
desplazamiento que aparece a la izquierda y, a continuación,
pulse sobre el botón Ejecutar. Compruebe los resultados cuando
acceda a la siguiente página del libro.
PRACTICA 36 .- Abra el libro EJEMPLO9.TBK y pulse sobre la
opción Movimiento de objetos en la página Índice del mismo. Se
72
accede a una página en la que aparecerá la animación de un
gráfico a lo largo de los vértices de una poligonal cuyo nombre
es Camino. Pulse sobre el botón Mover pájaro. El guión de este
botón es el siguiente:
to handle buttonUp
- - Guarda en la variable local Lista los vértices de la
poligonal
put vertices of AngledLine “Camino” into Lista
- - Guarda en la variable local NumMovimientos
- - el número de vértices
put itemCount(Lista) into Pasos
put (Pasos div 2) into NumMovimientos
step i from 1 to NumMovimientos
put item 2*i-1 of Lista into a
put item 2*i of Lista into b
- - Sitúa al gráfico en la posición
- - del vértice correspondiente
set position of irregularPolygon “pájaro” to a,b
pause 20
end
- - Muestra dos veces la poligonal por la
- - que se ha movido el gráfico
step i from 1 to 2
show AngledLine “Camino”
pause 40
hide angledLine “Camino”
pause 40
end
end
Grabando el guión para realizar una animación
La capacidad de ToolBook para grabar diferentes acciones e
incorporarlas como guiones de los objetos puede aprovecharse
para producir animaciones que consistan en el cambio de
posición de varios objetos. La idea será grabar aquellas
posiciones de los objetos que mostrados consecutivamente
producirán la animación final. Esto puede resultar de utilidad
cuando se desean animar muchos objetos a la vez. Para ello
deberá:
• elegir la opción Start Recording del menú Edit
73
• situar los objetos en las posiciones que desee constituyan
un “fotograma”
• repetir el paso anterior tantas veces como se necesite para
producir la animación final
• elegir la opción Stop Recording del menú Edit para detener
la grabación.
• elegir el objeto en el que se desee incorporar el guión y
seleccionar la opción Paste Recording del menú Edit del
editor de guiones.
PRACTICA 37.- Abra el libro EJEMPLO9.TBK y pulse sobre la
opción Movimiento de objetos en la página Índice del mismo.
Pase a la quinta página de este tema. Nada más entrar se verá la
animación de varios pájaros que se mueven por la página del
libro. El guión se ha generado con la grabación de cada una de
las posiciones de los objetos. Puede abrir el guión de la página
para analizar los comandos utilizados.
Variación de colores
Una opción con numerosas posibilidades para crear
animaciones es aprovechar el efecto que puede crear el cambio
de colores en los objetos. En la práctica siguiente se muestra
cómo modificar los colores de las letras de un texto por la
variación cíclica de siete colores. Este texto contiene el nombre
del usuario del libro EJEMPLO9.TBK que se almacenó en una
variable del sistema cuando fue preguntado por él nada más
abrirlo.
PRACTICA 38.- Sitúese en la página Índice del libro
EJEMPLO9.TBK y pulse sobre la opción Texto. En la zona
central de la primera página de este tema se mostrarán dos
rectángulos blancos. En el situado más a la izquierda aparecerán
las letras que componen el nombre del usuario de este libro.
Cada una de ellas corresponde a una de las letras del nombre del
usuario estando la i-ésima letra asociada al campo cuyo nombre
es Letra. Si pulsa sobre el botón Animación Color verá como se
modifican cíclicamente los colores de estas letras. La animación
finaliza cuando se pulsa la tecla Escape. El guión asociado a este
botón es el siguiente:
74
to handle buttonUp
- - La variable “nombre” guarda el nombre del usuario
system nombre
- - Se define la lista de colores
put
“blue,cyan,green,gray,magenta,red,yellow”
into
Lista
- - Calcula el número de letras del nombre del usuario
put CharCount(nombre) into NumLetras
put 1 into j
- - Determina el número máximo de colores que se
pueden
- - utilizar de la lista. Nótese que si el número de letras
de la
- - variable Nombre fuera el número de ítems de Lista
no se
- - producirla ninguna variación de color
if NumLetras=8 then
put 7 into Nmax
else
put 8 into Nmax
end
- - Repite la variación de colores hasta que no se pulse
- - la tecla “Escape”
while KeyState(KeyEscape) is up
- - Repite para cada letra la variación de colores
- - cíclicamente por los colores almacenados en Lista
step i from 1 to NumLetras
put (“Letra”&i) into NombreCampo
If j<Nmax then
put item j of lista into colorLetra
increment j
else
put 1 into j
put item j of lista into colorLetra
end if
execute(”set strokeColor of field “&&\
NombreCampo&&” to “&&ColorLetra)
end step
end while
put script of self into text of recordfield “Guiones”
ertd
Cursores animados
75
Se trata de conseguir, mediante programa, que el cursor o el
icono de un botón cambie rápidamente para dar la sensación de
movimiento. Un guión que sirva para probar un gráfico animado
con “m” escenas diferentes representadas en los iconos: icono0,
icono1, icono2, etc., asociados a un botón, es el siguiente:
to handle buttonClick
put 0 into n
put 4 into m
- - La animación finaliza al pulsar sobre la letra Escape
while KeyState(KeyEscape) is up
set normalGraphic of self to icon (“icono”&n)
pause 10
put (n+l) mod m into n
pause 10
end while
end
Guión .- Iconos animado de un botón
Para indicar que un guión se está ejecutando, y que por
tanto no responde de momento a ninguno de los mensajes que
se estén produciendo, se puede utilizar una animación del cursor
que nos indique el inicio y el final de dicha ejecución. Puede
incluirse por ejemplo, el siguiente guión:
to handle buttonClick
- - La variación del aspecto del cursor terminara cuando
- - se pulse sobre la tecla izquierda del botón del ratón
while KeyState(KeyLeftButton) ís up
syscursor=cursor “reloj 1”
pause 20
sysCursor=cursor “reioj2”
pause 20
end
sysCursor = default
end
SONIDO
El sonido y el lenguaje hablado son elementos básicos de las
herramientas multimedia. En este capítulo se muestra
brevemente una de las posibilidades de ToolBook para el
76
tratamiento de sonidos y lenguaje hablado. En el capítulo 11 se
abordará este tema con mayor profundidad.
Si su ordenador tiene una tarjeta de sonido puede incorporar
sonido ejecutando ficheros audio (.WAV). En primer lugar,
deberá grabar esos sonidos en un fichero con extensión .WAV y
posteriormente utilizar en sus guiones la función playSound(). La
sintaxis de esta función es la siguiente:
playSound(<sonido> [espera])
• El parámetro <sonido> es una cadena de caracteres que
representa un fichero .WAV o un sonido del sistema de los
que se listan en la sección SOUNDS del fichero win.ini.
• El parámetro <espera> puede tomar los valores True o
False siendo este último su valor por defecto. En este caso
el guión en el que se encuentra esta función continúa
ejecutándose al mismo tiempo que se oye el sonido. Por el
contrario, el valor True obliga a finalizar el sonido antes de
seguir con la siguiente instrucción del guión.
Esta función devuelve True o False según exista o no,
respectivamente, el fichero que se da en el parámetro <sonido>.
MULTIMEDIA CON TOOLBOOK
La cantidad de información generada por la sociedad actual ha
traído consigo una sobre dimensión en su almacenamiento y
tratamiento que ha dado origen a todo un microuniverso
recogido con el prefijo hiper y que se extiende al hipertexto,
hiperimágines e hipermedia.
El hipertexto es una técnica, un método y una forma expresiva
revolucionaria e interactiva de la escritura, sonidos y grafismos,
así como de su almacenamiento y búsqueda para controlar
cantidades masivas de información. El hipertexto permite la
búsqueda no lineal de páginas de un libro. Esta es la razón de
que muchos autores le califiquen de libro poliédrico ya que
efectivamente permite una búsqueda, no página a página sino
entrando por cualquier parte y cruzando las hojas. Cada plano,
77
aunque con una cierta autonomía significativa, permite
interrelacionar todo lo anterior y todo lo posterior (estructura de
malla). No se hojea el libro, se navega por la información en
cualquier dirección mediante asociaciones similares a las de una
mente humana creativa.
Al integrar en los sistemas hiper las imágenes en movimiento
aparecen los sistemas hipermedia. La imagen está disponible
para la manipulación al igual que la escritura utilizando el
procesador de textos e imágenes correspondiente. En el
hipervídeo (variante del sistema hipermedia) también se incluye
el reconocimiento de la voz para determinar de forma automática
el funcionamiento de las imágenes con instrucciones tales como
parada, retroceso o avance. A las posibilidades de acceso a la
información mediante teclado, ratón o toque de pantalla se une
ahora el micrófono. Es una aproximación a la estructura de una
capacidad inteligente en la máquina.
Al igual que los términos ya comentados anteriormente,
multimedia es hoy en día otra palabra de moda, no sólo en el
mundo informático sino en todos los ámbitos de la vida. Si se
quisiera definir este termino habría que comenzar diciendo que
se trata de cualquier combinación de medios (texto, gráficos,
sonido, animación y vídeo) en un mismo entorno. Se trata de
una nueva forma de comunicación que hace uso de diferentes
medios como la imagen, el diseño, el texto, etc. Aunque su
definición puede resultar sencilla la complejidad de este termino
radica en que su creación es laboriosa pues requiere del
conocimiento de diferentes herramientas computacionales y
tecnologías multimedia que trabajen en conjunto.
La presentación multimedia muestra la información en forma
atractiva manteniendo la atención del usuario y mejorando la
interfase tradicional. Además permite el acceso a paquetes
integrados (hoja de calculo, bases de datos, programas de
diseño, etc....) conformando de este modo
un completo y
novedoso acceso y organización de la información.
REFERENCIAS BIBLIOGRAFICAS
1. Manual de Usuario
ToolBook V 4.0
78

Documentos relacionados