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