Você está na página 1de 294

Programando con Avenue

Sonia Carretero Antn


Nieves Lantada Zarzosa
Adaptaci: SIGTE
28/02/00

Aclaracin

Hace tiempo que envie este fichero a otros tantos como vosotros que me lo solicitaron, pero
nadie me ha dicho si le ha sido de utilidad. Se trata de un fichero comprimido (.zip) con
windows, que contiene varios fichero de formato word (uno por capitulo). Lo que si me
gustaria deciros es que no es una versin definitiva, ya que una compaera (Sonia Carretero y
yo), hicimos un borrador para la empresa ESRI, quien se encargara de hacer correcciones e
insertar las figuras que falta. Nunca ms volvimos a saber de la publicacin y nuestra
relacin con la empresa no fue mejorando por decirlo de alguna manera. Espero que os
valga, y ante todo supongo que no es necesario que insista en que su uso no debera ser con
afn de lucro, sino meramente educativo o de investigacin.

Mail rebut el, 24/02/00 a les 16:27 hores de


Nieves.Lantada@upc.es

Contenido
ndice
1. El entorno de desarrollo de ArcView
2. Creacin de scripts en Avenue
3. Introduccin a objetos y requerimientos
4. Comprensin de las clases en ArcView
5. Comprensin de eventos
6. Personalizacin de la aplicacin y documento proyecto
7. Ramificacin y bucles
8. Trabajo con temas y leyendas
9. Creacin y consulta de tablas
10. Creacin de shapes y grficos
11. Trabajo con GUIs de documentos
12. Construccin de extensiones

Apndices

A. Leer y escribir ficheros de texto


B. Comunicacin con otro software
C. La demo Acme
D. Solucin a los ejercicios
E. Comandos de requerimiento en Avenue
F. Teclas de funcin en ArcView
G. Contrato de licencia
H. Instalacin de datos
I. Reconocimiento de datos
Evaluacin del curso

S E C C I N 1
El entorno de desarrollo de ArcView

El Entorno de desarrollo de ArcView................................................................ 1-2


Los controles y GUIs de documentos de ArcView..................................... 1-4
Personalizacin de la interfaz de usuario...................................................

1-6

La Caja de Dilogo de Personalizacin............................................................ .1-8


La lista de propiedades.............................................................................. 1-10
Establecer las propiedades del control...................................................... 1-12
Establecer las propiedades para los mens...............................................
1-14
Personalizacin de la ventana del proyecto............................................... 1-16
Salvar su GUI personalizada...................................................................... 1-18
Acceso a su GUI personalizada................................................................. 1-20
Ejercicio 1: visin de conjunto.................................................................... 1-22
Ejercicio 1: Diseo de una GUI personalizada................................................ 1-25

El Entorno de desarrollo de ArcView


Lenguaje de programacin orientado a objetos.

Una interfaz grfica para la personalizacin y desarrollo

fig (1-2)

El Entorno de desarrollo de ArcView


El entorno de desarrollo del Gis de ArcView consiste en un lenguaje de programacin orientado a objetos y una interfaz grfica para la
personalizacin. La interfaz grfica, incluye la Caja de Dilogo de Personalizacin (Customize) y el Editor de Scripts, que le permiten
escribir, ejecutar y depurar el cdigo de Avenue y la personalizacin de la interfaz de usuario grfica standard (GUI), mientras trabaja en el
entorno de desarrollo familiar de ArcView.
Caja de Dilogo de Personalizacin
Use la Caja de Dilogo de Personalizacin para editar mens, botones, herramientas y campos de men y sus propiedades.
Editor de Scripts
Use el Editor de Scripts para crear y testear los scripts de Avenue. Aprender ms sobre el Editor de Scripts en la seccin siguiente.

Los controles y GUIs de documentos de ArcView


Los documentos GUI estn formados por grupos de control.
Los controles son mens, botones, herramientas y campos de men.
Cada control se asocia a un script de Avenue

fig(1-4)

Los controles y GUIs de documentos de ArcView


Cada documento de ArcView tiene una GUI. La GUI est formada por los mens, botones, herramientas y campos de men que se usan
en el documento. Los mens, botones y herramientas aparecen representados en tres barras horizontales: la barra de menu, la barra de
botones y la barra de herramientas. A estas barras y campos de men se les llama tambin grupos de control.
Controles.
Al campo de men, botn y herramienta individual se les llama controles.
Grupos de control.
Son coleccciones de controles e incluye barras de men (menus), mens, barra de botones (botones), barra de herramientas
(herramientas) y grupos de campos de men.
Scripts de Avenue.
Cada control (men, herramienta, o campos de men) tiene asociado un script de Avenue. Usted puede ver, copiar o editar el
script de cada control.

Personalizacin de la interfaz de usuario


Personaliza una interfaz de usuario grfica (GUI)
Construye nuevas funciones para aplicaciones especficas
Crea herramientas y botones personalizados
Empaqueta para la distribucin.

fig(1-6)

Personalizacin de la interfaz de usuario


Avenue proporciona al usuario un entorno de desarrollo fcil para la personalizacin y creacin de aplicaciones de ArcView. Use Avenue
para simplificar operaciones, construir nuevas funciones o desarrollar aplicaciones completas con GUIs personalizadas.
Use Avenue para personalizar ArcView
Utilizar Avenue para personalizar la interfaz grfica de usuario (GUI). En esta seccin, se introducen las bases de la GUI de
ArcView, y aprender a crear nuevos mens, botones y herramientas para modificar la GUI.
Cree interfaces personalizadas
Con Avenue, puede crear interfaces personalizadas para una aplicacin. Por ejemplo, una GUI puede ser diseada para las tareas
realizadas por una aplicacin de planificacin ambiental, mientras otra GUI podr ser hecha para una aplicacin que busca nuevas reas
de mercado.
Simplifique tareas comunes
Para agilizar operaciones, puede combinar algunos pasos en un campo de men o botn.
Comunquese con otro software
Avenue proporciona herramientas que permiten a ArcView trabajar y comunicarse con otras aplicaciones. Avenue utiliza mtodos
estndar para transferir datos e instrucciones.
Empaquete GUIs personalizadas
Puede empaquetar y distribuir su versin personalizada de ArcView.

La Caja de Dilogo de Personalizacin


Modifica las GUIs de los documentos.
Las GUIs de los documentos estn formadas por controles.
Selecciona o aade un control y edita sus propiedades

Doble Clic

Lista de
propiedades

Tipo de documento GUI


Control de asignacin de la Categora

Editor de
Control

La Caja de Dilogo de Personalizacin


La Caja de Dilogo de Personalizacin es la interfaz visual que se usa para personalizar las GUIs de los documentos. Con esta caja
puede mover, aadir o borrar controles, o cambiar sus propiedades.
Para abrir la Caja de dialogo de personalizacin, escoja Personalizar desde el men Project (Proyecto) o haga doble clic en un espacio en
blanco de la barra de botones o de herramientas.
Tipo de documento GUI
Escoja el tipo de documento GUI segn los controles que quiera personalizar.
Categora del grupo de control
Seleccione la categora del grupo de control que quiere personalizar. Cuando escoja una categora, el grupo de control
seleccionado, aparecer en el Editor de Control.
Editor de control
El Editor de Control muestra los controles especificados por el tipo de documento y la categora que usted seleccione. Use el
Editor de Control para seleccionar un control al tiempo que lo edita. Use el Editor de Control para aadir o borrar controles y separadores.
Lista de propiedades
Las propiedades definen como aparece representado y como funciona un control.
propiedades actuales establecidas para el control seleccionado.

La lista de propiedades muestra las

Deshacer la edicin desde la Caja de Dilogo de Personalizacin.


Puede deshacer la ltima accin usando <Control>+Z (UNIX y PC) o <Command>+Z (Macintosh). ArcView mantiene el estado
deshacer hasta el siguiente comando. No puede rehacer una accin deshecha.
Mover controles
Use el ratn para seleccionar un control, entonces arrstrelo y djelo en la nueva posicin.

La lista de propiedades
Las propiedades definen como se representa y como funciona un control
Seleccione un control para ver sus propiedades
Cada grupo de control tiene una lista de propiedades distinta.

fig.(1-10)

La lista de propiedades
Cada control tiene unas propiedades que puede cambiar. En la lista de propiedades aparece el nombre de la propiedad y los valores
asignados al control seleccionado.
La lista de propiedades es diferente para cada categora de controles (mens, botones, herramientas y campos de men). Por ejemplo,
botones y herramientas tienen una propiedad Icon (icono); mens y campos de mens no. Estos ltimos tienen una propiedad Label
(etiqueta) que no tienen botones y herramientas.
Para ms informacin...
Las propiedades de los controles pueden asignarse con scripts de Avenue. Este tema se comenta con ms detalle en la seccin
11 de este manual, Trabajando con GUIs de documentos.

Establecer las propiedades del control


Doble clic para cambiar una propiedad
Cursor

Ayuda

Icono

Establecer las propiedades del control


Algunas propiedades conmutan entre true y false (verdadero y falso respectivamente), otras requieren una cadena, y otras presentan una
ventana de cremallera con una lista de posibles elecciones. Puede cambiar una propiedad mediante doble clic sobre el nombre de la
propiedad o sobre el valor actual que tiene asignado.
Propiedad Cursor
Define el cursor que aparecer cuando se aplique una herramienta en la ventana del documento.
Propiedad Disabled (inhabilitado)
Define si un control est inhabilitado (true) o habilitado (false). Un control inhabilitado aparece en gris y no puede seleccionarse.
Propiedad Help (ayuda)
Define la cadena de ayuda que aparecer en la barra de estado de la ventana de la aplicacin, tanto si est asociada a una
herramienta como a un botn.
Propiedad Help Topic (ayuda del tema)
Define la ayuda en lnea asociada con un control. Puede personalizar la ayuda en lnea de ArcView y cargarla en el Icon Manager
(Gestor de iconos).
Propiedad Icon (icono)
Define el nombre del icono que aparece en el botn o herramienta. Puede crear sus propios grficos y luego cargarlos en el gestor
de iconos.
Propiedad Invisible
Define si un control est invisible (true) o visible (false). Si un control est invisible no aparecer en la GUI.
Propiedad Tag (comentario)
Almacena un texto adicional (con el propsito de identificarlos o comentarlos) necesaria para un control. Los comentarios de los
controles se almacenan con el proyecto.

Establecer las propiedades para los mens


La propiedad Label (etiqueta) asigna una cadena de texto
Asigna una clave de acceso con un &
La clave de acceso est subrayada
La propiedad Shortcut asigna una combinacin de teclas de funcin

Etiqueta

Teclas de funcin

Establecer las propiedades para los mens


Las propiedades Label (etiqueta) y Shortcut son vlidas para mens y campos de men. Las claves del acceso y de funcin permiten
acceder al men desde el teclado. Son usadas como una alternativa al ratn.
Etiqueta
La propiedad Etiqueta especifica el texto para un men o campo de men.
Claves de acceso
En la propiedad etiqueta, teclee un ampersand (&) delante de la letra/tecla de acceso. En el men, esta letra aparece subrayada.
Por ejemplo, las propiedades etiqueta para el men File y el campo de men Save Project son &File y &Save Project respectivamente.
Para acceder al men File y Save Project, el usuario teclear <Alt>+F, entonces S (sin la tecla <Alt>).
Las claves de acceso deben ser nicas para cada men, y para cada campo de men. La clave de acceso es comnmente la primera
letra de cada campo de men, pero puede ser cualquier letra.
Shortcut
Use esta propiedad para especificar la combinacin de teclas de funcin que darn acceso directo a un campo de men (sin el
paso intermedio de acceder al men). Escoja la combinacin deseada desde la caja de dilogo Shortcut. En el men desplegable, la
teclas de funcin aparecern a la derecha del campo de men.
Por ejemplo, la eleccin de men Save Project tiene las teclas de funcin Ctrl+S. Para salvar un proyecto, el usuario teclear <Crtl>+S
(sin acceder primero al men File).
Vea el apndice F de este manual donde aparece una lista de estas teclas.
Nota
Los campos de men no reconocen el acceso mediante teclas de funcin.

Personalizacin de la ventana del proyecto


Maneja las interfaces de usuario de los documentos
Copia y borra las interfaces de usuario de los documentos
Actualiza las propiedades de las interfaces de usuario de los documentos

fig. (1-16)

Personalizacin de la ventana del proyecto


En la Caja de Dilogo de Personalizacin, haga clic en el botn Edit (Editar) para acceder a la Caja de Dilogo de Personalizacin de
Tipos. Esta ltima caja le permite editar las propiedades de las interfaces de usuario del documento que aparece en la ventana del
proyecto. Puede aadir o borrar tipos de documentos, cambiar el orden en el que estos aparecen o cambiar el icono asociado con ellos.
Por ejemplo, si su proyecto tienen cinco vistas, tres contienen datos para pases y dos para ciudades, puede crear los tipos cities y
countries que aparecern en la ventana del proyecto. Entonces podr asociar la vista city con el tipo cities y la vista country con el tipo
countries. Entonces cuando seleccione el icono cities en la ventana del proyecto, slo aparecern listadas las vistas que estn asociadas
con el tipo.
Deshacer su ediciones en la Caja de Dilogo de Personalizacin de Tipos.
Puede deshacer la ltima edicin en la Caja de Dilogo de Personalizacin de Tipos pulsando crtl-Z (UNIX y Windows) o
Command-Z (Macintosh).

Documentos virtuales
Los nuevos tipos de documentos se refieren a documentos virtuales. Los documentos virtuales tienen su propio tipo de documento vista,
tabla, composicin, grfico o script. La Caja de Dilogo de Personalizacin de tipos permite manipular documentos virtuales. Para ms
informacin, vea la ayuda sobre este tema: Customize Types (Dialogo box), Virtual documents.

Salvar su GUI personalizada


Salve la GUI con el proyecto en curso.
Fig.

Salve la GUI con el proyecto llamado default.apr en su directorio home


Restablezca la GUI original desde default.apr en el directorio de instalacin

fig. (1-18)

Salvar su GUI personalizada


Despus de la personalizacin de ArcView, guarde los cambios en el proyecto. Los cambios pueden guardarse para un proyecto
especfico, para un proyecto personal por defecto o para el proyecto por defecto del sistema de ArcView.
Guardar los cambios en un fichero de proyecto especfico
Si guarda los cambios para un proyecto especfico, un proyecto creado por el usuario (ej. Myproj.apr), el usuario que abra ms
tarde el proyecto ver la GUI personalizada. Los cambios son nicos para el proyecto y no afectan a otros proyectos.
Make Default (Valores por omisin)
Si hace clic en el botn Make Default (Valores por omisin) en la Caja de Dilogo de Personalizacin, el fichero de proyecto
personal por defecto llamado default.apr se reemplaza en el directorio home. Cada vez que usted inicie ArcView (o cualquiera que
comparta el mismo directorio home o acceso), visualizar esta GUI.
Reset (Restablecer)
La apariencia original de los controles de ArcView y los scripts asociados se establece en el proyecto por defecto del sistema de
ArcView llamado default.apr, el cual se almacena en el directorio de instalacin de ArcView (ej. c:\win32app\arcview\etc).
Si quiere volver a la GUI original de ArcView despus de hacer los cambios, haga clic en el botn Reset (Restablecer).
El fichero de proyecto por defecto del sistema de ArcView puede modificarse, pero las modificaciones afectarn a todos los usuarios de
esta copia de ArcView. Debera hacerse slo despus de muchas consideraciones, ya que ser necesaria una reinstalacin del software
si este fichero se sobrescribe y no fue salvado en una copia.
Reemplazar el fichero de proyecto del sistema default.apr
Antes de reemplazar el fichero de proyecto del sistema, default.apr en el directorio de instalacin de ArcView, haga una copia. Entonces
escriba un script de Avenue que use el requerimiento MakeSysDefault. Para ms informacin vea la ayuda sobre este tema: System and
User Default Projects.

Acceso a su GUI personalizada


Cuando se inicializa ArcView, lee los ficheros de proyecto en este orden:

1. Proyecto del sistema por defecto


2. Proyecto home por defecto
3. Proyecto actual
fig. (1-20)

Acceso a su GUI personalizada


Cuando se inicia ArcView, se lee el fichero de proyecto del sistema, default.apr. Entonces se lee el proyecto por defecto (si existe uno) en
el directorio home del usuario. Finalmente, se abre el proyecto ledo.
El proyecto por defecto de home y el proyecto actual contienen slo la informacin que define los cambios del proyecto por defecto del
sistema. No hay ms informacin en estos ficheros de proyecto, en cuanto a la GUI por defecto, no cambia. Por tanto, el usuario ve que
la GUI final es una combinacin de estos tres ficheros.
Iniciar ArcView
Adems de leer varios ficheros de proyecto durante la inicializacin, ArcView tambin lee y ejecuta algunos scripts. Aprender
como modificar estos scripts en otras secciones.
Al iniciar ArcView, se leen los siguientes ficheros en este orden:
Personalizaciones que afectan a todos los usuarios:
$AVHOME/etc/startup
$AVHOME/etc/default.apr

script en el directorio de instalacin


proyecto en el directorio de instalacin

Personalizacin en su entorno de trabajo personal


$AVHOME/default.apr
Appl.Initialize

proyecto en el directorio home


script en default.apr de home

Personalizacin en un proyecto especfico


aProject.apr
Appl.Initialize

su proyecto especfico
script en el aProject.apr

Ejercicio 1 : visin de conjunto


Experimente con la Caja de Dilogo de Personalizacin
Cree su directorio de trabajo para almacenar los datos
Los nombres de las rutas que necesita conocer
ruta para el directorio de trabajo:
ruta para el directorio de datos de partida:
ruta para el directorio de ejercicios:
ruta para el directorio de datos:
ruta para el directorio home:
Instrucciones para iniciar ArcView
Para iniciar ArcView:
Tres tipos de pasos: obligatorio, opcional y propuesto:
Paso 1

Paso 1
(opcional)

Ejercicio 1 : visin de conjunto


En este ejercicio, usar la Caja de Dilogo de Personalizacin para hacer personalizaciones sencillas.
Crear un directorio temporal
Durante este curso, crear algunos scripts de Avenue y necesitar un lugar donde almacenarlos. Antes de iniciar el primer
ejercicio, crear un directorio de trabajo llamado pavetemp. Almacenar todos sus datos y los ficheros en l. Cree el directorio usando los
comandos apropiados de su sistema operativo o con el administrador de archivos. Si es necesario, el instructor le explicar como crear el
directorio pavetemp. El instructor puede haberlo creado ya para usted.
Directorio de datos de partida
El instructor le dir donde se encunetran los datos necesarios para este curso. Anote la ruta en el espacio proporcionado en la
pgina anterior. El directorio principal se llama pave y contiene los subdirectorios exercice y data.
Directorio de ejercicio y datos
El directorio exercice contiene un proyecto (*.apr) para cada ejercicio de este manual. El directorio data contiene los datos para
utilizar en cada ejercicio. El instructor le dar las rutas de estos directorios. Es conveniente, anotarlos en el espacio proporcionado para
ellos en la pgina anterior.
Pasos obligatorios
Los pasos obligatorios proporcionan las instrucciones detalladas. Los pasos que implican escribir un script, por ejemplo, conocer
cada objeto y requerimiento que se necesita para realizar una tarea.
Pasos opcionales
Pasos opcionales que puede realizar si el tiempo se los permite.
Pasos propuestos
Los pasos propuestos puede realizarlos tambin si tiene tiempo. Sin embargo, estos pasos no proporcionan instrucciones
detalladas; slo describen la tarea a realizar, permitindole, al estudiante, determinar el mejor camino para llevarla a cabo.

Ejercicio 1: Diseo de un GUI personalizado

Paso 1

Cree el directorio pavetemp

Paso 2

Inicie ArcView y abra un proyecto

Paso 3

Borre y mueva los controles en la barra de botones de la vista

Paso 4

Modifique las propiedades invisible e inhabilitado

Paso 5

Determine las propiedades Icon y Help

Paso 6

Salve su GUI personalizada

Paso 7

Modifique el men de la vista y la barra de herramientas

(opcional)

Asigne la propiedad Apply de las herrramientas

Ejercicio 1: Diseo de una GUI personalizada


Convenciones utilizadas en los ejercicios:

Los nombres de ficheros, de documentos, nombre de botones y campos de mens aparecen en negrita.
Use el botn izquierdo del ratn a menos que se indique de otra manera, o si se encuentra bajo sistema UNIX .
Los prrafos con instrucciones estn sangrados.
Paso 1

Cree el directorio de trabajo

Durante este primer da de curso, crear algunos scripts de Avenue y necesitar almacenarlos.
Use su sistema operativo para crear el directorio pavetemp donde almacenar los datos. Si lo necesita, el instructor le explicar
como crear el directorio de trabajo pavetemp. (En algunos casos, el instructor puede haberlo creado ya para usted).
Paso 2:

Inicie ArcView y abra un proyecto

Inicie ArcView. Referirse al Ejercicio visin de conjunto (pg. 1-20)


Despus de iniviar ArcView, abra el proyecto para este ejercicio.
Desde el men File (Archivo), escoja Open Project (Abrir proyecto).
Haga doble clic en las carpetas de los directorios y navegue hasta el directorio exercice (vea las notas de la pg. 1-20). Haga
doble clic en ex1.apr para abrir el proyecto para este ejercicio.
Cuando abra el proyecto, ver una vista llamada Census Tracs.
En este ejercicio, aprender cmo disear una interfaz grfica de usuario en ArcView usando la Caja de Dilogo de Personalizacin. Ver
tambin el efecto de salvar su GUI personalizada para diferentes ficheros de proyecto.

Paso 3

Borre y mueva los controles en la barra de botones de la vista

Usar la Caja de Dilogo de Personalizacin para borrar y mover los botones existentes en la barra de botones de la vista Census Tracts.
Con la vista Census Tracts activa, abra la Caja de Dilogo de Personalizacin mediante doble clic sobre un espacio en la barra de
botones o herramientas.
figura
Si quiere modificar la barra de botones de la vista, asigne View (Vista) a Type (tipo) y Buttons (botones) a Category (categora).
En el Editor de Control (en el centro de la Caja de Dilogo de Personalizacin) ver una copia de la barra de botones de la vista. El botn
Save (salvar) est actualmente seleccionado.
Figura

Ample la Caja de Dilogo de Personalizacin para ver la barra de botones entera.


Suponga que su usuario no necesitar el botn Locate Address (localizar direccin, para la geocodificacin interactiva), y tambin quiere
borrar el botn de la barra de botones.
Haga clic en el botn Locate Adress para seleccionarlo
figura
Ahora con clic en Delete (borrar). Mediante el botn de borrado, borrar sus propiedades.
Su cambio se refleja en el Editor de Control y en la barra de botones de la vista en la ventana de la aplicacin.
figura

Luego, modificar la barra de botones moviendo el botn seleccionado del modo siguiente.
figura
En el Editor de Control, site el cursor sobre el botn Select Features Using Graphic
(Seleccin grfica de entidades).
Figura
Pulse y mantenga el botn del ratn y arrstrelo a la derecha del botn de consulta, entonces suelte el botn del ratn.
figura
Ahora pulse y mantenga el botn del ratn sobre el botn Clear Selected Features
(Borrado de entidades seleccionadas).
figura
Arrstrelo a la derecha del botn de la seleccin grfica de entidades.
Figura

Paso 4

Modifique las propiedades invisible e inhabilitado

En este paso, trabajar con las propiedades de dos botones. Aprender como hacer visible y habilitar un botn en su GUI personalizada.
Primero, suponga que est construyendo el sistema de visualizacin en pantalla y quiere resaltar el botn guardar proyecto.
Haga clic en el botn Save Project (Guardar Proyecto) para seleccionarlo.
figura
En la lista de propiedades, haga doble clic en la propiedad Invisible para conmutar la asignacin desde False (falso) a True
(verdadero).
figura

Observe que el botn est invisible en la barra de botones de la vista en la ventana de la aplicacin (sin embargo es visible en la Caja de
Dilogo de Personalizacin).
figura
Ahora modificar el botn aadir tema para inhabilitarlo. Un control inhabilitado aparece en gris y no puede seleccionarse haciendo clic en
l.
Haga clic en el botn Add Theme (Aadir Tema) para seleccionarlo.
figura
En la Lista de Propiedades, haga doble clic en la propiedad Disabled (Inhabilitado) para cambiar el valor a True.
figura
Observe que el botn est inhabilitado en la barra de botones de la vista en la ventana de la aplicacin.

figura
Desde la ventana de la aplicacin, haga clic en el botn Add Theme para ver que su propiedad est tambin inhabilitada.
Puede inhabilitar o poner un control invisible cuando quiera restringir a los usuarios que utilicen ese control (por ejemplo, no quiere que el
usuario guarde el proyecto o aada temas a la vista).

Paso 5

Determine las propiedades Icon y Help

Luego, cambiar el icono de un botn, aadir un nuevo botn y cargar un grfico de usuario como icono del nuevo botn. Tambin
aadir alguna ayuda al nuevo botn.
Suponga que quiere modificar un icono que sus usuarios encuentran difcil de leer o incomprensible. Modificar el icono para el botn de
consulta.
En la Caja de Dilogo de Personalizacin, haga clic en el botn Query (Consulta) para seleccionarlo.
figura
En la lista de propiedades, haga doble clic en la propiedad Icon.
figura
En el gestor de iconos, elija el icono Q, entonces haga clic en OK.
figura
Su nuevo botn de consulta aparece en la barra de botones de la vista.
figura
Luego, aadir un nuevo botn con el logotipo de una compaa al final de la barra de botones. Para este botn, cargar un bitmap
creado por el usuario en el gestor de iconos.
Haga clic en el botn Help (ayuda) para seleccionarlo.

Figura
En lugar de situar un botn nuevo a la derecha del botn Help, aadir un separador para crear un espacio.
Haga clic en Separator (Separador) para insertar un botn despus del separador.
figura
Haga clic en New para insertar un botn despus del separador.
figura
Haga doble clic en la propiedad Icon para que aparezca el Gestor de Iconos, entonces pulse Load (Cargar).
En la ventana de bsqueda de ficheros, establezca la lista de ficheros de tipo Windows Bitmap (*.bmp), muvase hasta el
directorio data (vea las notas en la pgina 1-20) y entonces elija jtlogo.bmp rojo y azul y haga clic en OK.
Figura
El fichero jtlogo.bmp se cargar en el Gestor de Iconos
figura

Haga clic en OK para situar el icono en el nuevo botn.


figura
Cuando el usuario mueve el cursor sobre el botn, aparece una cadena de ayuda en la barra de estado. Ahora aadir la ayuda al nuevo
botn.
En la Lista de Propiedades, haga doble clic en la propiedad Help (Ayuda).
figura
Teclee la cadena Informacin sobre JT Consultores en la caja de dilogo de Ayuda, entonces haga clic en OK.
figura

Para testear esta propiedad, mueva el cursor sobre el botn JT en la ventana de la aplicacin y mire en la barra de estado para ver
la cadena de ayuda.
Figura

Herramienta de aviso para Microsoft Windows 95 y Microsoft Windows NT


Cuando el botn se posa en un botn o herramienta, aparece sobre el control una caja con un pequeo texto. A esto se le llama una
herramienta de aviso. Para crear una herramienta de aviso, haga doble clic en la propiedad Help, entonces en la caja de dilogo de
Ayuda, escriba la herramienta de aviso usando esta sintaxis: Tool Tip string77Status bar help string. Por ejemplo, la propiedad de Ayuda
del botn JT puede verse que es: JT Info//Information about JT Consultants. Para testear, observe directamente sobre el botn la
herramienta. Para ms informacin, busque la ayuda sobre este tema: Help Property.
Paso 6

Salve su GUI personalizada

En este paso, ver el efecto de salvar una GUI personalizada para diferentes ficheros de proyecto. Salvar el proyecto en el fichero de
proyecto actual, entonces har pequeos cambios y salvar el fichero de proyecto (default.apr) en su directorio home.
Active la ventana de proyecto. Desde el men File (Archivo), elija Save Project As (Guardar proyecto como). Mueva su directorio
pavetemp (vea pg. 1-20) y salve el proyecto como paveex1.apr.
Ahora haga pequeos cambios en la interfaz y cree un proyecto personal por defecto.
Active la vista. En la Caja de Dilogo de Personalizacin, asigne View (Vista) a Type (Tipo) y Buttons (Botones) a Category
(Categora).
En la Caja de Dilogo de Pesonalizacin, haga clic en el botn Save (salvar) para seleccionarlo. Haga doble clic en la propiedad Invisible
para conmutarla a False, haciendo visible de esta forma el botn Save.
Haga clic en el botn JT para seleccionarlo. Haga doble clic en la propiedad Invisible para conmutarla a True, de esta forma el
botn se har invisible.
En la Caja de Dilogo de Personalizacin, haga clic en Make Default (Valor por omisin). Esto salvar los cambios en el fichero de
proyecto llamado default.apr en su directorio home.
Cierre la Caja de Dilogo de Personalizacin y desde el men File (Archivo), elija Exit (Salir) para salir de ArcView. Haga clic en No
cuando pregunte para salvar los cambios en paveex1.apr.
Ahora tiene dos barras de botones de la vista diferentes: una en el directorio pavetemp y otra en el directorio home. Ahora examine la
diferencia entre los dos ficheros.
Inicie ArcView
Haga clic en New (nuevo) para abrir una vista nueva y examine la GUI creada desde default.apr, en su directorio home. EL botn
Save (Guardar) est visible y el botn JT invisible. Observe tambin que el botn Query (consulta) tiene una Q como icono.

figura
Active la ventana del proyecto. Desde el men File (Archivo), elija Open Project (Abrir Proyecto), haga clic en No cuando pregunte
para salvar los cambios en el proyecto Untitled (Sin ttulo).
Muvase al directorio pavetemp y abra paveex1.apr. Examine la GUI personalizada que guard en paveex1.apr. El botn Save
(Guardar) est invisible, el JT est visible, y el botn Add Theme (Aadir Tema) est inhabilitado.
figura
Para restablecer la GUI original de ArcView, abra la Caja de Dilogo de Personalizacin y haga clic en Reset (Restablecer). Esta GUI est
almacenada en el proyecto llamado default.apr en el directorio de instalacin de ArcView.
figura
Active la ventana de proyecto y desde el men File (Archivo) elija Close Project (Cerrar Proyecto) y no guarde el proyecto.
Ahora borrar el fichero default.apr en su directorio home.
Use el sistema operativo o el gestor de archivos para moverse al directorio home (vea la pg. 1-20) y borre el fichero default.apr.
Si deja el fichero default.apr en el directorio home, cuando inicie ArcView y abra un proyecto ver estas personalizaciones.

Paso 7

Modifique el men de la vista y la barra de herramientas

(opcional)

En primer lugar personalizar la barra de men de la vista, aadiendo un nuevo men con campos para cada tema en la vista Atlanta.
Abra el proyecto paveex1.apr.
Con la vista Census Tracs activa, use la Caja de Dilogo de Personalizacin para cambiar la Category a Menus
. Haga clic en &Theme (&Tema) para seleccionarlo, entonces haga clic en el New Menu (Nuevo Men). Se crear un men nuevo a la
derecha del men Theme (Tema).
figura
Luego, cambiar el texto en su nuevo men y aadir una clave de acceso.
Haga doble clic en la propiedad Label y teclee &Layers en la caja de dilogo. Haga clic en OK.
figura
Se crear un nuevo men llamado Layers (Capas) en la barra de men.

figura
Ahora est preparado para disear los campos del men que los nombres de los temas de la vista Census Tracts.
Haga clic en New Item (nuevo campo) tres veces para crear tres campos de men. Haga clic en la primera eleccin para
seleccionarla y doble clic en Label Property y teclee como nueva etiqueta &Population, entonces haga clic en OK.
Haga lo mismo para los otros dos campos y etiqutelos con &Income y &Education respectivamente.
&Layers
&Population
&Income
&Education
Para acceder al men, active la vista y pulse <ALT>+L.
figura
Pulse P, I o E para hacer desaparecer el men. En un ejercicio posterior asignar scripts para ejecutarlos desde los campos de
men.
Ahora personalizar la barra de herramientas de la vista mediante la adicin de una nueva herramienta. Suponga que el usuario quiere
una funcin que devuelva las coordenadas x, y de la localizacin seleccionada en la vista. Debido a que la funcin requiere el uso del
ratn desde el usuario, se aadir una herramienta en lugar de un botn.
En la Caja de Dilogo de Personalizacin, cambie Category a Tools.
En el editor de control, haga clic en la herramienta Identify (identificar) para seleccionarla.
figura
Haga clic en Tool (herramienta) para crear una nueva herramienta a la derecha de la herramienta Identify (identificar). Despus de
aparecer la nueva herramienta, arrstrela al extremo derecho de la barra de herramientas (a la derecha de la herramienta Snapping
,Seleccin). Haga doble clic en la propiedad Icon y seleccione el icono XY2 y haga clic en OK.
figura
El Editor de Control y la barra de herramientas aparecen ahora con una nueva herramienta.
figura
La herrramienta tambin se debe asignar a un cursor.

Haga doble clic en la propiedad Cursor, elija Cursors.Bullseye para el cursor y haga clic en OK.
figura
Para ver el cursor bulls-eye, haga clic en la nueva herramienta XY y mueva el cursor por el mapa de la vista.
8

Asigne la propiedad Apply de las herrramientas

Asigne la propiedad Apply para la herramienta XY creada en el paso anterior. Cuando la propiedad est asignada, seleccione el
script XYTool del Gestor de Scripts. Testee la nueve herramienta de nuevo para ver el informe de coordenadas XY.

Fin

S E C C I N 2
Creacin de scripts en Avenue

Creacin de scripts en Avenue.......................................................................... 2-2

Escribir scripts con el Editor de Scripts...................................................... 2-4


Cargar un fichero de texto.......................................................................... 2-6
Cargar un script del sistema....................................................................... 2-8
Compilar y testear un script........................................................................ 2-10
Depurar un script........................................................................................ 2-12
Guardar un script....................................................................................... 2-14
Ejercicio 2: Escribir y testear scripts................................................................ 1-17

Creacin de scripts en Avenue


Paso 1: Introducir el cdigo
figura
Paso 2: Compilar el script
figura
Paso 3: Testear y depurar cuando sea necesario.
figura
Paso 4: Guardar el script.
figura

Creacin de scripts en Avenue


Las aplicaciones Gis de ArcView personalizadas se crean con los scripts de Avenue. Los scripts se escriben, compilan, testean y
depuran desde el documento del Editor de Scripts de ArcView.
Aprender cmo utilizar el Editor de Scripts para crear sus propios scripts o modificar los scripts de ArcView existentes.
Hay cuatro pasos para crear su primer script en Avenue: introducir el cdigo, compilar el cdigo, testear y ejecutar el script, y guardarlo
cuando sea correcto.
Introducir el cdigo
El primer paso es introducir el cdigo en una ventana de scripts. Hay tres formas de hacerlo: tecleando en la ventana del script,
copiando un script existente en la ventana del script, o copiando un fichero de texto en la ventana del script.
Compilar su script
Compile el cdigo para convertirlo al formato que entiende ArcView y encontrar los errores de sintaxis.
Testear y depurar su script
Cuando no existen errores de compilacin, est preparado para testear el script. Si encuentra un error durante la ejecucin, corrija
el error, entonces recompile y retestee el script. Este procedimiento, conocido como depuracion, puede necesitar ser repetido varias
veces antes de que el script proporcione los resultados deseados.
Guardar su script
Cuando el script sea correcto, gurdelo con el proyecto. Ms tarde, puede asociarlo con un control. Los usuarios ejecutan los
scripts al actuar sobre los botones, herramientas, mens y campos de men de la GUI. En otra seccin posterior se explica como ejecutar
los scrips desde la GUI.

Escribir scripts con el Editor de Scripts


Escribir, compilar, ejecutar y depurar el script
Cortar, copiar, pegar y editar scripts
Aadir comentarios para documentar su trabajo

figura

Escribir scripts con el Editor de Scripts


El Editor de Scripts es un documento que le permite crear, compilar, ejecutar, depurar y modificar scripts. Al igual que otros documentos
de Arcview, el editor de scritps tiene un nico grupo de mens y botones para permitir estas operaciones.
Una ventana del editor de scripts contienen estamentos de Avenue que pueden ser compilados y salvados como un script. Al hacer clic en
el icono Scripts en la ventana del proyecto, aparecen listados los scripts que se crean en el proyecto.
Una forma de empezar a escribir el cdigo de Avenue, es teclendolo en la ventana del Script. Para editarlo se utilizan los botones de
cortar, copiar y pegar texto.
Usar comentarios en un script
Es una buena costumbre aadir comentarios a su cdigo para documentar el trabajo. Un apstrofe ( ) indica un comentario en
Avenue. Un comentario puede ocupar una lnea entera o puede aparecer al final de la lnea. Avenue ignora los comentarios y lneas en
blanco.

Determinar el tamao de la fuente del script


Puede asignar el tamao de la fuente usada en el editor de script elijiendo Properties (Propiedades) del men Script. Puede asignar el
tamao de la fuente como pequea, media o grande. Para ms informacin, busque en la ayuda: Scripts Properties (Dialogo Box).

Cargar un fichero de texto


Fichero de texto (ej. Hello.ave)
aMessage = Hello World
MsgBox.Info (aMessage, My Message)
Seleccione el fichero de texto

figura
Cargue el fichero de texto en una ventana de script
figura

Cargar un fichero de texto


Puede usar tambin el editor de texto para teclear su cdigo de Avenue en un fichero de texto ASCII, y entonces cargar el fichero de texto
en la ventana del Editor de Scripts.
Botn de carga de fichero de texto
El botn de carga de ficheros de texto hace aparecer en pantalla un buscador de ficheros desde el cual se puede elegir el fichero
de texto para insertarlo en la ventana activa del Editor de Scripts. Puede aadir varios ficheros de texto juntos o aadir un fichero de texto
a un script existente en una nica ventana del editor de scripts.

Cargar un script del sistema


Haga clic en el botn Load System Script (carga de script del sistema)
figura
Seleccione un script del sistema de ArcView

El script se carga en la ventana del script activa


figura

Cargar un script del sistema


Algunos scripts que puede querer utilizar estn ya escritos por completo o parcialmente como parte del software de ArcView. Puede
cargar algunos de los scripts del sistema de ArcView en una ventana de scripts y editarlos. Puede ahorrar tiempo cargndo y editndo un
script del sistema que sea similar al que quiere escribir.
Cargar un script existente
El botn Load System Script carga un script del sistema en la ventana de Scripts. Haciento clic en este botn aparece un Gestor
de Scripts.
Gestor de Scripts
Utilice el Gestor de Scripts para elegir un script e insertarlo en la ventana de scripts. El gestor de scripts es una caja de dilogo
que lista todos los scripts del proyecto actual. Esta lista muestra todos los scripts del sistema, y los nuevos scripts creados por usted en el
proyecto actual o en el proyecto default de home.

Ejemplo
Por ejempo, puede cargar un script llamado View.ZoomIn en el Script3. El script View.ZoomIn contiene dos lneas de cdigo en
Avenue que activan el documento ventana (GetActiveDoc) y hacen un zoom in (ZoomIn), es decir aumenta el dibujo en la pantalla
(GetDisplay) con un factor 125. Para cambiar la funcin de aumento al factor 250, reemplace 125 por 250.

Utilizar una librera de scripts


Adems de los scripts del sistema, ArcView tiene algunos scripts que proporcionan funciones adicionales (ej. Buffer, intersect, histograms).
Estn localizados en :$SAVHOME/samples/scripts. Para ms informacin, busque en Contenidos en la Ayuda de ArcView de este libro:
Sample scripts and extensions.

Compilar y testear un script


Compile el script
figura

Testee el script
figura

Caja de mensaje

Compilar y testear un script


Cuando haya acabado de teclear o cargar el cdigo en la ventana del Script, el script est preparado para compilar y testear. El editor de
scripts tiene dos botones para ayudarle con estas tareas: el botn Compile (Compilar) y el botn Run (ejecutar)
Compilar el script
Al compilar su script lo convierte en cdigo legible para ArcView y chequea los errores de sintaxis del cdigo en Avenue. Si existen
errores de sintaxis, aparece un mensaje de error, y el script no se compila. Cuando se ejecuta el script se usa la versin compilada. El
botn Run (Ejecutar) est inhabilitado hasta que el script se compile con xito.
Testear el script
Use el botn Run (Ejecutar) para ejecutar y testear el script. (Los scripts normalmente se ejecutan con el botn Run con el
propsito de testearlo solamente). Una vez que es script es testeado y funciona correctamente, ascielo a un control particular de la GUI.
El usuario puede entonces ejecutarlo desde la GUI.
Cajas de mensajes de informacin
MsgBox.Info muestra en pantalla una caja de dilogo que contiene un mensaje para el usuario. Requiere dos parmetros: un
mensaje y un ttulo para el ttulo de la barra en la ventana. Ambos parmetros son cadenas.
Las cajas de mensajes se explican con ms detalle en secciones posteriores.

Depurar un script
Depura paso a paso

figura

Introduce o borra un punto de ruptura

figura

Examina las variables

figura

Mensajes de error

figura figura

Depurar un script
El Editor de Scripts contiene varios botones para ayudarle a depurar su cdigo. Puede ver como se ejecuta, ver los valores de las
variables, y encontrar la localizacin exacta del problema.
Depurar paso a paso
El botn Step (Paso) o <F8> le permiten escalonar el script a cada objeto y requerimiento cada vez. (Vea la seccin 3,
Introcuccin a objetos y requerimientos, para ms informacin sobre objetos y requerimientos). El botn Step est inhabilitado hasta que
el script se compila con xito.
Introducir o borrar un punto de ruptura
Puede introducir puntos de ruptura para interrumpir la ejecucin del script. El botn Toggle Breakpoint (Conmutar Puntos de
Ruptura) inserta o borra puntos de ruptuta en la posicin actual del cursor. El botn Toggle Breakpoint est inhabilitado hasta que el script
se compila con xito. ArcView no guarda los puntos de ruptura cuando cierra el proyecto o sale de ArcView.
Examinar variables
Puede chequear los valores de las variables usando el botn Examine Variables. (Vea la seccin 3, Introduccin a objetos y
requerimientos, para ms informacin sobre variables). El botn Examine Variables muestra en pantalla una ventana que muestra el tipo
(ej. Local o global), nombre, clase y valor de la variable. Este botn est inhabilitado hasta que el script se compila con xito.

Mensajes de error
ArcView puede mostrar mensajes de error al compilar y ejecutar. Interprete cada mensaje de error o bsquelo en la ayuda en lnea.
Aislar errores
En los scripts ms largos, debera aislar los errores para localizarlos. Copie y pegue el cdigo incorrecto en un script vaco.
Testee y ejecute el script corto para identificar el error. Una tcnica es usar cajas de mensaje (o av.SetName(su variable)) para visualizar
las variables y ver como cambian durante la ejecucin.

Guardar un script
Guardar un fichero de proyecto

Fichero de proyecto (ej. World.ap)


(SED.147
Name: Hello
Source:The famous Hello World
World\\natitle=
\ Welcome \ \ n
MsgBox.Info (aMessage, aTitle)

script.

\naMessage

Escribir un fichero de texto


Fichero de texto (ej. Hello.ave)
The famous Hello World script amessage= Hello World
aTitle = Welcome
MsgBox.Info (aMessage, aTitle)

\Hello

Guardar un script
Los scripts se pueden guardar con el proyecto actual. Tambin puede guardarlos como un fichero de texto para almacenarlos por
separado del proyecto.
Guardar el proyecto
Cuando guarda el proyecto actual, algunos scripts se crean y guardan con el fichero del proyecto (ej. World.apr)
Vea la seccin 1, El Entorno de Desarrollo de ArcView, para ms informacin sobre como salvar scripts en el proyecto por defecto
de home.
Escribir un fichero de texto
El botn Write Text File (Escribir un fichero de texto) escribe en un fichero de texto los contenidos de la ventana del script activa.
Se escribir un fichero de texto en su directorio home (ej. C:\temp), y aadido con una extensin .ave (ej. Hello.ave). Utilizando este botn
puede salvar su script y envirselo a alguien como un fichero ASCII.
Si tiene resaltado algn texto en el script, slo se escribir en el fichero de salida el texto seleccionado.

Ejercicio 2: Escribir y testear scripts


Paso 1

Iniciar ArcView y abrir un proyecto

Paso 2

Escibir, compilar, ejecutar y renombrar un script

Paso 3

Cargar un fichero de texto y arreglar un error de compilacin

Paso 4

Examinar variables durante la ejecucin del script

Paso 5

Guardar el script como un fichero de texto

Paso 6

Modificar un script existente

Ejercicio 2: Escribir y testear scripts


En este ejercicio, teclear su primer script de Avenue y seguir los pasos necesarios para ejecutarlo con xito. Examinar la compilacin y
errores de ejecucin, y aprender tcnicas de depuracin de scripts.
Paso 1

Iniciar ArcView y abrir un proyecto

Si es necesario, inicie ArcView.


Desde el men File (Archivo), elija Open Project (Abrir Proyecto). Muvase al directorio exercice (vea pg.1-20). Haga doble clic
en ex2.apr para abrir el proyecto de este ejercicio.
Cuando abra el proyecto, ver la ventana de proyecto vaca.

Paso 2

Escibir, compilar, ejecutar y renombrar un script

Ahora, crear su primer script, que har aparecer un mensaje de saludo.


En la ventana de proyecto, haga clic en el icono Scripts, entonces con clic en New (Nuevo) se abre un nuevo script.

figura
Aparece una nueva ventana de script vaca llamada Script1.

Figura
Primero, teclee el script, incluyendo dos comentarios. Los comentarios son una forma de documentar su trabajo. Un apstrofe indica un
comentario en Avenue.
En la primera lnea, teclee un comentario que contenga su nombre y la fecha. En la segunda lnea teclee un comentario
describiendo el script que ha hecho. En la tercera lnea cree y visualice una caja de mensaje.

Teclee lo siguiente:
MsgBox. Info (Hello World,Welcome Message)
Info es un requerimiento de Avenue que tiene dos parmetros: el primero es el mensaje que se visualiza en la caja de mensaje y el
segundo es el ttulo de la barra en la ventana de la caja de mensaje. Aprender ms sobre requerimientos en la siguiente seccin.
Su script ser ahora este, salvo sus comentarios que sern distintos.

figura
Observe que el botn a la derecha del botn de compilacin, usado para ejecutar y depurar el script, est inhabilitado antes de compilar el
script.
Haga clic en el botn Compile (Compilar) para chequear los errores y compilar el script.

Figura
Ahora que es script est compilado, el botn Compilar est inhabilitado y los otros botones aparecen habilitados.
Haga clic en el botn Run (Ejecutar) para ejecutar y testear el script.

Figura
Cuando aparezca el mensaje Hello, haga clic en OK para hacer desaparecer la ventana del mensaje.

Figura
Ha ejecutado con xito su primer script; ahora est preparado para darle un nombre descriptivo.

Desde el men Script, elija Properties (Propiedades). En la caja de dilogo del script, cambie el nombre del Script1 a Hello,
entonces haga clic en OK.

Figura
Observe los cambios en el ttulo de la ventana del script y en la lista de scripts de la ventana del proyecto. Si salva el proyecto, el script
Hello se guardar con el fichero del proyecto (ex2.apr) y lo ver la prxima vez que abra este proyecto.

Paso 3

Cargar un fichero de texto y arreglar un error de compilacin

En este paso, cargar un fichero de texto que contiene un cdigo de Avenue, en una ventana de Script. El cdigo contiene un error de
compilacin que usted arreglar.
En la ventana del proyecto, haga clic en el icono Scripts, y luego en New para abrir un nuevo script. Aparecer una ventana
llamada Script1.
Haga clic en el botn Load Text File (Carga Fichero de Texto).

Figura
Muvase al directorio data y seleccione el fichero employee.ave. Examine las variables creadas en este script: name1, name2,
empAge y tehMesage. Tres de las variables son cadenas de texto y la variabla empAge es un nmero. Aprender ms sobre variables en
la seccin 3.

Figura
Haga clic en el botn Compile (Compilar) para compilar el script. Aparecer el siguiente mensaje de error debido a que la variable
theTitle (usada como parmetro de MsgBox.Info) no ha sido definida.

Figura

Haga clic en OK para hacer desaparecer el mensaje de error.


Para fijar el error, aada esta lnea al script, antes del estamento MsgBox.Info:
theTitle = Employee Data

El script final ser este:

Figura
Haga clic de nuevo en el botn Compile y el script se compilar con xito.
Concatenar cadenas de texto
Dos signos de suma (++) se utilizan para concatenar dos cadenas de texto con un espacio entre ellas.

Paso 4

Examinar variables durante la ejecucin del script

Aprender como examinar variables durante la ejecucin del script es una forma de ayuda para depurar sus scripts. Antes de ejecutar un
script, defina un punto de ruptura y examine los valores de las variables.
Utilice el ratn, haga clic y arrastre resaltando hasta Name and Age:, entonces haga clic en el botn Toggle Breakpoint
(Conmutar Punto de Ruptura):

figura
Despus de aadir el punto de ruptura, haga clic en Run para ejecutar el script. No aparecer ninguna caja de mensaje ya que la
ejecucin se ha detenido en el punto de ruptura (ej. Antes de llegar a la lnea de MsgBox.Info)
Ahora haga clic en el botn Examine Variables (Examinar variables).

figura
Observe que todas las variables tienen un tipo y un valor excepto theMessage y theTitle. El punto de ruptura se encuentra antes de que
estas variables sean asignadas.

figura
Haga clic en OK para hacer desaparecer la ventana. Entonces borre los puntos de ruptura haciendo clic en el botn Toggle
Breakpoint.

figura
Ahora en el script, haga clic en la palabra MsgBox, entonces haga clic en el botn Toggle Breakpoint. MsgBox est resaltada.
Haga clic en el botn Run y examine las variables con el botn Examine Variables. Ahora todas las variables tienen un valor asignado.

figura
Haga clic en el botn Run para continuar la ejecucin del script.

figura
Haga clic en OK para hacer desaparecer la ventana de mensaje.
Paso 5

Guardar el script como un fichero de texto

Ahora, guardar su script como un fichero de texto.


Haga clic en el botn Write Text File (Salvar como fichero de texto)

figura
En el buscador de archivos de script, muvase al directorio pavetemp y llame al fichero employee.ave.
Haga clic en OK para guardar el script.
Este fichero de texto se guarda en un lugar aparte del fichero de proyecto.

Paso 6

Modificar un script existente

Cambie las variables en el script employee.ave a su nombre y edad y ejecute el script de nuevo. Intente, modificar el mensaje y ttulo en
la caja de mensaje. Para hacer un pequeo ruido, aada la siguiente lnea justo antes de la lnea de la caja de mesaje:
System.Beep.

Fin

S E C C I N 3
Introduccin a objetos y requerimientos

Introduccin a objetos y requerimientos.......................................................... 3-2


Construir estamentos en Avenue............................................................... 3-4
Usar estamentos de asignacin................................................................. 3-6
Usar variables............................................................................................ .3-8
Usar enumeraciones.................................................................................. .3-10
Usar nmeros............................................................................................. 3-12
Usar cadenas..............................................................................................
3-14
Usar cajas de mensaje............................................................................... 3-12
Expandir requerimientos.............................................................................
3-14
Ayuda en lnea en Avenue.................................................................................. 3-20
Obtener la ayuda para requerimientos....................................................... 3-22
Ejercicio 3: Escribir estamentos de Avenue....................................................

.3-25

Introduccin a objetos y requerimientos


ArcView est compuesto de objetos
Los objetos tienen propiedades que se modifican con requerimientos
Los objetos y requerimientos confeccionan los estamentos de Avenue.
Aplicaciones

Proyectos

Figura

figura

Vistas
figura

Controles
figura

Introduccin a objetos y requerimientos


En esta seccin, se comentan algunos de los conceptos bsicos de la programacin orientada a objetos. Examinar como se manejan los
objetos del GIS de ArcView mediante requerimientos. Tambin utilizar la ayuda en lnea para encontrar los requerimientos de las
operaciones que quiera realizar. Aprender como construir estamentos en Avenue, y como usar cadenas, nmeros, y enumeraciones en
su primer script de Avenue.
Objetos
Un objeto es una entidad que representa algo en su trabajo con ArcView. Los objetos son elementos de la interfaz tales como
controles y ventanas de documentos, o pueden ser componentes de un proyecto como vistas o composiciones o pueden ser elementos
bsicos de Avenue tales como nmeros, fechas, booleanos y cadenas, o pueden ser primitivas grficas tales como puntos, lneas u otras
superficies.
Requerimientos
Un requerimiento en Avenue le permite crear, manejar y manipular o proporciona informacin sobre objetos. Por ejemplo, puede
aadir un tema a la vista enviando a la vista el requerimiento AddTheme, o encontrar un documento especfico en un proyecto enviando al
proyecto el requerimiento FindDoc, o cambiar el icono del botn mediante el requerimiento SetIcon enviado a un objeto botn.

Construir estamentos en Avenue


Los requerimientos se envan a los objetos
Los estamentos tienen el formato: Objeto.Requerimiento
av.GetProject
theView.Print
System.Beep
Los requerimientos necesitan parmetros: Objeto.Requerimiento (parmetros)
av.Resize (800,1000)
theView.SetName (Redlands)
theProject.FindDoc (Chart1)
theButton.SetIcon (dollar)
Los estamentos con nmeros: Objeto Requerimiento Objeto
2 + 7
x - 25
theValue * 100
theCount / 8

Construir estamentos en Avenue


Los objetos y requerimientos permiten realizar operaciones, deben estar estructurados en estamentos. Cree un estamento enviando a un
objeto un requerimiento utilizando una sintaxis particular. La sintaxis general de un estamento es Objeto. Requerimiento.
Parmetros
La mayora de los requerimientos necesitan parmetros que proporcionan informacin especfica. Un parmetro puede ser el
nombre de un documento, una cadena de un ttulo o el nmero de segundos de retraso. La clase de parmetros est definida por el
requerimiento. Por ejemplo, Resize requiere dos nmeros, FindDoc requiere una cadena, FindTheme requiere una cadena, e Info
requiere dos cadenas.
Estamentos con nmeros
Cuando se realizan operaciones matemticas se escriben convencionalmente con estamentos con nmeros y la sintaxis es Objeto
Requerimiento Objeto.

Usar estamentos de asignacin


Un requerimiento enviado a un objeto devuelve otro objeto
Asigna una variable al objeto devuelto
aNumber = 4+40
aDoc = theProject.FindDoc (World)
aString = theTheme.GetName
aTheme = theView.FindTheme (Canada)

nmero
documento
cadena
tema

Asigna variables directamente


x = 7
companyTitle = JB Global Systems, Inc.
aConstant = 1.5
Asigna variables locales o globales

nmero
cadena
nmero

myLocalVar = 25 * 23
_myGlobalVar = myValue * 37
_theTheme=theView.FindTheme(Canad)

local para el script


global para el proyecto
global

Usar estamentos de asignacin


El resultado de enviar un requerimiento a un objeto es otro objeto. Use un estamento de asignacin para asignar una variable al objeto
devuelto. La clase de la variable se define mediante un requerimiento: por ejemplo, GetProject devuelve un proyecto, FinDoc devuelve un
documento, FindTheme devuelve un tema, Info devuelve una cadena y * devuelve un nmero. Tambin puede asignar una variable, una
cadena o nmero teclendolo a la derecha de un signo igual.
Variables locales
Una variable local es utilizable slo en el script en el que se encuentra asignada.
Variables globales
Una variable global est precedida de un signo de subrayado (_). Una vez que son asignadas, estas variables se pueden utilizar
en todos los scripts del proyecto actual.
Es posible utilizar la misma variable global en varios proyectos. Los scripts del sistema Project.Open y Project. New contienen una
lnea av.ClearGlobals, que limpia las variables globales. Usted puede editar los scripts y borrar esta lnea. Sea cuidadoso, ya que la
memoria para las variables globales permanece asignada an despus de cerrar el proyecto y abrir uno nuevo.

Comprensin de variables
Las variables de Avenue se refieren a objetos. Una variable se crea cuando aparece a la izquierda del estamento de asignacin. La
variable referencia el objeto a la derecha del signo igual. Para ms informacin, vea la ayuda de temas: Working assignement statements
y variables, Local y global variables.

Usar variables
No declarada o no definido su tipo
Debe comenzar con una letra o signo de subrayado
No diferencia la maysculas de las minsculas
El compilador de Avenue encuentra conflictos con palabras reservadas
view = theProject.findDoc (Redlands)

figura

Denominacin de las variables


comienzan con una letra minscula
las palabras importantes comienzan con letra mayscula
theViewWindow
newCustomerNumber
companyTitleString

Usar variables
Cuando use variables, debera aplicar ciertas normas y convenciones de nombres.
Normas en variables
Algunos lenguajes de programacin necesitan que especifique el tipo de dato (ej. Entero, coma flotante, cadena) para una variable
antes de usarla. Las variables en Avenue no se declaran. Estn definidas desde la primera vez que aparecen en el estamento de
asignacin.
Los nombres de variables deben comenzar con una letra o signo de subrayado, pero pueden contener nmeros.
restricciones en la longitud del nombre de la variable. Avenue no diferencia maysculas de minsculas

No hay

Los conflictos entre los nombres de variables y las palabras reservadas, tales como clases y nombres de requerimientos, se
identifican al compilar. El compilador de Avenue muestra un mensaje de error con el nombre que produce el conflicto.
Convenciones en la denominacin de Variables
Por convencin , se mezclan minsculas y maysculas para clarificar el estilo. Las variables comienzan por letras minsculas y las
palabras importantes comienzan por una letra mayscula.
Para ms informacin sobre estilos de denominacin de variables.
Vea el apndice B, Pautas de Codificacin en Avenue, en la documentacin del software Utilizando Avenue.

Usar enumeraciones
Una serie de posibilidades utilizadas como parmetros de un requerimiento
Usadas para asignar el tipo de grfico, fichero o campo
Ejemplo: asignando el tipo de grfico

theChartDisplay.SetType (#CHARTDISPLAY_PIE)
figura
theChartDisplay.SetType (#CHARTDISPLAY_COLUMN)
figura

Usar enumeraciones
Las enumeraciones son distintas posibilidades que pueden ser usadas como parmetros de requerimientos. Las enumeraciones
comienzan con el signo (#). Se usan con algunas clases incluyendo ficheros, grficos y campos.
La clase grfico, por ejemplo, tiene enumeraciones llamadas ChartDisplayEnum que son parmetros del requerimiento SetType. Cada
ChartDisplayEnum define un tipo diferente de grfico. Los posibles ChartDisplayEnum son:
#CHARTDISPLAY_AREA
#CHARTDISPLAY_LINE
#CHARTDISPLAY_PIE
#CHARTDISPLAY_COLUMN
#CHARTDISPLAY_BAR
#CHARTDISPLAY_XYSCATTER
Ejemplo
Antes de determinar el tipo de grfico de visualizacin con el requerimiento SetType debe encontrar primero el grfico y entonces
obtener su presentacin.
TheChart = av.GetProject.FindDoc (Chart1)
TheChart.GetChartDisplay.SetType (#CHARTDISPLAY_COLUMN)
TheChart.GetWin.Open

Usar nmeros
La evaluacin numrica es de izquierda a derecha, a menos que se usen parntesis
x = 2 + 3 * 3
x = 2 + (3 * 3)

x = 15
x = 11

Operaciones matemticas
posNumber = -29.Abs
wholeNumber = 35.689.Round
maxNumber = 35 Max 333

devuelve 29
devuelve 36
devuelve 333

Formato de los nmeros


Number.SetDefFormat (d.ddd)
aScript.SetNumberFormat (d.ddd)
anyNumber.SetFormat (d.dd)

toda la aplicacin
todo el script
un nmero particular

Usar nmeros
La evaluacin numrica es de izquierda a derecha, a menos que se cambie el orden con parntesis.
matemticas estndar, incluyendo logaritmos, races cuadradas y medidas angulares.

Realiza las operaciones

Formato de nmeros
Puede utilizar formatos numricos utilizando un formato de cadena con uno o tres requerimientos: SetDefFormat,
SetNumberFormat o SetFormat. Los formatos numricos se especifican para la aplicacin, para un script o un nmero especfico
respectivamente.
El formato de cadena define como se sitan algunos decimales a la izquierda y derecha del punto decimal. Por ejemplo, un
formato de cadena (d.ddd) significa que al menos uno de los dgitos aparece a la izquierda del punto decimal y exactamente tres dgitos
aparecen a la derecha.
Conversin de nmeros

Un nmero puede convertirse a cadena o a duracin (nmero de das) usando AsString y AsDays. Los valores en radianes y
grados pueden convertirse usando los requerimientos AsRadians y AsDegrees. Observe que los requerimientos de medidas angulares
tales como Cosine y Sine (coseno y seno), utilizan valores en radianes.
Ejemplo de conversin de nmeros:
numRadians = 90.AsRadians
numDegrees = numRadians.AsDegrees
aString = maxNumber.AsString
numDays = 4.AsDays

Usar cadenas
Cadenas concatenadas
theNewString = Good Morning ++ Michael
theNewString = Good Morning + Michael
MsgBox.Info (TheNewString,)
Figura

Nueva lnea, tabulacin y retorno de carro: NL, TAB, y CR


myString = Good Morning + NL + Michael

Figura
Conversin de cadenas
theString = aNumber.AsString

myNumber = String1.AsNumber
NewDate = myString.AsDate

Usar cadenas
Cuando asigne una cadena directamente o la use como parmetro de requerimiento, escrbala entre comillas dobles ( ).
Concatenar cadenas
Puede unir cadenas con los requerimientos + y ++. Usando + concatena cadenas sin ningn espacio entre ellas; y usando ++
concatena cadenas con un espacio entre ellas.
Cadenas especiales
Avenue tiene cadenas especiales para manejar caracteres de nueva lnea, tabulacin y retorno de carro. Estos son NL, TAB , y CR
respectivamente.
Conversin de cadenas
Las cadenas se convierten a nmeros y fechas usando los requerimientos AsNumber y AsDate. Los nmeros y fechas pueden
convertirse a cadenas usando el requerimiento AsString. Buscando la ayuda en lnea para requerimientos que comienza con As... realice
otros requerimientos que conviertan objetos de una clase a otra.

Usar cajas de mensaje


Muestra en pantalla mensajes
MsgBox.Banner (file, seconds. Title) MsgBox.info (message, title)
Figura

figura

Permite al usuario una entrada por teclado


MsgBox.Input (aMessage,Title, defaultString)

Figura

Figura

Usar cajas de mensaje


Las cajas de mensaje visualizan en pantalla informacin o entradas de usuario. Puede visualizar una imagen, un mensaje de error,
informacin general o errores de advertencia. Cree las cajas de mensaje utilizando MsgBox y uno de los siguientes requerimientos :
banner, error, info, o warning.
Obtener e introducir
Las cajas de mensaje de entrada le permiten obtener informacin desde el usuario. Las cajas de mensaje de entrada utilizan tres
cadenas como parmetros del requerimiento Input. La primera cadena es un instruccin o mensaje que usted quiere que el usuario lea, la
segunda es el ttulo de la ventana y la tercera es un valor de entrada por defecto.
asString = MsgBox.Input(aMessage,aTitle,aDefaultString)
Convertir cadenas a nmeros
MsgBox.Input devuelve una cadena. Si necesita usar la cadena devuelta en una operacin matemtica, debe convertirla a un
nmero con el requerimiento AsNumber. Sin embargo, MsgBox.Info toma una cadena como mensaje, que tambin debe convertir el
nmero devuelto a una cadena usando el requerimiento AsString.
Ejemplo:
order = MsgBox.Input (Enter the order amount,
Order, )
orderNum = order.AsNumber
myComm = orderNum * 0.12
myCommString = myComm.AsString
MsgBox.Info (Your commission is ++ myCommString,)
Botn Cancel (Anular)
Si el usuario hace clic en el botn Cancel o no introduce una cadena, se devuelve un valor Nil (nulo). El objeto Nil es un objeto
que no tiene valor. En una seccin posterior (Ramificaciones y bucles), aprender como chequear condiciones con Nil y a realizar un
procedimiento especfico cuando se devuelve Nil.

Expandir requerimientos
El encadenamiento permite combinar requerimientos en un solo estamento:
theProject = av.GetProject
theView = theProject.FindDoc (World)
theTheme = theView.FindTheme (GNF)
Es lo mismo que:
theTheme = av.GetProject.FindDoc(World).FindTheme(GNF)
El anidamiento permite usar un requerimiento como un parmetro de otro requerimiento:
Order = MsgBox.Input (Enter the order amount,
Order Entries,)
myComm = 0.12 * (Order.AsNumber)
MsgBox.Info (Your commission is ++ myComm.AsString,
Total commission)

Expandir requerimientos
El uso de requerimientos puede ser dilatado, incluyendo mltiples requerimientos encadenados a la vez para construir un estamento o
usando un requerimiento como parmetro de otro requerimiento.
Cambiar requerimientos
Puede dilatar la sintaxis del requerimiento Object.Request para incluir varios requerimientos (ej. Object.Request. Request.
Request). Los requerimientos encadenados deberan operar sobre el objeto devuelto desde el primer requerimiento. Por ejemplo:
theProject =av.GetProject
theProject.SetName (ACME GIS)
es lo mismo que:
av.getproject.SetName (ACME GIS)

El nmero de estamentos de asignacin (variables) usadas para llevar a cabo una tarea depende del estilo de estamento. Si encadena
varios requerimientos sin interrupcin en su estamento, use menos estamentos de asignacin. Por ejemplo, los estamentos siguientes:
theProject = av.GetProject
theView = theProject.FindDoc (World)
theTheme = theView.FindTheme (GNP)
pueden acortarse a:
theTheme = av.GetProject.FindDoc(World).FindTheme(GNP)
Observe que la variable, en este caso, theTheme, almacena el objeto devuelto por el ltimo requerimiento de la cadena.
Anidar requerimientos
Los requerimientos y los objetos devueltos, pueden usarse como parmetros de otros requerimientos.
En el ejemplo de anidamiento en la pgina anterior, el requerimiento AsNumber se enva a una variable Order para convertir el
objeto desde una cadena a un nmero y trabajar con el requerimiento *. El requerimiento AsString se enva a la variable myComm para
construir una cadena como primer parmetro del requerimiento Info (enviado a MsgBox).

Ayuda en lnea en Avenue


Contenidos
ndice
Encontrar

Figura
Figura
Figura

Ayuda en lnea en Avenue


La ayuda en lnea de Avenue proporciona al sistema explicaciones detalladas de clases y requerimientos. Desde el men Help (Ayuda)
puede elegir uno de las tres posibilidades del men: Help Topics (Ayuda acerca de ...), How to Get Help (cmo obtener ayuda), y About
ArcView (acerca de ArcView).
Help Topics (Ayuda de temas)
La eleccin de men Ayuda de temas, inicia una ayuda del sistema de ArcView en lnea. Esta ayuda del sistema proporciona un
men en el que encontramos tres opciones: Contenidos, ndice y Encontrar. Los contenidos presenta al usuario una coleccin de libros de
ayuda. Bajo cada libro hay una ayuda de temas. Puede hacer clic en uno de estos temas y la ayuda del sistema saltar a la pgina del
tema.
El Index (ndice) le permite teclear primero unas pocas letras de la palabra que est buscando, y la cremallera del ndice ir a la
primera ocurrencia de sus caracteres. Desde aqu, puede hacer doble clic en la entrada del ndice que quiera o puede hacer clic una vez
en la entrada del ndice que quiere y escoger entonces display. En otro caso, la ayuda del sistema de ArcView saltar a la pgina de
entrada.
La tercera opcin, Find (encontrar), le permite teclear una palabra o palabras y la ayuda del sistema encontrar todas las palabras
que la contengan, tambin puede estrechar la bsqueda, y elegir entonces el tema donde estar la palabra o palabras. La ayuda del
sistema entonces salta a la ayuda acerca de una eleccin.
Como obtener la ayuda
Describe los diferentes modos por los que puede acceder a la Ayuda desde la interfaz de usuario grfica del documento.
Sobre ArcView
Esta posibilidad del men proporciona una ventana en pantalla que le da la versin del producto y la informacin de registro.

Obtener la ayuda para requerimientos


Buscar en el ndice de la ayuda un requerimiento
Examinar Syntax para los parmetros requeridos
Examinar Returns para ver que tipo de objeto es devuelto

Figura Figura

Obtener la ayuda para requerimientos


La ayuda dada para un requerimiento describe qu hace ese requerimiento, cmo trabaja y cmo se relaciona con otros.
Sintaxis
La sintaxis ilustra el formato necesario para los requerimientos de Avenue. Los nombres de los parmetros indican su propsito en
el requerimiento. Cada parmetro es un objeto, y por tanto pertenece a una clase en particular. Haciendo clic en un parmetro aparece
una descripcin de su clase.
Objeto devuelto
La clase del objeto devuelto por el requerimiento est listada. Haciendo clic en el nombre de una clase aparece su descripcin.

Ejercicio 3: Escribir estamentos de Avenue


Paso 1

Iniciar ArcView y abrir un proyecto

Paso 2

Crear un script que calcule los impuestos de ventas

Paso 3

Analizar un estamento de Avenue

Paso 4

Utilizar enumeraciones para cambiar el tipo de grfico.

Paso 5

Requerimientos encadenados para crear un script de una sola lnea

Ejercicio 3: Escribir estamentos de Avenue


En este ejercicio, crear dos scripts (uno para informar sobre los impuestos en una compra, y otro para cambiar el tipo de grfico que
aparecer).
Paso 1

Iniciar ArcView y abrir un proyecto

Si es necesario, inicie ArcView.


Desde el men File (Archivo), elija Open Project (abrir proyecto). Muvase al directorio exercice y haga doble clic en ex3.apr
para abrir el proyecto para este ejercicio.
Cuando abra el proyecto, todos los documentos estarn cerrados excepto la ventana del proyecto.
Paso 2

Crear un script que calcule los impuestos de ventas

Escriba un script que use una caja de mensaje de entrada para pedir al usuario un coste. Calcule los impuestos de venta para las
cantidades introducidas por el usuario, entonces informe del importe de devolucin para el usuario.
Abra el script Exercice 3, Step2. Desde el men Help (Ayuda), elija Help Topics (Ayuda Tema). Busque el ndice para MsgBox.
Encuentre el requerimiento Input (entrada) y conteste las siguientes cuestiones.
Cuales son los tres parmetros para el requerimiento Input, y que tipo de objeto es cada parmetro (ej. Nmero, cadena, vista, o
tema)?
Parmetro 1:
Parmetro 2 :
Parmetro 3:

Objeto:
Objeto:
Objeto:

El requerimiento de entrada devuelve un objeto que puede almacenar en una variable.


Qu tipo de objeto es devuelto?
Ahora escriba el script que usa la caja de mensaje de entrada para que el usuario introduzca la cantidad de la compra.
Cree una variable llamada theCostString para enviar el requerimiento Input a MsgBox. Enve el mensaje Enter the Cost, y como
ttulo de mensaje de la caja, Calculate Tax, y utilice 0.00 como valor por defecto.
Convierta la cadena cost a un nmero, y calcule el 7.5 por ciento de impuesto sobre el coste.

Cree una variable theCostnumber convirtiendo theCostString a nmero con el requerimiento de conversin AsNumber.
Cree una variable theTaxNumber multiplicando theCostNumber por 0.075

Convierta el impuesto de nmero a cadena e informe en una caja de mensaje cual es el impuesto.
Cree una variable llamada theTaxString convirtiendo theTaxNumber a cadena con el requerimiento de conversin AsString.

Use una caja de mensaje Info para informar de theTaxString. El ttulo de la caja ser Your Tax.

Compile y ejecute el script.

Paso 3

Analizar un estamento de Avenue

Abra el script Exercice 3, Step 3.


Revise los siguientes estamentos:
theProject = av.GetProject
theView = theProject.FindDoc (Atlanta)
Para contestar a las siguientes cuestiones, busque en el Help Index (ndice de Ayuda) cada requerimiento:

figura

El requerimiento Getproject se enva a


GetProject devuelve un
El requerimiento FindDoc es enviado a
FindDoc devuelve un

Paso 4

Utilizar enumeraciones para cambiar el tipo de grfico.

En este paso, cambiar el tipo de grfico del grfico Atlanta Banks. Primero examinar los diferentes tipos de enumeraciones.
Abra dos documentos: el grfico Atlanta Banks y el script Exercice 3, Step 4.
Antes de escribir un script, busque cuantos tipos de grficos hay usando lel Index (ndice) de la ayuda para buscar
ChartDisplayEnum (Enumeracin).
Cuntas enumeraciones hay para grficos?
Ahora escribir un script para cambiar los tipos de grfico.
Obtenga el proyecto y busque el documento grfico por su nombre.
Cree una variable theProject enviando el requerimiento GetProject a aplication (av).

Cree una variable theChart enviando el requerimiento FinDoc a theProject. Encuentre el grfico Atlanta Baks.

Luego, tome el rea de visualizacin del grfico y cambie el tipo de grfico


Cree una variable llamada thechartDisplay enviando el requerimiento GetChartDisplay a theChart.
Cambie tipo theChartdisplay con el requerimiento SetType; para el parmetro introduzca la enumeracin
columna.

para un grfico

Compile y ejecute el script para testearlo.


5

Cadena de requerimientos para crear un script de una sola lnea

Abra el script en blanco Exercice 3, Step 5 y con una cadena de requerimientos, desde el Exercice 3, Step 4 introduzca el script en una
sola lnea. Vea la pgina 3-5 y 3-7 para informacin y ejemplos de requerimientos encadenados.
Compile y ejecute este script de una lnea.

Fin

S E C C I N 4

Comprensin de las clases en ArcView


Comprensin de las clases en ArcView............................................................ 4-2
Clases e instancias.....................................................................................
4-4
Propiedades de los objetos........................................................................ 4-6
Requerimientos a instancias...................................................................... 4-8
La jerarqua de clases................................................................................ 4-10
Diagramas Modelo de Objeto.............................................................................

4-12

Ayuda para las clases................................................................................ 4-14


Bsqueda de ayuda desde un script.......................................................... 4-16
Ejercicio 4: Bsqueda de ayuda para las clases..............................................

4-19

Comprensin de las clases en ArcView


Los objetos estn organizados dentro de clases
Vistas

Controles

Formas

Comprensin de las clases en ArcView


En esta seccin, se discuten algunos de los conceptos bsicos de la programacin orientada a objetos. Examinar como se crean,
cambian y manejan los objetos en Avenue mediante requerimientos. Los objetos y requerimientos se organizan segn la Jerarqua de
Clase de Avenue. Tambin usar la ayuda en lnea para navegar por la jerarqua de objetos y encontrar los requerimientos vlidos para
las operaciones que quiera realizar.

Clases e instancias
Una clase es un anteproyecto para crear objetos.
Cada clase tiene un nico grupo de propiedades y requerimientos
Las instancias son objetos creados desde la misma clase
Crear objetos usando requerimientos de clase.
aProject = Project.Make
myView = View.Make

Clase Vista
Propiedades
Requerimientos

Figura

Instancias de la clase vista

Clases e instancias
Una clase es un anteproyecto que define las propiedades y requerimientos para un tipo especfico de objeto. Todos los objetos creados
desde la misma clase son referidos como instancias de la clase. Tienen la mismas propiedades y pueden realizar los mismos
requerimientos. Por ejemplo, todas las vistas tienen un mapa y una tabla de contenidos, y pueden abrirse o cerrarse.
Instancias
Cada objeto es nico, nica instancia de la clase desde la que fue creado. Puede crear cada instancia de una clase nica
envindole el requerimiento que cambia sus propiedades. Por ejemplo, podra asignar a dos botones diferentes iconos y diferentes scripts
para hacerles diferentes y llevar a cabo diferentes operaciones.
Ejemplo El mejor amigo del hombre

Clase Perro

Figura

Rex

Figura

Sparky

Instancias de la clase Perro


Requerimientos de clase
Si un objeto no existe, utilice un requerimiento de la clase para crear una nueva instancia. El requerimiento Make es un ejemplo de
requerimiento de una clase; este requerimiento crea una nueva instancia (ej. Un objeto nuevo) de la clase a la que es enviado.

Propiedades de los objetos

Los objetos de ArcView tienen propiedades (Atributos)


Las propiedades definen caractersticas de un objeto
Vista

Propiedades

Figura

Figura

Botn

Propiedades

Figura

Figura

Propiedades de los objetos


Los objetos son elementos con los que se trabaja en el GIS ArcView , tales como vistas, temas, GUIs, controles, y grficos. Cuando abre
una vista, est trabajando con un objeto Vista; cuando aade un botn a la GUI, est aadiendo un objeto Botn al objeto GUI. Los
objetos pueden ser tambin nmeros, cadenas, y fechas.
Cada objeto tiene una serie de propiedades (atributos) que describen como es el objeto y su apariencia. Por ejemplo, una vista tienen un
nombre, temas, y una proyeccin; un botn tiene un script asignado, un icono y la propiedad de ser visible.
Ejemplo El mejor amigo del hombre
Propiedades

Figura
2 orejas
4 patas
rabo
hocico
odia a los gatos

Sparky

Requerimientos a instancias
Manipular objetos y sus propiedades
Proporcionar objetos o propiedades de objetos
myView = aProject.FindDoc (View1)
theTheme = myView.FindTheme (Population)
myView.GetName
Chequear y cambiar los valores de las propiedades
theTheme.IsVisible
myView.SetName(Atlanta)
theTheme.SetVisible(true)

Clase vista

Figura

Figura

Requerimientos a instancias
Los requerimientos de Avenue le permiten recuperar objetos y sus propiedades, y chequear o cambiar las propiedades de los objetos. Por
ejemplo, puede encontrar una vista existente, asignar el nombre a una vista, y cambiar la visibilidad de un tema enviando los
requerimientos apropiados a un objeto.
La mayora de requerimientos recuperan o modifican objetos existentes, y se llaman requerimientos de instancias. Los requerimientos de
instancias se llaman con prefijos estndar basados en sus funciones.
Los requerimientos que comienzan con Get..., tales como GetName y GetThemes, devuelven informacin sobre las propiedades de los
objetos. Otros requerimientos Get..., como GetProject, GetActiveDoc y GetActiveField, acceden a objetos cuando el objeto est activo.
Set... se utiliza para requerimientos que asignan nuevos valores a las propiedades de los objetos, tales como SetName, SetVisible, y
SetActive.
Los requerimientos que empiezan con Find..., como FindTheme y FindDoc, acceden a los objetos por medio de su nombre.
Ejemplo El mejor amigo del hombre
Propiedades

Figura
duerme
se sienta
huele
ladra
me trae un palo

Sparky

Ver todos los requerimientos


Puede ver todos los requerimientos que se incluyen en Avenue cargando una ampliacin de muestra llamada el Class Browser. Esta
ampliacin puede acceder desde los contenidos de la ayuda segn una muestra de scripts y ampliaciones : Proyectos.

La jerarqua de clases
La Jerarqua de Clase organiza las clases desde lo general a lo especfico.
Cada clase hereda todas las propiedades y requerimientos desde su superclase

Figura

Figura

La jerarqua de clases
Las clases se organizan desde lo general a lo especfico ( ej. Desde la superclase a la clase). La relacin entre clases est representada
en la Jerarqua de Clase. La Jerarqua de Clase comienza con el objeto ms general, Obj. Todos los otros objetos son subclases de Obj.
La ayuda en lnea incluye la jerarqua de clase completa y la lista de subclases para cada clase.
Herencia
Una vez definido el nivel de la superclase, las propiedades y requerimientos se heredan a todas las subclases. La herencia
permite que las propiedades y requerimientos se definan slo una vez en la jerarqua. Cada subclase puede tener tambin su propias y
nicas propiedades y requerimientos.
Por ejemplo, las clases Vista y Tabla son subclases de la clase Doc, y ambas heredan los requerimientos tales como SetName y Open
desde la clase Doc. Las Vista y la Tabla tambin tienen requerimientos nicos. Por ejemplo, View tiene GetThemes y ZoomIn, y Table
tiene Sort y Summarize.
Ejemplo El mejor amigo del hombre
Clases

Figura

Instancias

Sparky

Rex

Diagramas Modelo de Objeto


Muestra las relaciones entre objetos
Herencia

Asociacin
uno a uno
cero o ms
cero o uno

Agregacin (compuesto de )

Figura

Diagramas Modelo de Objeto


Los Diagramas Modelo de Objeto muestran la relacin entre las clases de Avenue.
Herencia
La herencia se simboliza mediante un tringulo, es una relacin clase-a-subclase. Por ejemplo, Documento es la superclase de las
clases grfico, composicin, Sed y Vista. El tringulo apunta a la superclase, o clase ms general. La herencia se describe con detalle en
la jerarqua de clases.
Asociacin
Una asociacin entre dos clases se indica con una lnea dibujada entre ellas. Una lnea representa una asociacin uno-a-uno.
Una lnea que acaba en un punto negro representa una asociacin mltiple. Una asociacin mltiple puede ser de dos tipos. Una slida
muestra una asociacin cero-a-ms y una hueca muestra una asociacin cero-a-uno.
Agregacin
La composicin de relaciones, simbolizada con un diamante, existe entre una agregacin y las clases que la constituyen. Un
proyecto, por ejemplo, est compuesto de documentos y docGuis. El diamante se dibuja en la clase agregada.
Diagramas Modelo de Objeto
Para encontrar un Diagrama Modelo de Objeto en la ayuda de Avenue, busque Functional Overview of ArcView Classes. Cada
tema tiene un salto a su Diagrama Modelo de Objeto.
Nota
Una versin abreviada de la Tcnica de Diagrama Modelo de Objeto (OMT) para modelizar la relacin entre clases, aparece en
este manual. Vea Rumbaugh, James, et al. 1991. Object-Otiented Modeling and Design. Englewood Cliffs: Prentice-Hall.
Ejemplo El mejor amigo del hombre

Juguetes
Baln Hueso

Perro
Ropa

Cuerda
Collar

Cadena

Chapa

Ayuda para las clases


La herencia From identifica la superclase
La herencia By identifica todas las subclases
Las listas de Requerimientos de Clase se envan directamente a la clase
Las listas de Requerimientos de Instancias se envan a una instancia de la clase

Figura

Figura

Ayuda para las clases


La ayuda para cada clase describe el propsito de la clase y cmo trabaja sta. La descripcin de la clase incluye una visin de conjunto
de la clase, con varios temas para detallar su posicin en la jerarqua de clase, define sus requerimientos e indica la relacin entre clases.
Heredar desde (From)
Identifica la superclase de la clase. Si no puede encontrar un requerimiento de una clase, busque su superclase para heredar sus
requerimientos.
Heredar a (By)
Identifica las subclases de la clase. Esta seccin no aparece si no se heredaron las clases desde la clase.
Requerimientos de clase
Liste los requerimientos que se pueden hacer directamente a la clase (no a instancias de clase). Haga clic en el nombre del
requerimiento para ver la ayuda detallada.
Requerimientos de instancias
Liste los requerimientos que se pueden hacer a alguna instancia de la clase. Haga clic en el nombre del requerimiento para ver la
ayuda detallada.

Bsqueda de ayuda desde un script


Seleccionar un objeto o requerimiento, y hacer clic en el botn de Ayuda del script

Figura
Bsqueda de ayuda desde un script
Haciendo clic en el botn de Ayuda del Script se inicia una bsqueda de ayuda del sistema de Avenue, usando el cdigo seleccionado
actualmente en su script. Cuando necesite la ayuda para clases,
requerimientos, o comandos, seleccinelo (seleccionndolo en el
script) y entonces haga clic en el botn de ayuda del script.
Si la clase, requerimiento o comando que ha seleccionado tiene un slo tema, la ventana de ayuda del tema lo mostrar en pantalla. Por
otra parte, la caja de dilogo muestra los mltiples temas encontrados para su seleccin.

Ejercicio 4: Bsqueda de ayuda para las clases


Paso 1

Iniciar ArcView y abrir un proyecto

Paso 2

Navegar por la Jerarqua de Clase

Paso 3

Examinar la clase Aplication (Aplicacin)

Paso 4

Examinar la clase Doc

Paso 5

Examinar la clase Vista

Ejercicio 4: Bsqueda de ayuda para las clases


En este ejercicio, utilizar la ayuda del sistema de Avenue para preguntar una serie de cuestiones.
Paso 1

Iniciar ArcView y abrir un proyecto

Si es necesario inicie ArcView.


Desde el men File (Archivo), elija Open Project (Abrir Proyecto). Muvase al directorio exercice. Haga doble clic en ex4.apr
para abrir el proyecto de este ejercicio.
Cuando el proyecto se abra, observe que aparece la ventana del proyecto y una ventana llamada Script1.

Paso 2

Navegar por la jerarqua de clases

Conteste las siguientes cuestiones navegando por la Jerarqua de Clase.


Desde el men de ayuda, elija Help Topics, Ayuda de temas.
Haga clic en Contents (Contenidos) y navegue a la Jerarqua de Clase de ArcView como se muestra a continuacin:

Figura
Cul es la primera clase de la Jerarqua de Clase?
Haga clic en Obj y salte a la ayuda de temas para preguntar lo siguiente:
Cules son los atributos (propiedades) de la clase Obj?
Haga clic en Back (Volver) para volver a la Jerarqua de Clase.
Muvase por la Jerarqua de Clase y observe que todas las clases se organizan desde la general a las especficas (ej. Desde la
superclase a las subclases). Ahora conteste las siguientes cuestiones:
Cul es la superclase de File ?
Cules son las subclases de File?
Cul es la superclase de MsgBox?
Cules son las subclases de MsgBox?
Cul es la superclase de Shape?
Cules son las superclases de Shape?
Qu subclase de Shape tiene sus propias subclases?
Paso 3

Examinar la clase Aplication

Examine los atributos de la clase Aplication (Aplicacin) y conteste las siguientes preguntas:
Liste los tres atributos de la clase Aplicacin que tiene el comando Active:
Qu atributo se maneja si ArcView puede personalizarse?
Qu requerimiento devuelve a ArcView la personalizacin?
Haga clic en Back para volver a la Jerarqua de clase.
Paso 4

Examinar la clase Doc

Ahora examine la clase documento (Doc)


Desde el men de ayuda, elija ayuda de temas.
Haga clic en Contents y navege a Functional overview of ArcView classes como se muestra a continuacin:

Figura
Haga clic en Aplication Framework para saltar al Diagrama Modelo de Objeto (OMD).

Figura
Qu smbolo denota la relacin de herencia?

Qu smbolo denota la relacin de composicin?


En el OMD, haga clic en la caja de la clase Doc y conteste a las siguientes cuestiones.
Cul es la superclase de un Doc?
Cul es la subclase de Doc?
DocGUI es una subclase de Doc?
Liste los atributos de la clase Doc

Observe que la herencia (superclase-subclase) que ve en la ayuda del tema clase Doc tambin estaba expresada en el Diagrama Modelo
de Objeto.
Paso 5

Examinar la clase Vista

Ahora, conteste algunas cuestiones sobre la clase Vista.


Desde la opcin Index (ndice), tipo View (clase Vista), haga clic en Display (Presentacin en pantalla), o en el Diagrama Modelo de Objeto
haga clic en View (Vista) para obtener el tema vista.
Cul de los dos atributos de la clase Vista tiene alguna conexin con grficos en la vista?
Cul es la superclase de Vista?
Cules son la subclases de Vista?
Es el Tema una subclase de la Vista?
Qu son los requerimientos de Clase para la clase Vista?

Enmarque en un crculo los requerimientos de la siguiente lista, que puede entender una vista. Puede utilizar el ndice de la ayuda para
encontrar un requerimiento o puede moverse con la cremallera de la ayuda de temas. Si no puede encontrar un requerimiento bajo la
ayuda del tema clase Vista, puede buscar su superclase.
Make
GetColor
GetActiveGUI
SetName

Is
Is Ready
Create
AddTheme

Revise sus respuestas a las cuestiones anteriores abriendo el script Results-Exercice 4.

Fin

S E C C I N 5
Comprensin de eventos

Comprensin de eventos................................................................................... 5-2


Eventos del control..................................................................................... 5-4
Asignacin de un script a un control...........................................................
Eventos del documento.............................................................................. 5-8
Asignacin de un script a un proyecto........................................................
Ejercicio 5: Asignacin de scripts a eventos.................................................. 5-12

5-6
5-10

Comprensin de eventos
Cuando un usuario acta en una aplicacin, se produce un evento.
Los scripts se asignan a eventos.
Cuando se produce un evento, se ejecuta un script.

Control + Script evento + Evento = Operacin ArcView

Figura

Figura

Figura

Figura

Comprensin de eventos
Los eventos como click, apply, open y close, son propiedades especiales de los controles, documentos y temas. Puede asignar scripts a
estos eventos. Una vez que lo haga, el script asignado se ejecuta si se produce el evento. Los eventos se desencadenan al actuar el
usuario en la GUI.

Eventos del Control


La accin del usuario en un control provoca un evento Click o Apply.
Click en un control ... ejecuta un script.

Figura

Figura

Figura

Apply en una herramienta... ejecuta un script.

Eventos del Control


Los tres tipos de eventos asociados con controles son Click, Apply, y Update. El usuario provoca los eventos Click y Apply, actuando
sobre los controles de la GUI.
Click
Un evento Click se produce cuando se usa un control. Cuando se ejecuta la propiedad clic, se ejecuta el script asignado al control
en que se ha hecho clic.
Apply
Un evento Apply se produce cuando se usa una herramienta en un documento ventana. Cuando aplica una herramienta en un
documento, se ejecuta el script asignado al evento Apply del control.
Comprensin de eventos Update (de actualizacin)
Los eventos Update se producen cuando el usuario realiza una accin que cambia el estado del documento activo, tales como aadir un
tema a una vista, cambiar la visibilidad de un tema, hacer una seleccin, o un aumento del dibujo. Un script asignado a un evento Update
se ejecuta cuando se produce el evento Update. Para ms informacin, busque la ayuda del tema: Understanding Events.

Asignacin de un script a un control


Doble-clic es una propiedad evento del control
Elija un script desde el Gestor de Scripts

Botn Zoom In

Figura

Herramienta Chart Color

Figura

Asignacin de un script a un control


En la Caja de Dilogo de Personalizacin , use la lista de propiedades para asignar un script a un control. Haga doble-clic en la propiedad
evento para visualizar el gestor de scripts, y elija el script que se ejecutar cuando se produzca el evento.
El Gestor de Scripts
La Caja de Dilogo del Gestor de Scripts lista todos los scripts que se pueden utilizar en el proyecto. El gestor de scripts lista
todos los scripts del sistema Gis ArcView y los nuevos scripts creados en el proyecto actual o en el proyecto por defecto home.
Propiedades Evento
Todas los campos de men, botones, y herramientas tienen una propiedad click y responden al evento click, las herramientas
tienen tambin una propiedad Apply, y responden al evento Apply.
Usando ambas propiedades, puede tener un script que se ejecute cuando haga clic en el botn y otro cuando se aplique una
herramienta. Por ejemplo, haga clic en la herramienta Chart Color (Color del Grfico) y ejecute un script que mostrar en pantalla la
paleta de color. Aplicando la herramienta Chart Color, en la ventana del grfico, se ejecuta otro script que cambia el color de un dato
sealado.
Asignacin incorrecta de propiedades evento
Si usted asigna incorrectamente un script a la propiedad Click y sta debe ser Apply, el script se ejecuta sin esperar a que el
usuario provoque el evento Apply (ej. Para usar el cursor en la ventana). Por ejemplo, si su script espera que el usuario haga una
seleccin desde la pantalla, asegrese de que asigna al script la propiedad Apply; en caso contrario, el script se ejecutar sin esperar a
que el usuario haga la seleccin.

Eventos del Documento


Todos los documentos tienen eventos open (abrir) y close (cerrar).
Los proyectos tambin tienen los eventos Startup (arranque) y Shutdown (cierre).
Cuando se abre o cierra la ventana de un documento, se ejecuta un script.

Abre un proyecto...

...se ejecuta el script de arranque

figura

Figura

Figura

Cierra un proyecto...

...se ejecuta el script de cierre

figura

Figura

Figura

Eventos del documento


Los tres tipos de eventos asociados con documentos son open, close, y update. El script del evento open (abrir), se ejecuta cuando se
abre un documento; el script del evento close (cerrar) se ejecuta cuando se cierra un documento; y el script de evento update (actualizar)
se ejecuta cuando el estado del documento actual cambia ( vea pg.5-5).
Los proyectos son un conjunto de documentos. Los proyectos tambin pueden tener propiedades de arranque o cierre que se asocian
con scripts. Por ejemplo, un script de arranque, puede iniciar un proyecto presentando en pantalla una imagen (banner), conectar una
base de datos externa, o preguntar por el acceso a la informacin. Un script de cierre, puede desconectar la base de datos externa,
borrar ficheros temporales, o dar un mensaje de despedida.

Asignacin de un script a un proyecto


Asigna un script al proyecto en la caja de dilogo de Propiedades del Proyecto.

Figura

Asignacin de un script a un proyecto


Para asignar scripts a las propiedades de arranque y cierre de un proyecto, en la caja de dilogo de Propiedades del Proyecto, teclee el
nombre del script, o haga clic en el botn Load System Script (Carga de Script del Sistema) y elija un script desde el Gestor de Scripts.
Cuando se inicia ArcView, ste lee el proyecto por defecto del sistema, el proyecto por defecto home del usuario (si existe uno), y
entonces el script de arranque (si hay alguno asociado con el proyecto actual). Vea la seccin 1, El Entorno de Desarrollo de ArcView,
para ms informacin sobre el sistema y los ficheros de proyecto por defecto de home.
Asignar un script al documento
Para asignar un script a los eventos abrir y cerrar de un documento, use estos requerimientos:
aDoc.SetOpenScript (aScriptName)
aDoc.SetCloseScript (aScriptName)
Para ms informacin, busque la Ayuda del Ttema: Doc.

Ejercicio 5: Asignacin de scripts a eventos


Paso 1

Iniciar ArcView y abrir un proyecto

Paso 2

Crear un script y asignarlo a un evento Click de un botn.

Paso 3

Crear un script nuevo desde los scripts existentes del sistema.

Paso 4

Asignar scripts al proyecto

(opcional)

Paso 5

Asignar scripts a un men nuevo

(opcional)

Ejercicio 5: Asignacin de scripts a eventos


En este ejercicio, experimentar escribiendo nuevos scripts y asignndolos a controles en la GUI. Tambin crear scripts de arranque y
cierre del proyecto, y los asignar al proyecto actual.
Paso 1

Iniciar ArcView y abrir un proyecto

Si es necesario, inicie ArcView.


Desde el men File (Archivo), elija Open Project. Muvase al directorio exercice. Haga doble clic en el proyecto ex5.apr para
abrir este ejercicio.
Cuando abra el proyecto, ver la ventana del mismo.
Paso 2

Crear un script y asignarlo a un evento click de un botn.

Para este paso suponga que quiere escribir un script que abra una vista y un grfico cuando el usuario haga clic en un botn en la barra
de botones del Proyecto.
En la ventana del proyecto, haga clic en el icono Scripts, entonces haga clic en New (Nuevo) para abrir un nuevo script. Aparecer
una ventana de Script vaca llamada Script1.
El nombre de la vista que se abrir es Atlanta. El grfico se llama Atlanta Population by Country.
En la primera lnea, teclee el siguiente cdigo para establecer una variable llamada myView para la vista Atlanta:
myView = av.GetProject.FindDoc (Atlanta)
En la siguiente lnea, teclee el siguiente cdigo que establece la variable llamada myChart para el grfico Atlanta Population by
Country:
myChart=av.GetProject.FindDoc(Atlanta Population by Country)
Aada las siguientes lneas a su script para abrir las ventanas de los documentos vista y grfico:
myView.GetWin.Open
myChart.GetWin.Open

Su script ser ahora como este:

Figura
Haga clic en el botn Compile (Compilar) para chequear los errores y compilar el script:

Figura
Haga clic en el botn Run (Ejecutar) para testear que el script abre la ventana y el grfico.

Figura
Desde el men File (Archivo), elija Close All (Cerrar todo), para cerrar la vista, el grfico y el script.
Ahora que su script funciona, est preparado para asignarlo a un nuevo botn. La ventana del proyecto est activa y la GUI del proyecto
aparece con el nuevo botn (con una A mayscula) en la barra de botones. El botn fue creado para usted.
Abra la caja de dilogo de Personalizacin
Debido a que usted quiere asignar su script a un botn A en la barra de botones del proyecto, asigne Project a Type y Buttons a la
Category.

En el editor de control, haga clic en el botn A para seleccionarlo.

Figura

Luego, asignar el Script1 a la propiedad Click del botn.


Haga doble clic en al propiedad Click que aparece vaca en la lista de Propiedades.

Figura
Seleccione Script1 en el Gestor de Scripts.

Figura

Ahora el Script1 est asignado a la propiedad evento Click del botn.

Figura

Ahora, testear su nuevo script haciendo clic en el botn A de la GUI del proyecto.
Primero, minimice la caja de dilogo de Personalizacin. Active la ventana del proyecto con un clic en el botn A.
La ventana Atlanta y el grfico Atlanta Population by Country se abrirn.
Paso 3

Crear un script nuevo desde scripts del sistema existentes.

En este paso, suponga que quiere crear un control que aumente en pantalla las entidades seleccionadas. ArcView ya permite esta
operacin pero con dos controles: la herramienta Select Feature para seleccionar entidades y el botn Zoom to Selected para realizar
aumentos. Combinar los dos scripts existentes para crear un tercer script, el cual asignar a un nuevo control.
Cierre el grfico y active la vista Atlanta. Abra la caja de dilogo de Personalizacin y asigne View a Type y Tools en Category.
Primero, compruebe que el script del sistema de ArcView se ejecuta cuando utiliza la herramienta Select Feature; entonces cargue el script
en un nuevo script.
Elija la herramienta Select Feature (Seleccin de entidades) para visualizar la lista de propiedades.

Figura
Observe que el script View.SelectPoint est asignado a la propiedad Apply de esta herramienta.

Figura
Minimice la caja de dilogo de Personalizacin.
Luego, cargue el script del sistema View.SelectPoint en el nuevo script vaco.
En la ventana del proyecto, haga clic en el icono Scripts, entonces con clic en New (Nuevo) se abrir un nuevo script. El nuevo
script est vaco y se llama Script2.
Haga clic en el botn Load System Script (Carga de un script del sistema).

Figura
Desde el Gestor de Scripts, elija View.SelectPoint, entonces haga clic en OK para insertar este script del sistema en su nuevo
script.

Figura
Pulse <Enter> despus de la ltima lnea en su nuevo script para emplazar el segundo script del sistema.
Ahora, cargue el script del sistema de ArcView, View.ZoomSelected, que est asignado al botn Zoom to Selected.

Haga clic de nuevo en el botn Load System Script. Desde el Gestor de Scripts, elija View.ZoomToSelected y haga clic en OK.
De esta forma se inserta el script View.ZoomToSelected despus del script View.SelectPoint.
Haga clic en el botn Compile para chequear los errores y compilar el script.
Ahora que su nuevo script est compilado, est preparado para asignarlo a un control. Recuerde, este script requiere que el usuario
seleccione las entidades desde la vista. Antes de asignar el script, necesita contestar tres cuestiones:
En qu tipo de documento (Vista, Tabla, Grfico o Composicin) trabaja el control?
Qu control es apropiado (Campo de men, Botn o herramienta?
Qu evento se produce (Click o Apply) al ejecutar el script?
Conteste a la primera de las cuestiones y determine que nuevo script (Script2) se ejecutara desde la herramienta de la barra de la Vista.
Active la vista Atlanta y abra la caja de dilogo de personalizacin. En la caja de dilogo de personalizacin, asigne a Type View
(Vista) y a Category Tools (herramientas).
En el Editor de Control, haga clic en la herramienta Select and Zoom. (Esta herramienta fue aadida para usted al ejercicio
ex5.apr).

Figura
Luego, asignar el Script3 a la herramienta Select and Zoom. Basado en su contestacin a la tercera cuestin, asigne el script2 a la
propiedad evento Apply.
Haga doble clic en la propiedad Apply que aparece vaca en la lista de Propiedades. En el Gestor de Scripts, haga doble clic en
Script2 para asignarlo a la herramienta.

Figura
Minimice la caja de dilogo de Personalizacin y la ventana del script.
Ahora testear su script utilizando la herramienta.
Con la ventana de la vista activa, haga clic en la herramienta Select and Zoom.
Seleccione un grupo de entidades englobndolas en una caja, y luego aumente las entidades seleccionadas en la vista.
Paso 4
(opcional)

Asignar scripts al proyecto

En este paso, crear dos nuevos scripts: Arranque y Cierre. Asignar uno para ejecutarlo cuando se abra el proyecto y otro se ejecutar
cuando se cierre el proyecto.
En la ventana del proyecto, haga doble clic en el icono de Scripts para abrir un nuevo script.
Desde el men Script, elija Properties (Propiedades) y llame al script Startup.
El script Startup (Arranque) cambiar el ttulo en la ventana de su aplicacin (av) para el nombre de su compaa y visualizar el logotipo
de la misma.
Active Startup (Arranque), entonces haga clic en el botn Load Text File (Carga fichero de texto).

Figura
Desde el administrador de archivos, muvase al directorio data para seleccionar en l startup.ave.

Figura
En la primera lnea de este script determine el nombre de la ventana de la aplicacin (av). Reemplace la cadena por el nombre de
la compaa.
La siguiente lnea mostrar una caja de mensaje con un logotipo (desde un fichero de grficos llamado acme.tif) durante 8 segundos. El
ttulo en la ventana de la caja de mensaje ser Go ACME!.
Haga clic en el botn Compile para chequear los errores y compilar el script.

Figura
Ahora crear un script que se ejecute al cerrarse el proyecto.
En la ventana del proyecto, haga doble clic en el icono de Script para abrir un nuevo script.
Desde el men Script, elija Properties (Propiedades) y llame al script Shutdown.

El script de cierre necesita al usuario para registrar este producto de software.


Active Shutdown, entonces haga clic en el botn Load Text File.
Desde el administrador de archivos, muvase al directorio data y seleccione shutdown.ave.

Figura
Haga clic en el botn Compile para chequear los errores y compilar el script.
Desde el men File (Archivo) elija Close All.
Asigne los nuevos scripts a los eventos de arranque y cierre del proyecto.
Desde el men Project (Proyecto), seleccione Properties (Propiedades).
Para el evento de arranque, haga clic en el botn Load System Script y desde el Gestor del Scripts, seleccione el script de arranque.
Desde el evento de cierre, haga clic en el botn Load System Script, y desde el Gestor de Scripts, seleccione el script de cierre. Haga
clic en OK cuando acabe.

Figura
Ahora, guardar el proyecto y testear estos nuevos scripts abriendo y cerrando el proyecto.
Active la ventana del proyecto y desde el men File (Archivo), elija Save Project As (Guardar como...). Muvase al directorio pavetemp y
guarde paveex5.apr.
Desde el men File (Archivo), elija Close Project (Cerrar Proyecto). El script asignado al evento Shutdown y visualice el siguiente
mensaje:

Figura
Haga clic en OK para que desaparezca la caja de mensaje.

Ahora, desde el men File (Archivo), elija Open Project (Abrir Proyecto). Muvase al directorio pavetemp y abra paveex5.apr. El script
asignado al evento de arranque ejecuta y visualiza este mensaje durante 8 segundos:

Figura
Desde el men File (Archivo), elija Close Project (Cerrar Proyecto). El mensaje aparece de nuevo. Haga clic en OK para disminuir la
caja de mensaje.
Paso 5

Asignar scripts a un men nuevo

En este paso, escribir un script que le permita el usuario dibujar (abrir) los temas eligindolos desde un men, en vez de hacer clic en
sus cajas de control en la Tabla de Contenidos. Esta posibilidad sera til si necesitara ocultar la Tabla de Contenidos.
Abra el proyecto ex5.apr.
Se ha aadido un nuevo men llamado Layers (Capas) a la GUI de la vista, con un campo de men para cada tema en la vista Atlanta:
Population, Income y Education.

Figura
Primero, crear un script que visualice el tema Population.
En la ventana del proyecto, haga doble clic en el icono Scripts para abrir un nuevo script. Aparecer una nueva ventana de Script
vaca llamada Script3.
En la primera lnea, teclee el siguiente cdigo para establecer una variable llamada aTheme para el tema Population en la vista
Atlanta:
aTheme = av.GetProject.FindDoc (Atlanta).FindTheme
Teclee esta lnea para visualizar el tema:

(Population)

aTheme.SetVisible (true)
Haga clic en el botn Compile para compilar el script y chequear los errores.
Ahora, cargar este script en dos nuevos scripts, y los modificar para los temas Income y Education.
Active la ventana del proyecto y haga doble clic dos veces ms en el icono Scripts, para abrir dos nuevos scripts: Script4 y
Script5.
Active Script4 y haga clic en el botn Load System Script. (Va a copiar el Script3 dentro de Script4).

Figura
Desde el Gestor de Scripts, elija Script3.
Edite el Script4 reemplazando Population por Income. Haga clic en el botn Compile.
Ahora copie el script3 en el script5.
Active Script5, haga clic en el botn Load System Script, y desde el Gestor de Scripts, elija Script3. Edite Script5 reemplazando
Population por Education haciendo clic en el botn Compile.
Luego, asignar estos scripts a los campos de men.
Abra la caja de dilogo de personalizacin. Asigne View (Vista) a Type y Menus a Category.
En el editor de Control, haga clic en el campo de men Population debajo del men Layers (capas).

Figura
Haga doble clic en la propiedad Click en la lista de propiedades, y seleccione Script3 en el Gestor de Scripts.
De igual forma elija los campos de men Income y Education, asignando Script4 a Income y Script5 a Education.
Cierre la caja de dilogo de personalizacin.
Ahora testear sus scripts usando el men Layers de la GUI de la vista.
Active la vista Atlanta. Haga clic en la caja de control del tema Population para apagarlo.
Desde el men Layers, elija Population, aparecer el tema population. La caja de control es chequeada automticamente para
indicar el estado de la visualizacin.

Apague el tema Population haciendo clic en la caja de control. Ahora testee los campos de men Income y Education.

Fin

S E C C I N 6
Personalizacin de la aplicacin y documento proyecto
Personalizacin de la aplicacin y el documento proyecto............................ 6-2
La clase Aplicacin..................................................................................... 6-4
Trabajar con la ventana de la aplicacin.................................................... 6-6
Controlar la barra de estado de la aplicacin.............................................
Ejecutar los scripts desde la aplicacin......................................................

6-8
6-10

Trabajar con el proyecto...............................................................................

6-12

Establecer las propiedades del proyecto...................................................


Nombrar la aplicacin y el proyecto...........................................................

6-14
6-16

Ejercicio 6: Uso de la aplicacin y proyecto....................................................

6-19

Personalizacin de aplicacin y documento proyecto


Utilizar la aplicacin
Usar la aplicacin para ejecutar scripts
Manejar el proyecto y sus documentos

Figura

Personalizacin de aplicacin y documento proyecto


En este captulo, trabajar con el objeto aplicacin. Cuando inicie el GIS ArcView, se crea el objeto aplicacin. La aplicacin est
asociada con un proyecto de ArcView y sus documentos. En este captulo usar el objeto aplicacin para manipular ventanas de
documentos, ejecutar scripts y controlar la barra de estado, entre otras cosas. Tambin aprender a manipular la ventana de ArcView y las
ventanas de los documentos que tienen la aplicacin.

La clase Aplicacin
Cuando se inicia ArcView, se crea la aplicacin (av)
Referirse a la aplicacin desde el teclado con el comando av.
Entre la aplicacin y el proyecto existe la asociacin de uno a uno.
av.GetProject
Entre proyecto y Doc, y entre proyecto y los DocGUI existe una asociacin mltiple.
Av.GetProject.FindDoc (World)
Av.GetProject.FindGUI (myGUI)
Entre Doc y DocWin existe una relacin de uno a uno.
Av.GetProject.FindDoc (World).GEtWin
Aplicacin

Extension

Objeto

Proyecto

Script

Script Editor

DocGUI

Grfico

Doc

Composicin

DocWin

Tabla

Vista

La clase Aplicacin
La aplicacin ArcView es la nica instancia de la clase Aplicacin, y se crea cuando se inicia ArcView. Cuando escribe el cdigo de
Avenue, se refiere a la aplicacin desde el teclado con av. Iniciando desde av, puede encadenar requerimientos que le llevarn a otro
objeto que exista actualmente en la aplicacin. De forma ms tcnica, av es el objeto raz en el modelo de ArcView y el punto de inicio
para navegar por el modelo.
Diagrama modelo de objetos de la aplicacin
Un diagrama modelo de objetos es una ayuda visual que le ayuda a escribir el cdigo de Avenue. Mediante la navegacin por los
diagramas modelo de objetos, puede descifrar la asociacin entre objetos y determinados requerimientos que pueden enviarse.
Comenzando con el diagrama modelo de objeto de la estructura de la Aplicacin, puede buscar requerimientos que son enviados a la
aplicacin y a los objetos del proyecto.
Mediante la visualizacin de las relaciones entre clases, el diagrama modelo de objetos le ayuda sin duda, a dos cosas: elegir el
requerimiento apropiado para su estamento de Avenue, y colocar estos estamentos en el orden apropiado. Por ejemplo, si intent
encontrar un documento, iniciara con la aplicacin, entonces tomara el objeto, y encontrara el documento que quiere.
Para ayudar a elegir el requerimiento, utilice la asociacin entre las clases mostradas en el diagrama modelo de objetos. Los
requerimientos Get... y Find... se utilizan con diferentes tipos de asociaciones. El requerimiento Get... trabaja con la asociacin uno a
uno , mientras que Find... trabaja con mltiples asociaciones.

av, Aplicacin, y ArcView


Todos estos trminos se refieren a lo mismo, av se refiere a ArcView o a la aplicacin, av se utiliza para simplificar, ya que es ms fcil de
teclear que ArcView o Aplicacin.

Trabajar con la ventana de la aplicacin


Propiedades de las ventanas
av.MoveTo(20,20)
av.Resize (800,600)
av.TileWindows
av.CascadeWindows
Documento y ventana activa
theActiveDoc = av.GetActiveDoc
theActiveWin = av.GetActiveWin

Figura

Trabajar con la ventana de la aplicacin

Con el objeto aplicacin puede asignar las propiedades de la ventana y manejar el documento activo y la ventana del documento. Busque
la ayuda de Avenue para la clase Application para encontrar los correspondientes requerimientos y propiedades (atributos).
La ventana de la aplicacin
El requerimiento moveTo sita la esquina inferior izquierda de la ventana de la aplicacin y especifica la localizacin del pixel en
una x,y especfica. El requerimiento Move sita la ventana en relacin a su posicin actual especificando un incremento de x, e y en
pixeles. El requerimiento Resize, cambia el tamao de la ventana de la aplicacin. El parmetro del requerimiento Resize es el tamao
de la x y la y en pixeles.
Ordene el mosaico de ventanas enviando el requerimiento TileWindows a la aplicacin. Cuando ordene las ventanas en mosaico, se
abrirn todas y se mostrarn en pantalla sin solaparse.
El documento activo
Desde la aplicacin, puede obtener el documento activo con el requerimiento GetActiveDoc y la ventana activa con el
requerimiento GetActive Win.

Controlar la barra de estado de la aplicacin


Visualizar mensajes
av.ShowMsg (Creating themes...)
av.ShowStopButton
Figura

Mover la barra de progreso


procesando algo
av.SetStatus (25)

Figura

procesando ms
av.SetStatus (50)

Figura

procesando ms
av.SetStatus (75)

Figura

procesando ms
av.SetStatus (100)

Figura

Controlar la barra de estado de la aplicacin


El objeto aplicacin controla la barra de estado (barra horizontal en la parte inferior de la ventana de la aplicacin).
Los requerimientos ShowMsg y ShowStopButton muestran un mensaje y un botn Stop, respectivamente, en la barra de estado.
Utilice el requerimiento SetStatus dentro de un bucle para cambiar la barra de progreso. Un bucle mover la barra de progreso
incrementndola desde la posicin 0 a la posicin 100 %.
Borre el botn Stop y la barra de progreso enviando el requerimiento ClearStatus.
Mover la barra de progreso
Puede usar un bucle For Each para mover la barra de progreso.
Ramificaciones y bucles.
for each y in 0 .. 100
av.setStatus (y)
end

Aprender sobre los bucles For Each en la seccin

asigna la barra de progreso

Limpiar la barra de estado


Los textos de mensajes, la barra de progreso, y el botn de Stop pueden borrarse de la barra de estado.
Un mensaje se borra utilizando el requerimiento ClearMsg.
Borre el botn de Stop y la barra de progreso enviando el requerimiento ClearStatus.
av.ClearMsg
av.ClearStatus

Limpia el rea de mensaje


Limpia la barra de estado

Esperar para una operacin


El cursor WaitCursor se parece a un reloj de vidrio.
av.UseWaitCursor

Ejecutar los scripts desde la aplicacin


Ejecutar un script desde otro script

Utilizar la aplicacin con el requerimiento Run


av.Run (script name,object)
Pasar un objeto al script llamado
En el script llamado, se utiliza SELF para referirse al objeto pasado
Utilizar el estamento Return para devolver un objeto.
Compra 1
cost1= MsgBox.Input (Enter Cost,,)
a =av.run (CalcTax, cost1)
MsgBox.Info (a.AsString, Your Tax)
Compra 2
cost2 = MsgBox.Input (Enter Cost,,)
b = av.run (CalcTax, cost2)
MsgBox.Info (b.AsString, Your Tax)
CalcTax
x = SELF.AsNumber * 0.75
Return x

Ejecutar los scripts desde la aplicacin


Para ejecutar un script desde otro, enve el requerimiento Run al objeto av. Run tiene dos parmetros: el nombre del script para ejecutar
y un objeto para pasar al script llamado. SELF es el comando que se utiliza en Avenue, en el script llamado para referirse al objeto
pasado.

El script llamado puede almacenarse en el proyecto actual, en el proyecto de usuario por defecto, o en el proyecto por defecto del
sistema. La aplicacin busca estos directorios en este orden para encontrar el script.
SELF
Utilice SELF en el script llamado para almacenar el objeto pasado desde el script principal. En el ejemplo de la pgina anterior,
cost1 es pasado desde Compra1 a CalcTax, entonces se almacena en SELF, convertido a nmero, multiplicado por el factor de impuesto
0.075, que entonces es devuelto al script principal, Compra1.
Devolver objetos al script principal que realiza la llamada
Un objeto puede ser devuelto al script principal con el estamento Return. En este ejemplo, la cadena Done script2 fue devuelta a
result, en el script principal.
Result = av.run (script2,)
return Done script2

en el script principal
ltimo estamento del script llamado

Si no usa Return en el script llamado, el ltimo objeto creado en este script no es devuelto.
Requerimiento DelayedRun
El requerimiento DelayedRun ejecuta un script en un intervalo de tiempo (ej. Cada diez minutos). Para parar la ejecucin del
script, renmbrelo o brrelo.
Av.DelayedRun (aScript, anObject, timeDelay)

Trabajar con el proyecto


Crear, nombrar y guardar un proyecto
theProject = Project.Make
theProject.SetFileName (world.apr.AsFileName)
theProject.Save
Abrir y cerrar un proyecto
theProject = Project.Open (world.apr.AsFileName)
theProject.Close
Manejar documentos en el proyecto
theView = theProject.FindDoc (Asia)
theProject.SetActive (theView)
theProject.RemoveDoc (theView)

Figura Figura

Trabajar con el proyecto


Puede crear un nuevo proyecto enviando el requerimiento Make a la clase proyecto. Este proyecto no est titulado y se le puede dar
nombre con el requerimiento SetFileName. SetFileName requiere un objeto FileName. Proporciona la cadena de la ruta de su fichero de
proyecto y lo convierte a FileName con el requerimiento AsFileName. Despus de ser renombrado, puede salvarlo con el requerimiento
Save.
Puede abrir un proyecto existente con el requerimiento Open. El requerimiento Open tambin necesita un FileName. Cierre el proyecto
con el requerimiento Close.
Ficheros Object Data Base
Los ficheros de proyectos se almacenan en un fichero de texto con un formato especial llamado Object Data Base (ODB). Un ODB
permite almacenar y recuperar informacin desde un fichero. Esto permite salvar todos los componentes de un proyecto, y volver a
crearlos cuando se abra el fichero de proyecto. Para ms informacin sobre ficheros ODB, busque la ayuda de tema: ODB.
Manejando documentos del proyecto
El requerimiento FinDoc devuelve un documento por su nombre. En este ejemplo, theView es la vista Asia. El requerimiento
SetActive activa un documento del proyecto en la ventana del proyecto. El requerimiento RemoveDoc borra un documento desde la
ventana del proyecto.

Establecer las propiedades del proyecto


Asigna los scripts de arranque y cierre
av.GetProject.SetStartup (Open)
av.GetProject.SetShutdown (Close)
Asigna el directorio de trabajo y el color de seleccin
av.GetProject.SetWorkDir (c:\robb.AsFileName)
av.GetPtoject.SetSelColor (Color.GetRed)
Obtiene el autor, fecha de creacin y comentarios
av.GetProject.GetCreator
av.GetProject.GetCreationDate
av.GetProject.GetComments

Figura

Establecer las de propiedades del proyecto


De igual forma que el usuario cambia las propiedades del proyecto desde la caja de dilogo de propiedades del proyecto, stas pueden
cambiarse mediante el cdigo de Avenue. Las versiones de los requerimientos Get... y Set... son capaces de identificar o cambiar algunas
de estas propiedades.
Arranque y Cierre
Puede especificar los scripts para ejecutar cuando se inicia o cierra su proyecto. Esto puede ser utilizado para inicializar variables
o borrar ficheros indeseados. Use los requerimientos Startup y Shutdown y especifique el nombre del script. Para ms informacin sobre
los scripts Startup y Shutdown, vea la seccin 2, Creando scripts en Avenue.
Otras propiedades
Use el requerimiento SetSelColor para definir un nuevo color de seleccin para las selecciones que haga en sus documentos.
SetSelColor necesita un color como parmetro.
Para establecer o cambiar el directorio de trabajo para el proyecto, utilice el requerimiento SetWorkDir. Para el parmetro de
SetWorkDir, dele la ruta de un directorio y convirtalo a un objeto FileName.
Para recuperar informacin sobre la creacin del proyecto, o algunos comentarios almacenados con el proyecto, utilice estos
requerimientos: GetCreator, GetCreationDate y GetComments.

Nombrar la aplicacin y el proyecto


Cambia los nombres de la aplicacin (av) y el proyecto
av.SetName (Acme GIS Company)
theProject = av.GetProject
theProject.SetName (Redlands)

Figura Figura

Nombrar la aplicacin y el proyecto


Cuando inicia ArcView, se visualizan la ventana de la aplicacin (llamada ArcView) y la ventana del proyecto llamada Untitled (Sin Ttulo).
El ttulo de la ventana de la aplicacin se puede cambiar y renombrar el proyecto utilizando el script anterior.
Ejemplo
En el ejemplo, el requerimiento SetName se utiliza para cambiar el ttulo en la ventana de la aplicacin a ACME GIS Company.
Luego, se crea la variable theProject, tomndolo de la aplicacin (referido como av en el script de Avenue). El requerimiento SetName se
utiliza para renombrar theProject.

Ejercicio 6: Uso de la aplicacin y proyecto


Paso 1

Iniciar ArcView y abrir un proyecto

Paso 2

Modificar la ventana de la aplicacin

Paso 3

Personalizar la barra de estado

Paso 4

Cambiar el nombre del proyecto

Paso 5

Escribir un script que ejecute otro script

(opcional)

Paso 6

Escribir un script que obtenga y visualice comentarios del proyecto.

Ejercicio 6: Uso de la aplicacin y proyecto


En este ejercicio, trabajar con el objeto aplicacin y escribir el cdigo que permite operaciones en la aplicacin y el proyecto.
Paso 1

Iniciar ArcView y abrir un proyecto

Si es necesario, inicie ArcView.


Desde el men File (Archivo), elija Open Project (Abrir Proyecto). Muvase al directorio exercice. Haga doble clic en ex6.apr
para abrir el proyecto para este ejercicio.
Cuando se abre el proyecto, no se abren los documentos.
Paso 2

Modificar la ventana de la aplicacin

Escriba el script para mover la ventana de la aplicacin, cmbiele el nombre y redimensinela.


Abra el script Exercice 6, Step 2.
Mueva la ventana de la aplicacin con el requerimiento MoveTo a la posicin 100,100 pixeles.
Asigne el nombre a la aplicacin con el requerimiento SetName para poner ttulo a la ventana de la aplicacin ACME GIS, Inc.
Redimensione la ventana de la aplicacin con el requerimiento Resize a 800, 600 pixeles.
Compile y ejecute el Exercice 6, Step 2.
Observe los cambios de la ventana de la aplicacin.
Cierre el script.
Paso 3

Personalizar la barra de estado

En este paso, editar un script existente para informar al usuario del progreso de una operacin.

Abra el script Exercice 6, Step 3.


Inserte la siguiente lnea de cdigo debajo del comentario Show message in status bar.
Para visualizar un mensaje en la aplicacin, enve un requerimiento ShowMsg a la aplicacin, con la cadena Running script...
como parmetro.

El bucle For Each mover la barra de estado desde 0 a 100 por cien.
Entre el estamento For Each y el estamento End, aada el cdigo para asignar el estado de la aplicacin enviando el
requerimiento SetStatus con el parmetro percent. (Aprender sobre bucles For each en la siguiente seccin Ramificaciones y bucles.

Inserte la siguiente lnea de cdigo bajo el comentario Clear message from status bar.
Limpie el mensaje desde la barra de estado de la aplicacin enviando a sta el requerimiento ClearMsg.

Compile y ejecute el Exercice 6, Step 3. Cuando finalice, cierre el script.

Paso 4

Cambiar el nombre del proyecto

Escriba un script que renombre el proyecto actual y lo guarde con el nuevo nombre.
Abra el script Exercice 6, Step 4.
Para obtener el proyecto actual, asigne la variable llamada myProject enviando a la aplicacin el requerimiento GetProject.
Asigne el nombre del fichero myProject enviando el requerimiento SetFileName con el nombre del fichero como su parmetro.
Para crear la cadena del nombre del fichero, empiece con la ruta de su directorio personal y el fichero de proyecto world.apr (ej.
C:\temp\world.apr). Entonces enve el requerimiento AsFileName a esta cadena para convertirla en un nombre de fichero.

Salve myProject enviando el requerimiento Save.


Compile y ejecute Exercice 6, Step 4.
Chequee el ttulo en la barra de la ventana del proyecto para ver que el nombre del proyecto actual ha cambiado. Cuando acabe, cierre el
script.
Paso 5

Escribir un script que ejecute otro script

(opcional)

En este paso, escribir dos scripts: ScriptA y ScriptB. El ScriptA ejecutar ScripB con av.Run.
Desde la ventana del proyecto, abra los scripts ScriptA y ScriptB.
El ScriptA obtendr el nombre de la aplicacin a y entonces ejecuta ScriptB, pasndole el nombre.
En el ScriptA, cree una variable llamada appName para almacenar el nombre de la aplicacin; para hacerlo, pregunte a la
aplicacin, enviando el requerimiento GetName a aplication.
Luego, cree una variable llamada aNewName para ejecutar la aplicacin, usando el ScriptB y appName como parmetro del
requerimiento Run.

Cuando se devuelve el control al ScriptA, el nombre de la aplicacin ha cambiado.


En el ScriptA, en la siguiente lnea av.Run (donde se devuelve el control), asigne el nombre de la aplicacin enviando el
requerimiento SetName para cambiar su nombre a aNewName.
El ScriptB muestra el nombre de la aplicacin y entonces pregunta al usuario el nuevo nombre.
En el ScriptB, utilice MsgBox con el requerimiento Info para visualizar un mensaje. Para el mensaje, concatene la cadena The
current application name is con la aplicacin almacenada en SELF. Utilice una cadena vaca () para el ttulo de la caja de mensaje.

Luego, cree una variable llamada newAppName utilizando un MsgBox con el requerimiento Input. Utilice el mensaje Enter a new
application name: escriba como ttulo de la caja de mensaje Change Application name y utilice una cadena vaca como valor.

En la ltima lnea del ScriptB, use el estamento Return para devolver newAppName al ScriptA, newAppName se devuelve como
aNewName al ScriptA.
Compile el ScriptA y el ScriptB.
Para testear ambos scripts, active el ScriptA y ejectelo. Cuando pida un nombre para la aplicacin, introduzca el nombre que
quiera.
Observe que el ttulo de la ventana de la aplicacin cambia para mostrar el nuevo nombre. Cuando acabe, cierre el script.
6

Escribir un script que obtenga y visualice comentarios del proyecto.

Escriba un script que recupere los comentarios del proyecto actual y los muestre en pantalla como el mensaje en la caja de mensaje.
Tambin obtiene la fecha de creacin del proyecto y visualiza el ttulo en la caja de mensaje.

Fin

S E C C I N

7. Ramificaciones y bucles

Ramificaciones y bucles
El estamento If
Expresiones y objetos booleanos
El estamento While
El estamento For Each
Listas
Uso de listas con cajas de mensaje
Continue, Break, Return y Exit
Aplicacin de lo anterior
Ejercicio 7: Ramificaciones y Bucles

7-2
7-4
7-6
7-8
7-10
7-12
7-14
7-16
7-18
7-2

Ramificaciones y bucles
Estamentos de ramificacin
If Then
Expresiones booleanas (true o false)
Estamentos de bucles
While
For Each
Listas

Ramificaciones y bucles
Avenue tiene estamentos que soportan operaciones condicionales y de bucles. Las ramificaciones usan condiciones para
determinar el cdigo que debe ejecutarse en cada caso.
Los estamentos de bucles usan comnmente colecciones o grupos de objetos para determinar
cuntas veces se debe aplicar un determinado cdigo. Los bucles pueden tambin usar condiciones booleanas para determinar
si debe ejecutarse o no un determinado cdigo y cuando debe parar.

El estamento If
Ramificaciones condicionales
If (Boolean expression) then
do something
else
do something different
end
Ejemplo: verificar una password
Script de inicio para el proyecto La Banks
thePword = MsgBox.Password
if ( thePWord= cheddar ) then
av.GetProject.FindDoc (Los Angeles Banks).GetWin.Open
else
MsgBox.Info (Sorry, incorrect password,Password)
av.GetProject.Close
end

El estamento If

El estamento If Then usa una condicin ( p.e. una expresin booleana) para determinar qu parte de un script debe jecutarse.
Se puede chequear una condicin y, dependiendo de si es verdadera (true) o falsa (false), ejecutar diferentes lneas de
cdigo. Cada estamento If Then debe tener su correspondiente End.
Uso de ElseIf

El estamento ElseIf se usa para anidar estamentos condicionales mltiples


if ( condicin 1) then
requerimiento bloque 1
elseif ( condicin 2) then
requerimiento bloque2
elseif (condicin 3 ) then
requerimiento bloque 3
else
requerimiento bloque 4
end

Expresiones y objetos booleanos


Existen dos objetos booleanos: true y false
Se pueden asignar directamente o ser devueltos desde un requerimiento
done = false
status = TheTheme.IsVisible
editStat = myTable.CanEdit
ok= MsgBox.YesNo ( Desea aadir ahora ms registros? , ,true )
Expresiones booleanas entre parntesis
( passwd = shana )
( yourNumber >36 )
Creacin de expresiones compuestas con and, or , xor o not
( ( YourResponse = yes ) and ( yournumber >36 ) )
( ( oldNumber < newNum ) or ( MyThm.IsVisible))
( not (aValue > 100 ) )
igual que ( ( aValue > 100 ) .Not)

Expresiones y objetos booleanos

Existen dos instancias de clase booleana: true y false. stas pueden ser asignadas directamente usando las palabras clave
true y false, o pueden ser devueltas desde un requerimiento.
Los requerimientos que comienzan con Is, Can y Has devuelven objetos Booleanos, as como algunas cajas de mensaje, por
ejemplo MsgBox.YesNo.
Las expresiones booleanas constituyen la componente condicional de los estamentos If y While en Avenue. Las expresiones
booleanas deben evaluarse a true o false. y deben ser encerradas entre parntesis.

Expresiones compuestas
Las expresiones compuestas se crean usando and, or , xor y not.
Se puede negar un objeto booleano (true o false) con el requerimiento Not, usando los dos formatos que aparecen en la ltima
lnea de la pgina anterior.
La evaluacin de una expresin booleana compuesta finaliza cuando se
determina el resultado de la expresin; as,
cuando se usa and, se puede ahorrar tiempo resolviendo un pequeo testeo antes de uno largo. La tcnica se muestra abajo.
( ( shortTest ) and ( longTest ) )

ahorra tiempo

El estamento While
Lleva a cabo un conjunto de requerimiento mientras una condicin sea true
While (condicin)
algn requerimiento
la condicin debe cambiar
end
Ejemplo: sumar un conjunto de nmeros
sum = 0
start = true
While (start)

TheValue = MsgBox.Input ( Introduce un valor,Formato de entrada, )


if (theValue<>nil) then
sum = sum + theValue. AsNumber
else
start = false
MsgBox.Info(El total es ++sum.AsString, Resultado )
end
end

El estamento While

El bucle del estamento While recorre un conjunto de requerimientos tanto tiempo como una condicin sea true. Cuando la
condicin cambie a False, el bucle se detiene. Para asegurar no encontrarse un bucle mal finalizado, incluya en el bucle un
estamento que cambie la condicin de true a false. Cada estamento While debe tener su correspondiente estamento End.
En el ejemplo anterior, la caja de mensaje de entrada se visualiza en la pantalla, y contina sumando valores dados por el
usuario. Cuando el usuario haga click en Cancel, theValue se asigna a nil (nulo), y se ejecuta la rama Else; start se asigna a
false, y se visualiza el total. En la siguiente iteracin del bucle, el valor de start es false, y el bucle se finaliza.

El objeto Nil

El objeto Nil es un objeto que no tiene valor. Se devuelve Nil, por ejemplo, cuando se pide al usuario que escriba una cadena
en una caja de mensaje y ste no escribe nada, hace clic en Cancel o quita la ventana.

Atrapar errores
Para asegurar que el valor de entrada es un nmero real, chequee para ver si
devuelto es una instancia de la clase number (nmero):

el valor

if ((theValue <>nil))and(theValue.IsNumber)).

El estamento For Each


Aplica un conjunto de requerimientos a cada objecto en una coleccin
For each anObject in aCollection
bloque de requerimiento
end
Activa cada tema en la vista
theThemeList = theView.GetThemes
for each thm in theThemeList
thm.SetVisible (true)
end
Intervalos e incrementos
for each num in 0 . . 5 by 2
MsgBox.Info(num.AsString, The number is . . . )
end

El estamento For Each


El bucle del estamento For Each recorre cada objeto en una coleccin ( p.e. una lista) y lleva a cabo una serie de
equerimientos. El bucle inicializa anObject dando el primer objeto en aCollection. El bucle contina hasta que se lea el ltimo

objeto de la coleccin. Cada estamento For Each debe tener su correspondiente estamento End. En el ejemplo anterior, en
cada iteracin de el bucle, se lee y devuelve un tema de la lista de temas.

Intervalos e incrementos

For Each tambin trabaja con rangos de nmeros, fechas y tiempo como expresiones, usando el requerimiento interval
intervalo(..)). Un incremento puede aplicarse a intervalos usando la clave by. En el ejemplo anterior, num comienza con 0 y se
incrementa en 2 en cada iteracin. El bucle se detiene cuando num es igual o mayor que 5.

Listas
Una coleccin ordenada de objetos
Crear una lista
theList = {theCompany, Phone, 157.50}
theThemeNames ={Banks,Roads,Malls }
theThemeList = theView.GetThemes
newList = List.Make

con llaves
con Get ...
con Make

Aadir objetos a la lista


theThemes.Insert (City)
theThemes.Add (Streets)

al principio de la lista
al final de la lista

Referenciar objetos en una lista


ndices:

myList = {City,Banks,Streets}
thePoints = myList.Get (1)
myList.Set (1, Finance)
theIndex= myList.FindByValue(City)
theCount= myList.Count

2
thePoints es Banks
Cambia Banks por Finance
El ndice es 0
El contador es 3

myList.Remove(2)

borra Streets

Listas

Una lista es un grupo ordenado o coleccin de objetos. Una lista puede contener objetos de diferentes tipos. Por ejemplo,
adenas, temas y nmeros pueden ser miembros de la misma lista. Las listas se usan comnmente en bucles y cajas de
mensaje.
Una coleccin es una clase abstracta; esta subclase incluye BitMaps, Dictionary (Diccionarios), List(Listas), NameDictionary
(Diccionarios de nombres )y Stacks (pilas). (Los diccionarios se explican en la seccin 12.)

Creacin de listas

Existen varios caminos para crear una lista. Cualquier tcnica que se elija resulta en un objeto lista ( p.e. una instancia de una
Lista)
Se puede crear una lista asignando un grupo de objetos, encerrados entre llaves {}, a

una variable lista.

Se puede enviar una requerimiento a un objeto que devuelva una lista. La mayora de los requerimientos que inician una lista
con Get ... devuelve una lista: por ejemplo, el requerimiento GetThemes devuelve la lista de temas en la vista, y el
requerimiento GetDocs devuelve una lista de documentas en un proyecto.
Se puede crear una lista con el requerimiento Make. Se puede poblar una lista usando los requerimientos Insert y Add. Insert
coloca un nuevo objeto al principio de la lista, y Add coloca el nuevo objeto al final.

Referenciar objetos en una lista

Cada objeto en una lista se referencia con un nmero ndice. El ndice comienza con 0 para el primer objeto y termina con
<nmero de objetos > -1. El requerimiento Get devuelve un objeto por su nmero ndice, y Set cambia el valor de el objeto. Use
el requerimiento Find para devolver el ndice de el objeto especificado; use FindByValue si el objeto especificado en una
cadena o un nmero. Count devuelve el
nmero total de objetos en las lista, y Remove borra un objeto por el nmero de
ndice.

Uso de listas con cajas de mensaje


MsgBox.Choice

theThemeList = theView.GetThemes
theTheme = MsgBox.Choice (theThemeList, Elige un tema, Seleccin de tema)
MsgBox.MultiInput
labelsList = {Nombre,Direccin,Nmero de telfono}
defaultList ={Bernie Szukalski,380 New York Street,909.793.2853}
La lista default podra estar compuesta de cadenas vacas { , , }
theDataList = MsgBox.MultiInput ( Aade cliente , Datos del cliente,labelsList,defaultList)

Uso de listas con cajas de mensaje

Las listas se usan normalmente con cajas de mensaje que presenta selecciones o campos de entrada y obtienen informacin
desde el usuario.

Cajas de mensaje

Choice y List
Los requerimientos Choice, List y MultiList se envan a una MsgBox para presentar las opciones del
usuario. Un requerimiento Choice visualiza las opciones en una lista desplegable; el requerimiento List visualiza las opciones
es una lista tipo scrolling (cremallera); y el requerimiento MultiList permite seleccionar varios objetos desde una lista scrolling.
Choice y List devuelven un objeto; MultiList devuelve una lista de objetos.

MsgBox.Choice(aList,aMessage, aTitle)
MsgBox.List(aList,aMessage, aTitle)
MsgBox.MultiList(aList,aMessage, aTitle)
Use el requerimiento AsString cuando la lista de opciones est formada en su totalidad por objetos tipo cadena.
MsgBox.ChoiceAsString(aList,aMessage, aTitle)
MsgBox.List AsString(aList,aMessage, aTitle)

Cajas de mensaje

MultiInput
Enve el requerimiento MultiInput a MsgBox para crear una formato de entrada para que rellene el usuario. El objeto devuelto
desde el requerimiento
MultiInput es una lista.
MsgBox.MultiInput(aList,aMessage, aTitle,aListOfLabels,aListOFDefaults)

Continue, Break, Return y Exit


Altera el flujo normal de control
Continue salta la iteracin actual del bucle u contina a la siguiente
for each num in 1 .. 5
if (num =3) then
continue
Else
MsgBox.Info (num.AsString, )
end

1,2,4 y 5 son visualizados, 3 se salta

Return termina inmediatamente el script actual


for each num in 1 .. 5
if (num =3) then
break
Else
MsgBox.Info (num.AsString, )
end
1,2 son visualizados, luego Break para el bucle

Return termina inmediatamente el script


Exit termina todos los scripts en marcha

Continue, Break, Return y Exit


Use Continue, Break, Return y Exit para modificar el flujo de control en el bucle.
Continue

Cuando se encuentra un estamento Continue, cualquier paso remanente en la iteracin actual se ignora y
el control pasa a la siguiente iteracin en el bucle
Use Continue par saltar el proceso de los elementos seleccionados o que cumplan una determinada
condicin.

Break

Cuando un estamento Break es encontrado, el bucle encerrado ms prximo


finaliza y el control pasa al estamento siguiente del estamento End del bucle.

Return

Cuando se encuentra un estamento Return, finalice inmediatamente el script actual.

Exit

Termina todos los scripts en curso.

Puesta en prctica conjunta


Uso estamentos For Each mltiples con una estamento If Then.

Puesta en prctica conjunta

Los scripts con frecuencia estn formados de estamentos mltiples, o usan varias veces el mismo estamento. El ejemplo de la
pgina anterior usa el estamento If Then dentro de un estamento For Each y dos For Each dentro de un estamento If Then.

Ejemplo
El ejemplo permite al usuario tres intentos de introducir la password correcta. Si el usuario introduce la password correcta, se
visualiza una lista de temas. El usuario entonces selecciona uno o ms temas para hacerlos visibles cuando se abra la vista.
Despus, el script finaliza usando el estamento Return. Si el usuario falla al introducir la password correcta en tres intentos, el
programa notifica al usuario que la password es incorrecta y se cierra el proyecto.

Ejercicio 7:

Paso 1

Ramificaciones y Bucles

Iniciar ArcView y abrir un proyecto.

Paso 2

Crear y visualizar una lista de temas.

Paso 3

Uso de listas para disear un formato de entrada de datos de clientes.

Paso4
opcional

Uso de un estamento If Then para chequear los temas activos.

Paso 5

Uso de un estamento For Each para conmutar la visibilidad de un tema.

Ejercicio 7:

Ramificaciones y Bucles

En este ejercicio, se podrn practicar las ramificaciones y bucles usando listas, los estamentos If Then y el estamento For Each.

Paso 1

Iniciar ArcView y abrir un proyecto.


Es necesario iniciar ArcView. Desde el men Archivo (File), elija Abrir Proyecto (Open Project). Moverse al
directorio ejercicio. Hacer doble clic en ex7.apr para abrir el proyecto para este ejercicio.
Cuando el proyecto se abra, se ver la ventana de proyecto con el script del ejercicio 7, paso 2 y abierta la
vista Atlanta.

Paso 2

Crear y visualizar una lista de temas


Escribir un script para visualizar una lista de temas en una caja de mensaje, permite al usuario elegir un tema
y hacer un informe del tema seleccionado.
En el ejercicio 7, paso 2, cree una variable llamada TheView enviando a application (aplicacin) equerimiento
GetActiveDoc.
Despus, cree una lista de temas llamada theThemeList enviando el requerimiento GetThemes a theView (la
vista).

Cree una variable llamada theTheme enviando a una MsgBox el requerimiento Choice para visualizar
theThemeList. El mensaje es Seleccione un tema. El ttulo sobre la caja de mensaje debe decir Temas para
Atlanta. Para construir este ttulo use Temas para++theView.GetName.

Enve a MsgBox el requerimiento Info para visualizar el tema seleccionado por el usuario. Tome el nombre de
theTheme enviando el requerimiento GetName (esto tambin crea la cadena requerida). El ttulo de la caja de
mensaje El tema seleccionado
Compile y corra el script para testear ste. Cuando acabe, cierre el script.

Paso3

Uso de listas para disear un formato de entrada de datos de clientes.

Escriba un script que pida al usuario el nombre de la compaa, la direccin y nmero de telfono y que
haga un informe con el nmero de telfono. Usar la caja de mensaje MultiInput para crear un formulario con
la informacin de entrada.
Use la ayuda par responder a las siguientes cuestiones acerca del requerimiento MultiInput
Cuales son los cuatro parmetros? Cual es la clase de cada parmetro?
Parmetro 1:
Parmetro 2:
Parmetro 3:
Parmetro 4:

Clase:
Clase:
Clase:
Clase:

Qu clase objeto devuelve el requerimiento MultiInput?


MultiInput incluye dos listas como parmetros. La lista Labels especifica las etiquetas del campo de entrada, y
la lista Defaults especifica los valores por defecto para los campos de entrada. En el ejemplo de abajo, las
etiquetas de los campos de entrada son Nombre de Compaa, Direccin, y Nmero de Telfono. Los
valores por defecto para los tres campos de entrada son ESRI, 380 New York Street, y (909) 793-2853.
Abra el ejercicio 7, paso 3. Inicie el script creando dos variables lista. una para las etiquetas llamadas
theLabels y la otra para los valores por defecto llamada theDefaults.

Cree una variable llamada theData enviando el requerimiento MultiInput a MsgBox para que el usuario pueda
introducir los datos del Cliente. El ttulo de la caja de ensaje es Lista de Clientes. Use theLabels y theDefaults
como los ltimos dos parmetros.

Despus extraer y har un informe con el nmero de telfono y nombre de la compaa a partir de la lista
devuelta
Cree una caja de mensaje Info. Para el mensaje, tome el nmero de telfono enviando a theData el
requerimiento Get con nmero de ndice(2). Para el ttulo, tome el nombre de la compaa enviando

a theData el requerimiento Get con nmero de ndice (0).

Compile y corra el script. Mientras est introduciendo los datos en la caja MultiInput, use la tecla
<Tab> para moverse entre las cajas de entrada. Cuando acabe, cierre el script.
Paso4

Uso de un estamento If Then para chequear los temas activos.


En este paso, usar ele estamento If Then para chequear si una vista tiene algn tema activo y
presentar una caja de aviso si fuera necesario.
Abra el script del Ejercicio7, paso4. o Cree una variable llamada theView enviando a application (aplicacin) el
requerimiento GetActiveDoc.
Cree una variable llamada theThemes enviando a theView el requerimiento
GetActiveThemes.
Inicie un estamento If Then. Para la condicin, primero cuente cuntos temas hay en theThemes enviando el
requerimiento Count. Despus testee si el contador es menor que uno.
Si el contador es menor que uno, enve una caja de mensaje de aviso (Warning) al usuario, con el mensaje Al menos
debe activarse un tema, y sin ttulo.
Use Exit para finalizar el script
Si no ( si hay al menos un tema activo) enve una caja de mensaje de eleccin (Choice ) al usuario que visualice la
lista theThemes. Para el mensaje, escriba Seleccione un tema para editar.

Finalice el estamento if Then


Compile el script. Haga al menos un tema activo y corra el script. Crralo de nuevo sin temas
activos. Cuando acabe, cierre el script.

Paso 5

Uso de un estamento For Each para conmutar la visibilidad de un tema.


Escriba un script que conmute la visibilidad de todos los temas en una vista. Inicie el script tomando la vista actual y
creando una lista de los temas de la vista.
Abra el script Ejercicio 7 , paso 5
Cree una variable llamada theView enviando a application (aplicacin) el requerimiento GetProject. despus el
requerimiento FindDoc para encontrar la vista Atlanta.
Cree una variable llamada theThemes enviando a theView el requerimiento GetThemes.
Despus, use el estamento For Each para conmutar la visibilidad de todos los temas en la vista. Si el tema est
visible, que lo ponga invisible. Si el tema est invisible, que lo ponga visible.
Escriba el bucle For Each usando cada t (tema) en la lista TheThemes.

Dentro del bucle, cree una variable llamada vis enviando a cada t (tema) el requerimiento IsVisible.
Cambie la visibilidad de cada t (tema) con el requerimiento SetVisible. Para el parmetro, use la variable vis y cambie
el valor booleano con el requerimiento Not.

Finalice el bucle For Each


Compile y corra el script para testear ste. Cierre el script cuando acabe.

End

S E C C I N

8. Trabajo con temas y leyendas


Trabajo con temas y leyendas

8-2

La clase Theme (tema)


Temas de entidades
Aadir un temas a una vista
Ajustar la simbologa de un tema
Cambiar la simbologa de un tema
Clasificar la leyenda de un tema
Ordenar temas en la TOC

8-4
8-6
8-8
8-10
8-12
8-14
8-16

Ejercicio 8: Creacin de temas nuevos

8-19

Trabajo con temas y leyendas


Creacin de temas
Ajustar simbologa de temas
Crear clasificaciones de leyenda de temas

Trabajo con temas y leyendas


En esta seccin se aprender a crear un temas a partir de las diferentes fuentes de datos y cmo establecer la simbologa de un
tema y clasificaciones de leyenda usando el cdigo de Avenue.
Ejemplos: Cuando se aade un tema nuevo a una vista, ArcView le asigna un color arbitrario. Con Avenue se puede aadir una tema a
una vista y controlar su color y clasificacin.
ArcView coloca los temas nuevos al principio de la Tabla de Contenidos (TOC). Esto puede ser un problema si el tema nuevo es un
tema de polgonos, imgenes o rejilla(grid), debido a que estos puede tapar a los otros temas. Usando Avenue, se puede controlar el
orden de los nuevos temas, ordenndolos al final de la Tabla de Contenidos.

La clase Tema
Una vista est compuesta desde ninguno hasta muchos temas.
Un tema representa una fuente de datos sencilla.
Usar ScrName para definir la fuente de datos de un tema.
Existen cuatro clases de temas.

Cada tema en una vista representa una fuente de datos espacial. La clase Tema permite visualizar una variedad de temas reunidos
en una sola vista. Cada tema tiene un ScrName asociado que define su fuente de datos.
Temas de Entidad
Los temas de entidad o Fthemes, soportan fuentes de datos de entidades tales como shapefiles, coberturas, capas de librera o
bases de datos ArcStorm.
Temas de Imgenes
Los temas de Imgenes o Ithemes, soportan fuentes de datos de imgenes. Un Itheme puede crearse desde cualquier fichero de
imgenes que reconozca ArcView.
Temas de Bases de Datos
Los temas de Bases de Datos o DBThemes soportan fuentes de datos
SDE (Turbina de Base de Datos Espacial).
Temas de Rejilla
Los temas de rejilla o Gthemes soportan las fuentes de datos raster que se pueden usar con la extensin de Anlisis Espacial de
ArcView.

Temas de Entidades
Cada tema de entidades (FTheme) est asociado con una tabla y con una leyenda.
Cada leyenda est compuesta de uno o muchos smbolos y clases.
Cada tabla de entidades (FTab) tiene desde ninguno a muchos campos.

Temas de Entidades
Los temas de Entidades a los que nos referimos como FThemes, soportan operaciones sobre un tema tales como cambiar su simbologa
y clasificacin
en la leyenda. La leyenda de un tema es un conjunto de smbolos y clases. Una tabla de entidades a la que nos
referimos como FTab est asociada con cada Ftheme. Los campos en la Ftab proporcionan los datos para clasificar temas de entidades.

Aadir un tema a una vista


Crear un nombre de fuente de datos
desde una cobertura:
dataSrc = SrcName.Make (c:\avdata\streets line)
desde un shapefile:
dataSrc = SrcName.Make (c:\avdata\streets.shp)
Crear el tema
theTheme = Theme.Make(dataSrc)
Aadir el tema a una vista
theView = av.GetProject.FindDoc(Redlands)
theView.AddTheme(theTheme)

Aadir un tema a una vista


Se puede crear un SrcName enviando el requerimiento Make y especificando una fuente de datos como una cadena de path que
identifique la localizacin de los datos. Cuando se usen coberturas de ARC/INFO como fuente de datos, se requiere junto con la cadena
del path, un tipo de entidad (polgono, lnea, punto, etc).
El SrcName se usa para crear un nuevo tema enviando el requerimiento Make a la clase Tema.
Aade un nuevo tema a la vista, pero previamente buscando la vista y despus enviando a sta el requerimiento AddTheme con el nuevo
tema como parmetro.
Crear un tema a partir de una fuente de datos x, y
El ScrName puede crearse desde una tabla que contenga coordenadas x,y.
El ejemplo demuestra cmo se crea una ScrName desde una tabla en el proyecto actual y se usa para crear un tema.
theVTab = av.GetProject.FindDoc ( coords.txt ).GetVTab
xField = theVTab.FindField ( xcoord )
yField = theVTab.FindField ( ycoord )
theXYScr = XYName.Make( TheVtab, xField,yField )
newTheme = Theme.Make( theXYSrc )
theView = av.GetProject.FindDoc( Redlands )
theView = AddTheme( newTheme )

Ajustar la simbologa de un tema


Toma una lista de smbolos de leyenda
theLegend = theTheme.GetLegend
theLegendSyms = theLegend.GetSymbols
Toma la Ventana de Smbolos y la Paleta de Colores
thePalette = av.GetSymbolsWin.GetPalette
theColors = thePalette.GetList (#PALETTE_LIST_COLOR)
Asigna el color del smbolo
firstSym = theLegendSyms.Get(0)
firstSym.SetColor (theColors.Get(4))
Redibuja la leyenda y activa el tema
theTheme.InvalidateLegend
theTheme.SetVisible (true)

Ajustar la simbologa de un tema


Despus de aadir un tema a una vista, se puede controlar su simbologa cambiando la leyenda del tema. Empiece tomando la leyenda
del temas desde
thetheme con el requerimiento GetLegend. Despus, tome la lista de smbolos en la leyenda con el requerimiento
GetSymbols. En el ejemplo anterior, hay solo un smbolo en la lista
Ventana de smbolos y paleta
Cada aplicacin de ArcView tiene una ventana de smbolos a travs de la que se accede a una paleta que contiene smbolos. Enve el
requerimiento GetsymbolWin a la aplicacin y despus use el requerimiento GetPalette para recuperar la paleta. Con la paleta, use
GetList con una enumeracin que especifique qu lista de smbolos desea. En el ejemplo anterior, lista de colores desde la paleta de
color se especifica con #PALETTE_LIST_COLOR.
Smbolo
Use el requerimiento Get con el nmero de ndice para tomar un smbolo desde la lista de smbolos. Cada smbolo tiene asociado un color.
Para asignar el color, enve al smbolo el requerimiento SetColor. El requerimiento SetColor precisa un color como parmetro. Use el
requerimiento Get con la lista de colores para tomar un color.
Redibujar la leyenda
Despus de cambiar los smbolos en una leyenda, la leyenda debe redibujarse en la tabla de contenidos (TOC). Use el requerimiento
InvalidateLegend sobre el tema para redibujar su leyenda. El trmino invalidate se refiere a la necesidad de refrescar una ventana que no
visualiza la informacin actual (p.e. smbolos).

Cambiar la simbologa de un tema


Tomar el smbolo y reasignar su color y tamao
theSyms = theLegend.GetSymbols
theSyms.get(0).SetColor( theColors.Get(6))
theSyms.get(0).SetSize(2)
Redibujar el tema y su leyenda con un nuevo smbolo
theTheme.UpdateLegend

Cambiar la simbologa de un tema


Cuando se cambia la simbologa de una tema ya visualizado en la vista, se deben redibujar ambos, la leyenda y el tema.
Actualizar el mapa con los cambios en la leyenda Use el requerimiento UpdateLegend despus de cambiar la simbologa de un tema. El
requerimiento UpdateLegend actualiza la visualizacin del mapa y la leyenda de un tema en la TOC para que se corresponda con los
nuevos smbolos.
Salvar y grabar leyendas
Las leyendas deben salvarse en un fichero de leyenda (.avl), y cargar ste en el nuevo tema. sta es una forma para mantener la
integridad de las leyendas de temas en las vistas, composiciones y
proyectos.
Salvar una leyenda
theLegend.Save (streets.avl.AsFileName)
Cargar una leyenda para un nuevo tema
theLegend.SetFieldNames
({myTheme.GetFTab.FindFIeld(st_code)})
theLegend.Load (streets.avl.AsFileName,
#LEGEND_LOADTYPE_ALL)

Clasificar la leyenda de un tema


Asigna el tipo de leyenda del tema
theTheme = theView.FindTheme(Nwtracts)
theLegend = theTheme.GetLegend
theLegend.SetLegendType(#LEGEND_TYPE_COLOR)
Elige un mtodo de clasificacin y nmero de clases
theLegend.Interval(theTheme,Med_hh_in,4)
Redibuja el tema y su leyenda
theLegend.UpdateLegend

Clasificar la leyenda de un tema


Los temas se clasifican en base a un atributo en su tabla de temas. Dicho atributo se identifica por una cadena que referencia al nombre
del campo.
Ver seccin 9. Creacin y consulta de tablas, para ver ms informacin sobre tablas de entidades.
Mtodos de clasificacin
Hay 5 mtodos de clasificacin de leyendas: Intervalos iguales, Cuantiles, reas iguales , Desviacin Standard, Rupturas naturales y
nico. Enve a la leyenda uno de los requerimientos, Interval, Quantile, Area, StdDev, Natural o Unique para llevar a cabo el mtodo. Use
el objeto Tema, una cadena (el nombre del campo a clasificar), y el nmero de clases (si el nmero de clases no es nico) como
parmetros
Colores gamados
En el ejemplo anterior, se usa el requerimiento Interval para crear cuatro clases. El smbolo para cada clase se selecciona arbitrariamente.
Si se tienen ms de dos clases, se puede crear una gama de color y luego usarla con el requerimiento RampColors sobre theSymbolist de
theLegend (Leyenda). Los parmetros de este requerimiento son los colores inicial y final de la gama. Use el requerimiento despus de un
requerimiento de clasificacin, y antes de el requerimiento de actualizar la leyenda.

ejemplo de gama de color


theLegend.Quantile(theTheme,aFieldName,numClasses)
theLegend.GetSymbols.RampColors(theColors.Get(3),theColors.Get(7))
theTheme.UpdateLegend
Tipos de leyenda
El tipo de leyenda debe asignarse antes de cambiar el color y nmero de clases. Los tipos de leyenda son:
Single - leyenda de smbolos sencilla
Color - leyenda de color graduada
Symbol - leyenda de smbolos graduada
Unique - leyenda de valor nico
Dot - leyenda de densidad de punto
Chart - leyenda de grfico

Ordenar temas en la TOC


Toma la vista y la lista de temas
theView = av.GetActiveDoc
theThemeList = theView.GetThemes
Ordena el primer tema al final
theTheme= theThemeList.Get(0)
theThemeList .Shuffle(theTheme,theThemeLIst.Count)
Redibuja todas las leyendas de los temas en la TOC
theView .InvalidateTOC(nil)

Ordenar temas en la TOC


Los temas se dibujan en orden sobre la pantalla de visualizacin desde abajo de la TOC hasta arriba. Los temas de polgono o imgenes
(que son con frecuencia colores de relleno slidos) pueden cubrir a otros temas si se colocan en la cabeza de la TOC. Se puede mover
un tema desde una posicin de la TOC a otra usando el requerimiento Shuffle sobre la lista de temas. Con el requerimiento Shuffle, se
especifica el tema que se va a mover y su nueva posicin. Para definir la nueva posicin al final de la TOC, use el requerimiento Count
sobre la lista de temas.
Invalidacin de la TOC
Despus de alterar el orden de un tema, use el requerimiento InvalidateTOC y muestre el nuevo posicionamiento. El parmetro Nil
provoca que se redibujen todos los temas en la TOC. Si se especifica un tema como parmetro, entonces el tema y cualquier tema
superior en la TOC se redibujan. Esto es lo que le diferencia del requerimiento InvalidateLegend, que trabaja slo con la leyenda del tema
especificado.

Ejercicio 8:

Creacin de nuevos temas

Paso 1

Iniciar ArcView y abrir un proyecto.

Paso 2

Crear un tema desde una fuente de datos shapefile.

Paso3

Clasificar un tema.

Paso4

Cambiar los smbolos para las clases.

Paso 5
(opcional)

Alterar un tema en al TOC.

Ejercicio 8:

Creacin de nuevos temas

En este ejercicio se podr aadir un tema llamado Census Tracts a la vista Atlanta usando un fichero shapefile llamado tracts.shp. Se
clasificar su leyenda y alterar su posicin en la TOC.

Paso 1

Iniciar ArcView y abrir un proyecto.


Es necesario iniciar ArcView.Desde el men Archivo(File), elija Abrir Proyecto (Open Project). Muvase al directorio
ejercicio. Hacer doble clic en ex8.apr para abrir el proyecto para este ejercicio. Cuando el proyecto se abra, se ver
la ventana de proyecto y la vista Atlanta que contiene los temas County y Banks.

Paso 2

Crear un tema desde una fuente de datos shapefile


En este paso, se aadir un tema llamado Census Tracts a la vista Atlanta usando un

shapefile llamado

tracts.shp.
Desde la ventana de proyecto, abra el script Ejercicio8, Paso2. La lnea de cdigo que busca la vista Atlanta ya est
en el script.
Cree una variable llamada shapeSrc enviando a la clase SrcName el requerimiento Make. Como parmetro, use la
cadena para el shapefile $AVETRAIN/data/tracts.shp
Ahora cree una variable llamada theTheme para enviar a la clase Tema el requerimiento Make. Use ShapeSrc como
parmetro.
Despus, aada el tema a la vista y nombre ste.
Para aadir el tema a la vista, enve a theView el requerimiento AddTheme con theTheme como parmetro.
Enve a theTheme el requerimiento SetName y nombre el tema con la cadena Census Tracts.
Compile y corra el script. En la vista aparecer un nuevo tema llamado CensusTracts.

Cuando acabe, cierre el

script.

Paso3

Clasificar un tema.
Ahora crear una clasificacin por cuantiles de la leyenda del tema Census Tracts en base a

media.

la renta familiar

Desde la ventana de proyecto, abra el script Ejercicio8, paso3. El cdigo en el script busca la vista Atlanta y el tema
Census Tracts.
Tome al leyenda del tema creando una variable llamada theLegend y enve a theTheme el requerimiento
GetLegend.
Despus, asigne el tipo de leyenda para el tema
Enve a theLegend el requerimiento SetLegendType y use como parmetroel enumerador
#LEGEND_TYPE_COLOR.(esto crea una leyenda de color gradual)
Ahora use el tema y el nombre del campo para clasificar la leyenda
Enve a theLegend el requerimiento Quantile par crear una clasificacin por cuantiles con theTheme, Med_hh_in, y
5 clases.
Redibuje la leyenda y el tema con la nueva simbologa y la nueva clasificacin.
Refresque el tema en la vista con el requerimiento UpdateLegend.
Compile y corra el script. El tema Census Tracts se reclasifica con la clasificacin por cuantiles.

Paso4

Cambiar los smbolos para las clases.

En este paso, cambiar los smbolos de las 5 clases, para que la gama vaya de verde claro a

oscuro.

Desde la ventana de proyecto, abra el script Ejercicio8, paso4. Dese cuenta de que las lneas de cdigo en el script
ya buscan la vista Atlanta y el tema Census Tracts.
Tome la leyenda del tema creando un variable llamada theLegend, y enva a theTheme el requerimiento GetLegend.

Tome una lista de los smbolos, llamada theSymList, enviando a theLegend el requerimiento GetSymbols.
Para almacenar la lista de colores de la paleta de color, cree una variable llamadatheColors. Enva a la aplicacin el
requerimiento GetWin, despus el requerimiento GetPalette, y finalmente el requerimiento GetList con enumeracin
#PALETTE_LIST_COLOR como parmetro.
Despus crear un bucle para procesar las cinco clases. Conseguir cada smbolo desde la lista smbolos por el
nmero de ndice.
Cree un bucle For Each usando symIndex para cada nmero en el intervalo 0 ..4
Cree una variable currSym enviando a theSymList el requerimiento Get con el parmetro symIndex.
Los colores del verde claro al verde oscuro tienen ndices del 13 al 17 . Cree aNewColor enviando a theColors el
requerimiento Get con symIndex + 13 como parmetro.
Para asignar le nuevo color al smbolo, enve a currSym el requerimiento SetColor con newColor.

Finalice el bucle For Each

Redibuje la leyenda y el tema, reflejando la nueva leyenda, enviando a theTheme el requerimiento UpdateLegend.
Para encender el tema, enve a theTheme el requerimiento SetVisible con true
Compile y corra el script. Ver que la leyenda del tema Census Tracts cambia al rango de smbolos verde claro a
verde oscuro.

Paso 5
(opcional)

Alterar un tema en al TOC.


El tema Census Tracts est cubriendo el tema Banks. Habr que mover el tema Census Tracts al final de la TOC.
Entonces, ste se dibujar primero y el tema Banks despus.
Empiece abriendo el script Ejercicio8, Paso5. Dese cuenta de que da inicio script. La primera lnea de cdigo
encuentra la vista Atlanta.
Despus, cree una variable llamada theThemeList enviando a theView el requerimiento GetThemes.
Tome el primer tema (Census Tracts) en la variable llamada theTheme enviando a theThemeList el requerimiento
Get con ndice 0.
Para tomar la ltima posicin en la TOC, asigne una variable llamada lastPos y enve a theThemeList el
requerimiento Count.
Para mover el tema Census Tracts a la posicin final, enve el requerimiento Shuffle a
parmetros de el requerimiento Shuffle son theTheme y su nueva localizacin, lastPos.

theThemeList. Los

Para redibujar en la TOC, enva a theView el requerimiento InvalidateTOC con el parmetro Nil.
Para redibujar todos los temas, enve a theView el requerimiento Invalidate.
Compile y corra el script
End

10. Creacin de shapes y grficos


Creacin de shapes y grficos

10-2

Comprensin del display


Uso de shapes
Creacin y dibujo de shapes
Cmo estn asociados grficos y shapes
Creacin y visualizacin de un grfico
Cambio de la simbologa de un grfico
Localizacin y movimiento de un grfico
Asociacin de grficos a un tema

10-4
10-6
10-8
10-10
10-12
10-14
10-16
10-18

Uso de shapes para seleccionar entidades de un tema

10-20

Aadir entidades a un tema de shapes

10-22

Ejercicio 10 : Creacin de shapes y grficos

10-25

Creacin de shapes y grficos

Visualizacin y uso de shapes y grficos en vistas


Asignacin de simbologa
Animacin de grficos
Asociacin de grficos con temas
Adicin de entidades a tema

Creacin de shapes y grficos


En esta seccin, se aprender a crear shapes y grficos y a visualizar estos en una vista. Las shapes y los grficos tienen una asociacin
especial: se ha de tener una shape para construir un grfico. A pesar de que tienen cosas en comn, tienen importantes diferencias que
afectan a la forma en que se usan.
El interfaz de usuario del SIG ArcView permite usar shapes y grficos para muchos propsitos: para esbozar reas de inters, para
seleccionar temas, para aadir nuevas entidades, y para cambiar simbologa de grficos. Se aprender a llevar a cabo estas operaciones
usando scripts de Avenue.

Comprensin del Display


Los grficos se dibujan en el rea de visualizacin (display)
Las vistas tienen un rea de pantalla grfica.
theMapDisplay = theView.GetDisplay
theGraphicList = theView.GetGraphics

Mapdisplay

Prj
View
TOC

Graphiclist

Comprensin del Display


Una vista se compone de la visualizacin de un mapa, una lista grfica, y de cero, uno o muchos temas. Algunos o todos los grfico de la
lista grfica pueden asociarse a un tema.
Visualizacin de un mapa
La visualizacin de un mapa utiliza el rea de la vista donde los temas y los grficos se dibujan en la pantalla. El usuario interacta con el
display para hacer una vista panormica, un zoom o dibujar. Se puede tomar el rea de visualizacin enviando a la vista erequerimiento
GetDisplay.
Lista Grfica
Una vista tiene una Lista Grfica asociada que maneja la coleccin de grficos en la vista. Se puede crear, modificar, y mover grficos.
Use el requerimiento GetGraphics con una vista para crear su lista grfica. Una composicin tiene una lista grfica, que funciona como la
lista de grficos de la vista.
Si se enva el requerimiento GetGraphics a un tema. Se puede crear un conjunto de grficos del tema (GraphicSet). Los grficos del tema
se explican ms tarde en esta seccin.

Uso de shapes
Uso de shapes para crear grficos, seleccionar entidades y crear entidades.

Uso de shapes
Las shapes son los bloques de construccin bsicos usados para representar las entidades geogrficas del mundo real. Por ejemplo, las
shapes pueden representar reas comerciales, reas de mercado, lneas de potencia o localizaciones especiales peligrosas. Use shapes
para crear grficos en una vista o composicin, seleccionar entidades de un tema o crear entidades en un tema.
Clase de shapes
Las subclases de shapes son crculo, lnea, punto mltiple, punto y rectngulo.
especfica. Toda la geometra de las shapes es plana ( no esfrica).

Creacin y dibujo de una shape


Toma el Display
theDisplay = theView.GetDisplay
Crea una shape a partir de coordenadas conocidas
theCircle = Circle.Make (250000@200000,2640)
desde localizacin del ratn
theCircle = theDisplay.ReturnUserCircle
Dibuja una shape
theDisplay.BeginClip
theDisplay.DrawnCircle(theCircle,theSymbol)
theDisplay.EndClip

Cada subclase define la shape geomtrica

Creacin y dibujo de una shape


Se puede crear una shape a partir de coordenadas conocidas y medidas o por entrada desde ratn. Despus de crear una shape, debe dibujarse en el
display. Las shapes se almacenan en la Lista Grfica; as, desaparecen cuando se cierra la vista, y no pueden seleccionarse moverse o alterarse.
Creacin de una desde a partir de coordenadas conocidas
Una shape de punto es la shape bsica ms sencilla. Para crear una shape puntual, use el requerimiento Make sobre la case Point. Use el operador
@para crear un punto desde un valor x,y
aPoint = Point.Make (155, 385)
aPoint = 155@385
Use el formato de punto bsico par construir shapes ms complicadas
aLine = Line.Make (40@40, 40@100)
dos puntos
aCircle = Circle.Make( aPoint,400)
radio = 400
Creacin de una shape a partir de localizaciones de ratn
Se pueden crear shapes desde localizaciones de ratn definidas por el usuario usando requerimientos que comiencen con ReturnUser.Use dichos
requerimientos slo con un script que se aplique a Herramientas
thePoint = theDisplay.ReturnUserPoint
theLine = theDisplay.ReturnUSerPoint
theCircle = theDisplay.ReturnUserCircle
Dibujo de una shape en el Display
Dibuje una shape en el display usando el requerimiento Draw apropiado. Use el requerimiento BeginCLip antes del Draw y el requerimiento EndClip
despus de ste. ste dice al display que dibuje slo en el rea cubierta por la shape

Resalto de shapes

El requerimiento FlashShape enva una shape sobre el display, usando un smbolo durante un tiempo determinado y nmero de veces especificado
aShape = Circle.Make(3@3,2)
aSymbol.Make(#SYMBOL_FILL)
theDisplay.FlashShape (aShape,aSymbol, 10,10)

Cmo estn asociados las shapes y los grficos


Cree una shape
Cree una shape grfica a partir de una shape
Almacene la shape grfica en la Lista Grfica
Visualice los grficos en la vista
Graphic

Symbol

GraphicGroup

GraphicShape
Shape

Oval
Line

Rect
Point

Circle
Multipoint

Polyline

Cmo estn asociados las shapes y los grficos

Polygon

Para crear un grfico en la vista, se debe comenzar creando la definicin matemtica geometra plana), llamada shape. Una ShapeGrfica
se crea a partir de una shape y se almacena ms tarde en una lista Grfica. La Lista Grfica visualiza los grficos en al vista ( o
composicin)

Clases de shapes
La clase Shape tiene muchas subclases. Las siguientes son clases de shapes:
Circle(Crculo), Line(Lnea2 puntos), Multipoint (grupo de puntos), Oval(valo),
Point(Punto) y Rect(Rectngulo).
Polyline es una subclase de Multipoint y Polygon una subclase de PolyLine. Dichas shapes pueden construirse usando el requerimiento
Make con los parmetros de medida y coordenadas apropiados.

Creacin y visualizacin de un grfico


Crea una Shape Grfica desde una shape
theGraphicCircle = GraphicShape.Make (theCIrcle)
Aade la Shape Grfica a la Lista Grfica
theGraphicList = theVIew.GetGraphics
theGraphicLIst.Add (theGraphicCircle)

Creacin y visualizacin de un grfico


Las shapes grficas (GraphicShapes)se crean a partir de shapes. Se debe crear primero una definicin matemtica de una shape y
despus crearla. Para convertir una shape en una shape grfica se usa el requerimiento Make con la shape definida, sobre la clase
GraphicShape.
Se puede aadir la GraphicShape a la lista de grficos de una vista (o composicin). Una vez que se tienen la lista de grficos del
documento, use el requerimiento Add con la GraphicShape como parmetro.
Debido a que las shapes grficas se asocian con la lista de grficos, la shape grfica se dibuja inmediatamente sobre el documento, y
todas las shapes grficas se redibujan cuando se abre el documento o actualiza.

Cambio de la simbologa de un grfico


Asigna un relleno
theGraphicCircle = SetSymbol (Vectorfill.Make)
Toma el smbolo grfico y cambie sus propiedades
theSym = theGraphicCircle.GetSymbol
theSym.SetStyle(#VECTORFILL_STYLE_HATCH)
theSym.SetAngle(45)
theSym.SetOLWidth (3)
theSym.SetOLColor (Color.GetRed)
Redibuja el grfico con su nueva simbologa
theGraphicCircle.Invalidate
Cambio de la smbologa de un grfico
Una shape grfica tiene un smbolo asociado con propiedades que se pueden cambiar. El requerimiento GetSymbol devuelve un smbolo
grfico. Sus propiedades son el tipo, el tamao en puntos, y el color (background, foreground y outline)
Patterns de relleno
Los patterns de relleno tienen tres variantes: VectorFill, RasterFill y CompositeFill (smbolo de relleno con mltiples capas). Se puede
crear cualquier tipo de smbolo usando el requerimiento Make sobre la clase apropiada. Use el requerimiento SetStyle con la enumeracin
VectorFillStyleEnum o RasterFillStyleEnum para asignar el estilo al nuevo smbolo. Consulte la ayuda para consultar la lista completa de
estilos.
El siguiente ejemplo asigna un relleno verde slido a un smbolo:
theSym = RasterFill.Make
theSym.SetStyle (#RASTERFILL_STYLE_SOLID)
theSym.SetColor(Color.GetGreen)
theGraphicCircle.SetSymbol (theSym)

Redibujo del grfico


Despus de cambiar el smbolo grfico, debe redibujarlo. El requerimiento Invalidate enviado a un grfico redibuja el grfico con su nueva
simbologa. Slo se redibujar el rea cubierta por el grfico, no el display completo.

Localizacin y movimiento de un grfico.


Devuelve el punto origen
location = theCar.GetOrigin
Mueve y redibuja el grfico
theCar.Invalidate
theCar.SetOrigin(aNewPoint)
theCar.Invalidate

Borra de la posicin antigua


Mueve
Redibuja a la nueva posicin

Cambio de la sismologa de un grfico


Se puede localizar un grfico y mover ste desde una posicin a otra. Cuando se mueve un grfico, se debe redibujar la pantalla para
reflejar la nueva posicin del grfico. Se puede localizar la posicin actual de el grfico con el requerimiento GetOrigin. La posicin
devuelta es la coordenada abajo-izquierda de el grfico.
Movimiento del grfico
Para crear apariencia de movimiento, el grfico debe borrarse de su posicin original y despus redibujarse en su nueva posicin. Para
hacer eso, use el requerimiento Invalidate dos veces: una antes de asignar la posicin inicial, y otra despus de asignarla. La nueva
posicin se asigna usando el requerimiento SetOrigin.
SIG en tiempo real
Las aplicaciones en tiempo real necesitan mover grficos o cambiar simbologa, cambios en coordenadas o en atributos. Se puede escribir
un script para leer coordenadas o valores de atributos a intervalos de tiempo (p.e. cada minuto) usando el requerimiento DelayedRun. Se
puede usar la
Comunicacin Entre Aplicaciones (IAC) si se usa otro software para proporcionar coordenadas o atributos. Para ms
informacin acerca de IAC, ver apndice B, Comunicacin con otros software.
Creacin de simbologa de punto
Los smbolos puntuales se crean usando una BasicMarker con el requerimiento Make. Los estilos disponibles se definen por un
BasicMarkerStyleEnum . Ver la ayuda para ver una lista completa de estilos. En el ejemplo, car (almacenado en formato Raster de Sun)
fue convertido en un smbolo con el siguiente cdigo.
thePointSym = BasicMarker.Make
thePointSym.SetSyle (#BASICMARKER_STYLE_ICON)
theIcon =Icon.Make ( c:\temp\car.rs.AsFileName)
thePointSym.SetIcon (theIcon)
Invalidate
Invalidate sobre un grfico redibuja la porcin del display ocupada por el grfico.

Asociacin de grficos a un tema.


Toma la lista de grficos de la vista
theViewGraphics = theVIew.GetGraphics
Mergea la lista de grficos de la vista con el conjunto de grficos del tema
theTheme.GetGraphics.Merge (theVIewGraphics)
Apariencia con el tema encendido

Apariencia con el tema apagado


Grficos asociados

Grficos no asociados

Localizacin y movimiento de un grfico.


Una coleccin de grficos puede ser asociada a un tema en particular. Asociando grficos a un tema, se les puede hacer dependientes de
la escala y con la visibilidad del tema.
La Lista Grfica (GraphicShape) es una coleccin de grficos asociados con el rea del display de la vista. Un conjunto grfico
(GraphicSet) es una coleccin de grficos asociados con un tema. (p.e. aadido a un GraphicSet existente o creando uno nuevo) usando
el requerimiento Merge.

Uso de shapes para seleccionar entidades de tema

Seleccin entidades con grficos seleccionados


theGraphics = theView.GetGraphics.GetSelected
theShapeList = {}
for each g in theGraphics
theShapeList. Add (g.GetShape)
end
theTheme.SelectByShapes (theShapeList, #VTAB_SELTYPE_NEW)
Selecciona entidades con una shape sencilla definida por el usuario
theRectangle = theView.ReturnUserRect
theTheme. Select ByRect (theRectangle, #VTAB_SELTYPE_NEW))

Uso de shapes para seleccionar entidades de tema


Para seleccionar entidades desde un tema, se pueden usar grficos seleccionados desde la GraphicList o usar una shape sencilla
definida por el usuario. En cada caso, la seleccin se hace con la shape ( p.e. con la definicin matemtica, no con el grfico)
Seleccin de entidades a partir de grficos seleccionados
Se pueden usar GraphicShapes de una GraphicList para seleccionar entidades de un tema que intersecten. Use el requerimiento
GetSelected sobre la lista grfica para devolver slo los shapes grficas seleccionadas. Para cada shape grfica en la lista, debe
encontrar su shape usando el requerimiento GetShape. Cuando se
vaya tomando cada shape, se aade a las lista con el
requerimiento Add. Use el requerimiento Select ByShapes para encontrar todas las entidades en el tema activo que intersecta las
shapes.
Seleccin de entidades a partir de una shape definida por el usuario
Si se tiene una shape que no forma parte de la GraphicList, al igual que hara usando cualquiera de los requerimientos UserReturn, use el
requerimiento que empieza con SelectBy y aada la shape apropiada. Por ejemplo, use el requerimiento SelectByRect con el
requerimiento ReturnUserRect.
#VTAB_SELTYPE_NEW es un tipo de seleccin que sustituye la seleccin existente por una nueva (New Set en Query Builder)
Determinacin de si hay o no vecindad
Antes de llevar a cabo la seleccin, puede determinar si hay relacin de vecindad entre dos shapes. Contains(contiene),
Intersects(Intersecta) y IsWithin (est a una distancia de) son ejemplos de requerimientos que se deben usar para eso. Dichos
requerimientos devuelven un valor booleano que define si hay o no vecindad.
stat1 = aShape.Contains(anotherShape)
stat2= aShape.Intersects(anotherShape)
stat3 = aShape.IsWithin(anotherShape,300)

Adicin de entidades a un tema de shapes


Cada tabla de entidades del tema tiene una campo Shape.
Aade nuevas shapes al tema editable
pt= Point.Make (720000,390000)
shapeField = theFTab.FindField ( shape )
rec = theFTab.AddRecord
theFTab.SetValue ( shapeField, rec , pt )

Adicin de entidades a un tema de shapes


Se pueden aadir nuevas entidades a cualquier tema editable (p.e. a una tema creado a partir de un fichero de shapes).Cada Ftab del
tema tiene un campo Shape que almacena la informacin geomtrica asociada con cada registro. Al tiempo que se aaden nuevas
entidades al tema, se pretende aadir nuevos registros a la FTab.
Adicin de nuevas entidades
Se puede construir la shape para la nueva entidad usando el requerimiento Make o ReturnUser. Se puede pedir al usuario las
coordenadas con MsgBox.Input
Trabajo con proyecciones
Despus de construir la shape, se debe chequear la proyeccin de la vista para asegurarse de que las coordenadas estn posicionadas
con propiedad. Use el requerimiento GetProjection para encontrar la proyeccin de la vista. Si hay una proyeccin, se desea que la shape
sea devuelta en las unidades de los datos de la fuente (p.e. coordenadas sin proyeccin). Use el requerimiento ReturnUnprojected sobre
la shape para llevar a cabo dicho clculo. Cuando la shape se coloque sobre la vista, se proyecta junto con todas las otras entidades.
Ejemplo
thePrj = theVIew.GetProjection
thePoint = theDisplay.ReturnUserPoint
unPrjPoint = thePoint.ReturnUnprojected (thePrj)
MsgBox.Info (thePrj.GetClass.ReturnPrjName + NL + NL +
thePoint.AsString + NL+
Unprojected ++ unPrjPoint.AsString, )
Adicin de nuevos registros

Para construir un nuevo registro para la nueva shape, use la Ftab del tema.Use el requerimiento FIndFIeld para encontrar el campo
Shape, y el requerimiento AddRecord para aadir un nuevos registro. Despus, use el
requerimiento SetValue para asignar el valor
del campo Shape a una shape puntual. Nota : el valor no es una cadena, sino la shape actual.

Ejercicio 10: Creacin de shapes y grficos

Paso 1

Iniciar ArcView y abrir un proyecto.

Paso 2

Hacer un informe de las coordenadas X e Y de la shape definida por el usuario

Paso3

Creacin de un grfico y cambio de su simbologa

Paso4

Uso de un grfico para seleccionar entidades

Paso 5
opcional

Animar un grfico.

Ejercicio 10: Creacin de shapes y grficos

En este ejercicio, se tomarn las coordenadas x e y de una shape, se crear un grfico y se cambiar su simbologa, despus
se usar ste para seleccionar entidades. El ltimo paso contiene una animacin ejemplo de un Sistema de Seguimiento de
Vehculos.
Paso 1

Iniciar ArcView y abrir un proyecto.


Es necesario iniciar ArcView. Desde el men Archivo (File), elija Open Project. Moverse al directorio del
ejercicio. Hacer doble clic en ex10.apr para abrir el proyecto para este ejercicio.
Cuando el proyecto se abra, se ver una vista de las calles de Redlands y dos nuevas
herramientas en el lado derecho de la barra de herramientas. Uno tiene el icono XY, el otro un crculo.

Paso 2

Informe de las coordenadas de una shape definida por un usuario.


En este paso, se escribir un script que devuelve las coordenadas x,y de una shape dibujada por el
usuario. Despus, asocie el script con un evento Apply de una nueva herramienta.
Empiece abriendo el script Ejercicio 10, paso 2. ste crea theView buscando la vista
Redlands.
Cree theDisplay enviando a theView el requerimiento GetDisplay.
Cree thePoint enviando al theDisplay el requerimiento ReturnUserDisplay. Se
devolvern las coordenadas del usuario

Visualice los resultados enviando a MsgBox el requerimiento Info. Use ThePoint


convertido con el requerimiento AsString y una cadena vaca para los dos
parmetros.

Compile el script pero no lo testee todava. Debe primero asociar ste con un control
Asocie el script con un control.
Responda a las siguientes cuestiones para determinar con qu control y con qu
propiedad del Evento se debera asociar el script.
Con que evento asociar el script? Apply Click Update
Por qu?
Qu control ejecutar ese script?
Men
Botn Herramienta
Por qu?
Use al caja de dilogo de personalizacin (Customize) par visualizar las Herramientas de la vista en el
Editor del control. Asocie el script Ejercicio10, paso2 con la propiedad Apply de la herramienta XY.
Verifique que el script se ejecuta adecuadamente testeando la herramienta XY.
Cuando acabe, cierre todas las ventanas excepto la de la ventana de Proyecto y la vista Redlands.

Paso3

Cree un grfico y cambie su simbologa.


Cree un crculo basado en un definicin del usuario, despus altere su simbologa antes de
visualizarlo.
Abra el script Ejercicio 10, Paso3. El script crea theView buscando la vista Redlands.
Cree una variable TheDisplay enviando a theView el requerimiento GetDisplay.
Defina TheCircle enviando a theDisplay el requerimiento ReturnUserCircle para devolver un crculo cuyo
origen y radio los defina el usuario.

Cree theGraphicCircle enviando a la clase GraphicShape el requerimiento Make con theCircle como
parmetro.

Asigne la simbologa para el crculo tomando el grfico la simbologa del crculo y cambiando
sus propiedades .Cambie el relleno a un pattern rojo slido y azul el borde.
Cree theSymbol enviando a theGraphicCircle el requerimiento GetSymbol
Asigne el color a theSymbol con el requerimiento SetColor. Como parmetro, enve a la clase Color el
requerimiento GetRed.

Asigne el estilo a theSymbol con el requerimiento SetStyle, y use la enumeracin


#RASTERFILL_STYLE_SOLID como parmetro.

Asigne a theSymbol el color del borde con el requerimiento SetOLColor


Asigne a theSymbol el color del borde con el requerimiento SetOLColor, usando la
clase Color con el requerimiento GetBlue como parmetro.

Aada el crculo definido por el usuario a la lista grfica de la vista.


Cree theGraphicList de theView enviando el requerimiento GetGraphics

Despus enve a theGraphicList el requerimiento Add para aadir

theGraphicCircle.

Compile el script, pero no lo testee todava.


Use la caja de dilogo Customize para visualizar las Herramientas de la Vista en el
Editor de Controles. Asocie el script ejercicio 10, paso 3 con la propiedad Apply de la herramienta Crculo.

Paso4

Uso de un grfico para seleccionar entidades.


Abra la vista Redlands Parcels.
Despus abra el script Ejercicio 10, paso4. El script asigna la variable theView
con la vista Redlands, y asigna la variable theTheme con el tema Parcels.
Inicie el script asegurndose de que Parcels es el nico tema activo en la vista.
Cree theThemeList enviando a theView el requerimiento GetThemes
Use la lista en un estamento For Each para procesar cada thm en theThemeList
En el bucle, inactive todos los temas usando el requerimiento SetActive con false como parmetro.

Finalice el bucle

Active theTheme enviando el requerimiento SetActive con true como parmetro.

Ahora, coloque el crculo alrededor del punto central dado por el usuario.
Cree theDisplay enviando a theView el requerimiento GetDisplay
Construya thePoint enviando a theDisplay el requerimiento ReturnUserPoint para devolver la localizacin x,y de
un punto dado por el usuario

Cree theCircle enviando el requerimiento Make para crear una shape matemtica con
thePoint como centro del crculo y 300 de radio.

Cree theGraphicCircle enviando a la clase GraphicShape el requerimiento Make, con el crculo como parmetro.
Aada ahora el grfico a la lista de grficos y use ste para seleccionar entidades.
Cree theGraphicList enviando a theView el requerimiento GetGraphics.

Despus enve a theGraphicsList el requerimiento Add para aadir theGraphicCircle.


Seleccione las entidades en theTheme usando el requerimiento SelectByShapes. Los
parmetros incluyen una lista,{theCircle}, y el enumerador #VTAB_SELTYPE_NEW.
Compile el script, despus ascielo con la herramienta Crculo usada en el paso 3.
Testee la herramienta seleccionando algunos puntos en la vista Redlands Parcels. Se crearn nuevos crculos y
se seleccionarn y destacarn las entidades que toquen con
ellos. Cuando acabe, cierre todas las ventanas
excepto la de Proyecto.

Paso 5
opcional

Animar un grfico
Las aplicaciones en tiempo real trabajan continuamente con datos cambiantes continuamente. Por ejemplo, para
visualizar el movimiento de un vehculo, las coordenadas del objeto deben cambiarse continuamente. En este
paso, se correr algn script existente para crear un Sistema de Seguimiento de Vehculos.
Abra la vista Vehicle Tracking System. Tiene un nico GUI. El botn Sparky se aadi al lado derecho de la barra
de botones.
Un script (VTSI) provoca el proceso de seguimiento de vehculos se procesa para empezar, y el otro script (VTS2)
lee las coordenadas del vehculo cada segundo y actualiza la posicin del grfico en la vista. El requerimiento
av.DelayedRun se usa para leer un script en un intervalo dado.
Abra el script VTSI y examine su contenido.
Abra la caja de dilogo de personalizacin (Customize) y asocie el script VTSI con el botn Sparky.
Abra y examine el script VTS2.
Inicie el sistema de seguimiento simulado haciendo clic en el botn Sparky.

End

S EC CI O N

11

Trabajo con GUIs de Documentos


Trabajo con GUIs de Documentos

11-2

DocGUI
Creacin de un docGUi para un documento especfico
Recuperacin y modificacin de controles del GUI
Colocar nuevos controles
Aadir un men
Aadir un botn con un men personal
Cambio de la visibilidad de los controles

11-4
11-6
11-8
11-10
11-12
11-14
11-16

Comprensin de los eventos Update


Habilitar y deshabilitar controles

11-18
11-20

Ejercicio 11: Cambio del GUI

11-23

Trabajo con GUIs de documentos

Construir nuevos GUIs para documentos especficos


Usar scripts para modificar el GUI
Cambiar el GUI como cambio de condiciones
Uso de eventos Update

Trabajo con GUIs de documentos


Esta seccin introduce la case DocGUi y los requerimientos usados con instacias de la clase.
Esta clase se usa para construir nuevos GUIs para documentos especficos. Los componentes de los
GUIs como barras individuales y controles, pueden modificarse con script de Avenue mejor que a
travs de la caja de dilogo de Personalizacin (Customize).
Dichos scripts, acompaados de los scripts de eventos Update permiten cambiar el GUI
como condiciones en el cambio de la aplicacin.

El docGUI
Un proyecto est asociado con muchos docGUIs
Un docGUI est compuesto de una barra de men, una barra de botones y una barra de herramientas.

PopupSet

MenuBar

DocGUI
Project

ButtonBar

Doc

ToolBar

El docGUI
Un proyecto est asociado con muchos docGUI (p.e. uno para las vistas, otro para las composiciones, etc. Cada docGUI est compuesto
por una barra de mens, una de botones y otra de herramientas. Algunos requerimientos devuelven el GUI completo, mientras que otros
devuelven las barras ce controles individuales.
Use el requerimiento GetGUIs para devolver una lista de todos los GUIs en un proyecto. Este requerimiento es til para llevar a cabo
operaciones globales, como adicin del mismo botn a todos los GUIs.
Se puede devolver un GUI especfico usando el requerimiento FindGUI con el nombre theGUI (p.e. "vista" o "composicin".) Se puede
tambin conseguir el GUI activo actual se enva a la aplicacin el requerimiento GetActiveGUI.
Una vez que se tiene theGUI, se puede devolver uno de esas barras de controles con los requerimientos GetMenuBar, GetButtonBar,
GetToolBar.
Ejemplos

Los requerimientos que devuelven GUIs y conjuntos de controles


theGUIs = theProject.GetGUIs
theGUI = theProject.FindGUI ("layout")
theButtonBar = theGUI.GetButtonBar
theToolBar = av.GetActiveGUI.GetToolBar

Creacin de un docGUI para un documento especfico


Crear y nombrar un docGUI
cityGUI = av.FindGUI ("view").Close
cityGUI = av.SetName ("TaxGUI")
Aadir el docGUI a un proyecto
Personalizar el nuevo GUI
Asociar el docGUI con un documento
av.GetProject.FindDoc ("City Parcels. SetGUI("TaxGUI"))

Creacin de un docGUI para un documento especfico


En el SIG ArcView, el usuario ve el mismo docGUI para todos los documentos el mismo tipo (p.e. todas las vistas tienen el mismo GUI y
todas las tablas tienen el mismo GUI). Con Avenue se puede crear un docGUI nico para un documento especfico. Por ejemplo, una
vista de parcelas de tasas puede tener un docGUI diferente de una vista de redes de transporte en U.S.
Crear y nombrar el docGUI
Un docGUI nuevo se crea tomando un docGUI existente (p.e. el GUI de la vista) y copiando ste. El requerimiento Clone crea una copia
de un docGUi existente. El requerimiento SetName da un nombre a un nuevo docGUI. Para usar este nuevo
GUI se debe primero
aadir ste al proyecto.Se hace esto, enviando al proyecto el
requerimiento AddGUI.
Personalizar el nuevo docGUI
Despus de que el nuevo GUI se ha aadido al proyecto, aparece en la lista Tipo(Type) en la caja de dilogo de Personalizacin
(Customize).Use la caja de dilogo o un script de Avenue par hacer los cambios en el docGUI. Ver seccin 1, Entorno de Desarrollo de la
Aplicacin para ms informacin sobre el uso de esta caja de dilogo.
Asociar el docGUI con un documento
El GUI se asocia con un documento usando el requerimieto SetGUI. En el ejemplo anterior, TaxGUI est asociado con la vista City Parcels.
Otras vistas en en proyecto estn asociadas con el GUI original de la vista. Cuando el usuario activa la vista City Parcels se visualiza
TaxGUI.

Recuperacin y modificacin de controles GUI


Toma el botn
thebBar = av.GetProject.FindGUI ("View").GetButtonBar
theButton = theBar.FindByScript ("View.ThemeProperties")
Cambia las propiedades de los botones y herramientas
theButton.SetIcon(Props)
theButton.SetTag("Properties")
theButton.SetVisible(true)
theButton.SetEnabled(true)
Cambia las propiedades del men y opciones de men.
theMenu.SetLabel ("&File")
theMenuChoice.SetLabel("Close &All")

Recuperacin y modificacin de controles GUI


Antes en el curso, se us la caja de dilogo de personalizacin para cambiar las propiedades de los controles. Se pueden llevar a cabo
esas operaciones a travs de scripts de Avenue. El uso de scripts permite cambiar el GUI como condiciones en el cambio de sesin de
ArcView.
Todas las propiedades de los controles pueden asignarse con un requerimiento que comience por Set.Con los botones y herramientas,
por ejemplo, use el requerimiento SetIcon para aadir un icono. Use SetEnabled para asignar utilidad al control y SetVisible para esconder
o mostrar un control. Use SetTag para almacenar una cadena descriptiva con un control y GetTag para recuperarla.
Para mens y opciones de men, use el requerimiento SetLabel para crear una etiqueta

Colocar nuevos controles


Los controles se referencian por un nmero de ndice
Use (-1) par insertar a la izquierda y arriba

Colocar nuevos controles


Los controles se referencian por un nmero de ndice. Los controles se insertan a la derecha de la posicin ndice asignada. Esto est de
acuerdo con la posicin de un nuevo control a la derecha del seleccionado en la caja de dilogo de Personalizacin.
En el ejemplo anterior, si se usa (1) como ndice de la barra de mens, se insertar un nuevo men a la derecha del men Edit. El ndice (1) se usa para insertar el men u opcin de men en la primera posicin.
Uso del requerimiento Count
Para insertar un nuevo control al principio o final de la barra, se puede usar el requerimiento Count sobre la lista de controles
(GetControls)para determinar el nmero de controles en la barra. Se puede usar tambin este nmero para calcular la posicin ndice.
Para ms informacin acerca de los requerimientos usados para manejar listas, ver seccin 7, Ramificaciones y Bucles.
Clculo de la posicin ndice
Use el requerimiento Count para identificar la ltima posicin o cualquier otra posicin
punto de controles).
menu.Count = theMenuBar.GetControls.Count
windowMenuIndex = menuCount-2

sobre la barra de mens( o cualquier otro

Adicin de un men
Aade un men en la primera posicin
aMenu=av.GetActiveGui.GetMenuBar.New (-1)
aMenu.SetLabel("&Print")
' asigna etiqueta al men

Aade opciones de men


choiceList = {"Maps","Charts","Reports"} 'elabora una lista
index = -1
for each c in choiceList
' aade una nueva opcin
theChoiceList = aMenu.New (index) ' etiqueta la opcin
theChoiceList.SetLabel ("&"+c) ' incrementa el ndice
index=index+1
end

Adicin de un men
Se puede aadir un nuevo men con un script. Es til cuando se quieren crear mens en base a condiciones actuales del proyecto. Por
ejemplo, se podra crear un nuevo men en base a la vista actual y temas, las entidades seleccionadas o diferentes privilegios de acceso
a los datos.
Adicin de un men a la barra
Se aade un nuevo men a al barra enviando el requerimiento New a la barra de men actual. El requerimiento New requiere un
parmetro para definir la posicin del ndice.
Adicin de opciones de men
Las opciones de men se aaden enviando el requerimiento New al men actual.
Las opciones de men se crean desde una lista, donde los elementos en la lista son las etiquetas de las opciones de men. & se aade
a cada elemento para definir una clave de acceso para cada opcin. Ver seccin 1, Entorno de Desarrollo de
ArcView, para ms de
una etiqueta y clave de acceso.

ndice
En el ejemplo, en ndice empieza por (-1), lo que indica que la primera opcin se coloca a la cabeza del men. Dentro del bucle, el nmero
ndice se incrementa para aadir cada opcin detrs de la opcin previa. Si el nmero de ndice no se incrementa, cada opcin de men
podra insertarse en la cabeza y podra aparecer en orden inverso en la muestra. (p.e. Informes en la cabecera, despus Grficos y luego
Mapas).

Adicin de un botn con un icono personal


Crear un fichero de grficos (p.e. dollar.xbm)
Aadir un botn
newButton = av.GetActiveGUI.GetButtonBar.New (-1)
Crear un icono y ponerlo en el botn
myIcon = Icon.Make ("dollar.xbm".AsFileName)
newButton.SetIcon (myIcon)

Adicin de un botn con un icono personal


Antes de crear el fichero de grficos, cree un icono con el requerimiento Make. El requerimiento Make necesita un nombre de fichero.
Convierta una cadena que contenga el nombre del path del fichero de grficos en un nombre de fichero usando el requerimiento
AsFileName. Use el requerimiento SetIcon con el icono como parmetro para especificar el icono que ha de ser dibujado en la cara del
botn.
X-Bitmap
(*.xbm)
MacPaint
(*.mcp)
WindowsDIb
(*.bmp)
SunRaster
(*.rs)
Nexpert Object Image (*.obj)
GIF
(*.gif)
TIFF (*.tif)
Tamao de los iconos

Los iconos para los botones son de 20*17 pixeles. Los iconos para las herramientas son de 18*15 pixeles.
Iconos del Gestor de Iconos
Para seleccionar un icono especfico de los disponibles en el Gestor de Iconos (Icon Manager), enve el requerimiento Get a la lista de
icono devuelta por el requerimiento GetIcons sobre el objeto IconMgr. Por ejemplo:
IconMgr.GetIcons.Get(20) devuelve el icono de ndice 20

Cambio de la visibilidad de los controles


Conmutar la visibilidad de cada botn
for each b in av.GetActiveGUI.GetButtonBar.GetControls
if (b.IsVisible) then
b.SetVisible (false)
else
b.SetVisible(true)
end
end
OR
for each b in av.GetActiveGUI.GetButtonBar.GetControls
b.SetVisible(b.IsVisible.Not)
end
Cambiar la visibilidad de la herramienta Edit
for each b in av.GetActiveGUI.GetButtonBar.GetControls
ttag = t.GetTag
t.SetVisible ((ttag = "edit")) and (login= "steve")
end

Cambio de la visibilidad de los controles


Esos ejemplos muestran cmo examinar y cambiar los controles en la barra.
Cambiar la visibilidad de los controles sobre el GUI es una forma de limitar las funciones a las que un usuario puede acceder, y de
presentar solo aquellas funciones que sean apropiadas en un momento dado.
Conmutar la visibilidad de un control
Para conmutar la visibilidad de cada control en la barra, se debe primero tener una lista de todos los controles en la barra. Enviar el
requerimiento GetControls a la barra de controles para hacer eso. Determinar la visibilidad de cada control, y despus invertir dicho ajuste
usando el estamento If.
Use el requerimiento IsVisible para determinar la visibilidad del control. Use el requerimiento SetVisible para conmutar la propiedad del
control de visible(true) a invisible(false).
Uso del requerimiento Not
Debido a que el requerimiento IsVisible devuelve una respuesta true o false ( p.e. un objeto booleano), se puede usar sta donde se
requiera un valor booleano. En el segundo ejemplo, el requerimiento IsVisible est enlazado con el requerimiento Not, para invertir la
visibilidad del botn usando la construccin If Then.
Uso de la propiedad Tag
Cada control tiene una propiedad Tag que puede almacenar cualquier cadena. Se puede usar la etiqueta para identificar de forma nica
cada control. Se puede asignar una propiedad tag a un control en la caja de dilogo de Personalizacin(Customize) o a travs de un
script, enviando el requerimiento SetTag a el control. Una vez asignada, se puede recuperar usando el requerimiento GetTag.
En el ejemplo anterior, en cada iteracin del bucle de toma una etiqueta de un control. Si la etiqueta indica que el control es la herramienta
Edit, y el usuario ha introducido la password correcta la herramienta se hace visible.

Comprensin de los eventos Update


Un evento Update tiene lugar cuando se cambia un documento
Aade un tema, conmuta la visibilidad del tema,
Selecciona entidades de la vista o tabla
Pone activo un campo, selecciona un registro.
Los scripts Update hacen cambios en el docGUI
Habilita o deshabilita controles
Visibiliza o Invisibiliza controles
Los scripts Update se asignan a las propiedad Update de un control
Cualquier control comparte el mismo script
Cualquier evento Update

todos los scripts Update

Comprensin de los eventos Update


Cuando se trabaja con ArcView, los GUI cambian en base al estado del documento. Por ejemplo, si se han seleccionado entidades en
una vista, se puede usar Zoom para el botn seleccionado; si no est , el botn se deshabilita. Este tipo de cambio en el GUI se hace por
un script que es asignado por un evento Update
Ejemplos de Eventos Update
Un evento Update tiene lugar cuando cambia el estado de un documento. Se incluyen ejemplos de eventos Update que aaden temas a
un vista, conmutan un tema en apagado y encendido, seleccionan entidades en una vista o registros en una tabla, y hacen activo un
campo en una tabla.
Los scripts Click y Update normalmente ejecutan scripts que llevan a cabo operaciones en un determinado botn o herramienta en
particular. Los eventos Update ejecutan scripts que conmutan la mayora de los controles en habilitado o deshabilitado, o visible e
invisible, en base a condiciones especficas.
Asignacin de scripts a los controles
Para permitir que cambie un control durante un evento Update, asigne el script que lleve a cabo cambio en la propiedad Update. El mismo
script puede asignarse a muchos controles. De esta forma, muchos controls pueden responder de forma idntica a una condicin dada
(p.e. pueden poner invisible o deshabilitado)
A pesar de que los eventos Click y Update tpicamente ejecutan un script, un evento Update provoca que todas las propiedades Update
de todos los scripts asignados se ejecuten.

Habilitar e inhabilitar controles


Asigna la propiedad SetEnabled en base a una condicin
SELF se refiere al script en ejecucin actual del control
Ejemplo de evento update: aadir el primer tema

Habilitar e inhabilitar controles


Cuando el estado de un documento en particular cambia, el GUI debera cambiar para tener disponibles slo las operaciones apropiadas.
Por ejemplo, el script View.HasThemesUpdate asigna la propiedad SetEnabled de un botn en base al nmero de temas en la vista. Si no
hay temas en la vista, el control se deshabilita; si hay al menos un tema en la vista, el control se habilita
El script TheView.HasThemesUpdate se asocia con las propiedades Update de todos los botones de la barra (excepto Save, AddThemes
y Help). Cuando se aade un tema, se produce un evento update. View.HasThemesUpdate se ejecuta una vez para cada botn; debido a
que si el nmero de temas es mayor de uno, se habilitan todos los controles.
Uso de SELF
Los scripts Update se ejecutan una vez para cada control a que estn asignados. Use la palabra SELF para referirse al control actual de
ejecucin del script update. Cuando un control ejecuta el script Update, ste aplica esto a si mismo. Esto permite que el mismo script sea
usado por cada control.
En la seccin 6. Personalizacin de la aplicacin y el proyecto, hay una explicacin de SELF en relacin a valore pasados cuando se corre
un script desde otro.
Script Update para conmutar los iconos de los controles
El siguiente script usa SELF para almacenar y conmutar el icono de un control. Primero, el icono se almacena en el comentario (tag) del
control. Despus el nuevo icono (ndice 20 del Gestor de Iconos) se asigna al propio control.
(SELF.SetObjectTag(SELF.GetIcon))
if (alguna condicin ) then
(SELF.SetIcon(IconMgr.GetIcons.Get(20)))
end

Ejercicio 11: Cambio del GUI

Paso 1

Iniciar ArcView y abrir un proyecto.

Paso 2

Aadir un men que contenga una opcin para cada tema

Paso3

Crear un icono y colocar ste en una herramienta

Paso4

Habilitar un herramienta en base a una condicin

Paso 5
opcional

Conmutar la visibilidad de todos los botones, excepto el de ejecucin

Paso 6

Crear un GUI para una vista diferente.

Ejercicio 11:

Cambio del GUI

En este ejercicio, se vern varias formas de cambiar GUI a travs de scripts de Avenue. Se cambiar el GUI en base a una condicin. Se
podrn construir GUIs diferente para dos vistas distintas
Paso 1

Iniciar ArcView y abrir un proyecto.


Si es necesario iniciar ArcView.
Desde el men Archivo (File), elija Open Project. Moverse al directorio ejercicio. Hacer doble clic en ex11.apr para
abrir el proyecto para este ejercicio.
Cuando el proyecto se abra, se ver la ventana de Atlanta displayada. Un botn y herramienta han sido aadidos a
la vista GUI. Vea que hay una herramienta extra sin icono entre las herramientas HotLink y rea of Interest. Tambin
est el botn del diamante verde que se usar en el paso 5.

Paso 2

Aadir un men que contenga un opcin para cada tema


En este paso, se escribir un script que aada un men a el docGUI de la Vista. El nuevo men ser aadido entre
los mens Graphics y Window .El men contendr una opcin para cada tema en la vista. El men contendr ona
opcin para cada tema en la vista
Desde la venta de Proyecto, abra el script Ejercicio 11, Paso2Primero, tome el GUI de la vista y la barra de mens
Crea una variable llamada theViewGUI enviando a la aplicacin el requerimiento GetActiveGUI.

Ahora cree una variable llamada theMenuBar enviando el requerimiento GetMenuBar.


Despus, aadir un nuevo men tras el men Graphics ( que es el tercero desde el final). Despus
etiquetar el el men.
Cree la variable llamada menuIndex enviando a theMenuBar el requerimiento
Getcontrols. Despus enve el requerimiento Count y reste 3 para tomar el ndice del men Graphics.

Ahora cree una variable llamada theMenu enviando a theMenuBar el requerimiento New. El parmetro del
requerimiento New es el nmero ndice.

Para etiquetar theMenu, use el requerimiento SetLabel con Display como cadena
Tome una lista de los temas en la vista Atlanta. Se usar esta lista para crear las opciones de men
Cree una variable llamada theThemeList enviando a la aplicacin el requerimiento
GetActiveDoc para recuperar la vista, despus enviar el tema GetThemes a la vista
Aada un opcin al men por cada tema activo correspondiente
Use el bucle For Each sobre cada thm en theThemeList
Dentro del bucle, cree una variable llamada theChoice enviando a theMenu el
requerimiento New. Use -1
como nmero de ndice para el requerimiento New para aadir la nueva opcin al principio

Etiquete theChoice enviando el requerimiento SetLabel. El parmetro SetLabel se crea enviando a cada thm el
requerimiento GetName.

Despus, asignar un script que corra cuando la opcin se men sea elegida. Un script llamada ThemeToggle ya
ha sido escrito y conmutar la visibilidad de cualquier tema que sea elegido del men.
Asigne un script a theChoice enviando el requerimiento SetClick. El parmetro de SetClick es una cadena que
contiene el script llamado ThemeToggle
Finalice el bucle For Each
Compile el script. Active la vista Atlanta, despus corra el script. Pruebe el nuevo men. Vea cmo trabaja el script
ThemeToggle, abra el script y examnelo.

Paso3

Crear un icono y colocar ste en una herramienta


En este paso, crear un icono desde un fichero de grficos, aadir este al proyecto,
despus lo usar sobre
una herramienta.
Abra el script Ejercicio 11, Paso3.
Cree una variable llamada theIcon enviando a la clase Icon el requerimiento Make.
Como parmetro , de la cadena del path de el fichero del icono en el directorio data
($AVETRAIN/data/dollar.xbm). Despus enve el requerimiento AsFileName a la cadena para convertir ste en un
nombre de fichero.
Despus, tome la barra de herramientas de la vista.
Cree la variable llamada theToolBar enviando a la aplicacin el requerimiento GetActiveGUI para recuperar el GUI
de la vista. Despus enve el requerimiento GetToolBar al GUI de la vista para recuperar la barra de herramientas.

Cree una variable llamada theToolList enviando a theToolBar el requerimiento


GetControls.
Despus, tome la herramienta sin icono ( en posicin 9) y asigne el signo de dlar como su propiedad Icon.
Cree la variable llamada theTools enviando a theToolList el requerimiento Get. El parmetro para el requerimiento
Get es 9.
Enve a theTool el requerimiento SetIcon y use theIcon como parmetro.
Compile y corra el script

Abra la caja de dilogo de personalizacin y seleccione la herramienta Dlar. Haciendo doble clic en su propiedad
Apply se visualizar el script Manager. Haga clic par seleccionar el script ShowDeposit. Cierre la caja de dilogo de
Personalizacin.
Active la vista y use la nueva herramienta Dlar sobre el GUI de la vista.
Paso4

Habilitar un herramienta en base a una condicin


Escriba un script que habilite la nueva herramienta Dlar cuando el tema Banks se active y que se deshabilite cuando el
tema Banks est apagado.
Abra el script del Ejercicio 11, paso 4.
Cree una variable llamada theTheme enviando a la aplicacin los requerimientos GetProject y FIndDoc para buscar la vista
Atlanta. Despus enve a la vista el requerimiento FindTheme para encontrar el tema Banks.
Enve a SELF (la herramienta Dlar) el requerimiento SetEnabled. Para el parmetro, enve a theTheme el requerimiento
IsVisible para devolver el estado de visibilidad del tema Banks . Si IsVisible devuelve false, el tema est apagado y la
herramienta inhabilitada. Si el tema devuelve true, el tema est encendido y la herramienta habilitada.
Compile el script, pero no lo corra todava
Para que este script corra correctamente, debe asociarse con un evento Update(el tema Bank encendido o apagado) . Se
usar la caja de dilogo de Personalizacin para asignar al script la propiedad Update de la herramienta Dlar.
Abra la caja de dilogo de personalizacin y seleccione la herramienta Dlar.
Haga doble clic en la propiedad Update para visualizar el Gestor de Scripts. Haga clic en el script Ejercicio 11, paso 4. Cierre
la caja de dilogo de personalizacin.
Para testear el script, active la vista Atlanta. Encienda el tema Banks. La herramienta Dlar debera habilitarse. Apague el
tema Banks. La herramienta debera deshabilitarse.

Paso 5
opcional

Conmutar la visibilidad de todos los botones, excepto el de ejecucin


Escriba un script que conmute la visibilidad de todos los botones, excepto del botn que corre el script. El botn del
diamante verde, ejecutar el script y controlar la visibilidad de todos lo dems botones. (Este script es til si se quiere
esconder botones en la barra de botones.)
Abra el script del Ejercicio 11, paso 5.
Construya un bucle que vaya travs de cada botn de la barra de botones de la vista.
Empiece con el estamento For Each, use la variable llamada btn para cada botn de la barra de botones. Cree la barra de
botones enviando a la aplicacin el requerimiento GetActiveGUI, enviando el requerimiento GetButtonBar.

Cuando el bucle encuentre el botn del diamante verde, no cambiar su visibilidad


Dentro del bucle For Each, use el estamento If then para chequear si btn es igual a SELF (botn del diamante verde). Si es
as, contina.
Si no, enve a btn el requerimiento SetVisible. Para el parmetro SetVisible, enve a btn el requerimiento IsVisible seguido
por Not. El parmetro devuelve la visibilidad opuesta, que conmuta el botn.

Finalice los estamentos IfThen y For Each


Compile el script, pero no lo corra, o todos los botones se apagarn.
Abra la caja de dilogo de Personalizacin y elija el botn Diamante Verde. Asigne el script Ejercicio 11, paso5 a la
propiedad Click del botn.
Paso 6

Crear un GUI para una vista diferente.


En este paso, se crear un nuevo GUI para la vista Atlanta Banks que sea diferente de GUI de la vista Atlanta.
Abra el script Ejercicio 11, paso6.
Har una copia de GUI de la vista standard, cambie su nombre y aada sta al proyecto.
Cree una variable llamada myNewGUI enviando a la aplicacin el requerimiento FindGUI para devolver el GUI de la vista.
Despus, enve el requerimiento Clone para hacer una copia.

Asigne el nombre de myNewGUI enviando el requerimiento SetName con BankGUI como cadena

Aada ste al proyecto enviando a la aplicacin el requerimiento GetProject, despus aada el requerimiento AddGUI con el
parmetro myNewGUI.

Para asociar el nuevo GUI a la vista Atlanta Banks, enve a la aplicacin el requerimiento GetProject seguido por el requerimiento FindDoc
con la vista Atlanta Banks como parmetro, despus enve el requerimiento SetGUI con BankGUI como parmetro.
Para aadir un nuevo ttulo al nombre del documento en la vista Proyecto, enve a myNewGUI el requerimiento SetTitle con A_Banks
como parmetro.
Compile y corra el script.
Abra la caja de dilogo de Personalizacin, y , para Type elija BankGUI. Borre todos los botones, excepto el de Zoom Out.
Aada dos nuevos botones al principio de la barra.
Sobre el primer botn, para la propiedad Icon asignar FrameText; para la propiedad Click, asigne el script OpenTable.
Sobre el segundo botn, para la propiedad Icon asignar MakeChart; para la propiedad Click, asigne el script OpenChart.
Sobre el botn Zoom Out, para la propiedad Click, asigne el script OpenAtlantaView.
Desde el menu Archivo (File), seleccione Close All.
Para la ventana de Proyecto, abra la vista Atlanta Banks. Vea el nuevo GUI de Bank.
Testee los nuevos botones. Use el botn Zoom Out para abrir la vista Atlanta y vea que tiene un GUI diferente.

End

S EC CI O N

12

Construccin de extensiones
Qu es una extensin?
Qu puede almacenarse en una extensin?
Ejemplos de extensiones
Cmo trabajar con extensiones
Creacin de extensiones
El script Make
El script Make (continuacin)
El script Install
El script UnInstall
Uso de extensiones

12-2
12-4
12-6
12-8
12-10
12-12
12-14
12-16
12-18

12-20

Ejercicio 12A: Creacin de una extensin

12-23

Propiedades de las extensiones

12-34

El script Make (continuacin)


El script Install
El script UnInstall
Uso de extensiones

12-36
12-38
12-40
12-42

Ejercicio 12B: Manejo de una extensin

12-45

Qu es una extensin?
Una coleccin de objetos de ArcVIew
Maneja la distribucin de dichos objetos
Los objetos de la extensin no forman parte fsica de un proyecto
Pertenecen a la extensin
Se incorporan al proyecto cuando la extensin se activa
Se borran del proyecto cuando la extensin se desactiva

Qu es una extensin?
extensin es una coleccin de objetos de ArcView.
El concepto de adicin de objetos a un proyecto de forma interactiva no es nuevo y Arcview lo contemplaba antes de desarrollar las
extensiones. Sin embargo, lo que las extensiones aportan, es un significado al manejo de la organizacin de dichos objetos. Antes de las
extensiones, el aadir objetos adicionales al proyecto requera que se importaran los objetos al proyecto. Con las extensiones, los objetos
nunca forman parte fsica del proyecto y no se escriben en el fichero de proyecto. Los objetos pertenecen a la extensin y son
incorporados al proyecto solo cuando el usuario activa la extensin. Se borran del proyecto cuando el usuario desactiva la extensin.
Por ejemplo, se quieren aadir dos botones y una herramienta al GUI del documento.Se debera usar la Caja de Dilogo de
Personalizacin (Customize) para aadir los controles, escribir un script para aadir los controles, o construir un proyecto vaco con los
controles e importar el proyecto vaco. En los tres casos, los controles son una parte permanente del fichero de proyecto cuando se salva
ste. Con las extensiones, los controles forman parte de la extensin, la extensin est activa o apagada, y los controles nunca se
escriben en el fichero de proyecto.
Los objetos puede instalarse o desinstalarse en el proyecto actual:

interactivamente por el usuario


en base a una condicin especificada en un script
al tiempo que el proyecto se abre o se cierra.

Qu puede almacenarse en una extensin?


Controles personales y GUIs
Datos
Scripts

Qu puede almacenarse en una extensin?


El autor de una extensin puede incorporar en sta cualquier objeto de ArcView .Dichos objetos pueden ser controles personales (botones
y herramientas), mens y opciones de men, o interfaces de documentos. Los objetos pueden incluir documentos tales como Tablas,
Composiciones y Plantillas de Composiciones, o objetos en si mismos, tales como temas, shapefiles, grid o temas de imagen y ficheros de
datos. Si los controles se almacenan en extensiones, los scripts soportados por los eventos Click, Apply y Update, tambin necesitan ser
parte de la extensin.
Controles personales
Se puede usar una extensin para cargar mens, botones, herramientas, y que estos soporten scripts que proporcionan una
funcionalidad especfica.
Interfaces de los documentos
Si la funcionalidad que se incorpora es ms que slo una pareja de botones y herramientas, puede ser ms apropiado construir un
docGUI. La extensin carga el docGUI en el proyecto y cuando el script lo especifique, el GUI de el documento activo se asigna a dicho
documento.
Documentos
Una extensin puede proporcionar datos en el formato de vistas de cualquier documento de ArcVIew. Por ejemplo, se puede crear una
vista definitiva para el rea de estudio y querer compartir sta con todos los miembros del departamento. Se puede incorporar ste a la
extensin.
Scripts

Una extensin puede contener script que se necesiten en un proyecto.

Ejemplos de extensiones
Rango de un control el GUI para un conjunto de funciones de anlisis complejas

Ejemplos de extensiones

En ArcView 3.0., ESRI proporciona varias extensiones que ofrecen nuevas funcionalidades. Los tipos de extensiones van desde una que
aade un botn sencillo, tales como la extensin Buffer, a uno que aade un conjunto completo de funciones de anlisis, tales como
Extensin de Anlisis Espacial de ArcView.
Extensiones que vienen con ArcView

Una extensin de Digitizador


Soporta ficheros de datos IMAGINE
Soporta ficheros JPEG
Extensin de Temas de Bases de Datos
Extensin de Lectura CAD

Extensin de Anlisis Espacial de ArcView


La extensin de Anlisis Espacial de ArcView proporciona funcionalidad de anlisis espacial genrico sobre Grid y Temas de Entidades.
Algunas de las funcionalidades almacenadas por esta extensin son : Calcular pendientes, Crear Contornos,
Sumar zonas, Histogramas por zonas, estadsticas de vecindad, y reclasificacin.
Extensin de Anlisis de Red de ArcVIew
El Anlisis de Red de ArcView es la solucin de ArcView para ayuda de los usuarios al trabajar con redes de entidades lineales ms
eficientemente. Cuando se carga el Anlisis de Red, se puede: buscar una ruta de viaje eficiente, determinar las facilidades de acceso y
determinar una rea de servicio

Extensiones sencillas
ArcView proporciona varias extensiones de ejemplo. Algunos de eso ejemplos son: Utilidades de Editor de Scripts,
Herramientas de
Mapa, un selector de Clase, Modelado hidrolgico, Herramientas de visibilidad, y entidades seleccionadas por Buffer. Todos estos scripts
se instalan con ArcView y se accede a ellos a travs del Sistema de Ayuda de ArcView.

Cmo trabajar las extensiones


Almacenados como un fichero de texto
Una subclase de la Clase Objeto Base de Datos (ODB)
ODB
Apllication
Extension

Obj

Script

Project

DocGUI

ScriptEditor

Doc

DocWin

Chart

Layout Table

View

Una clase especial de fichero de Objeto Base de Datos (ODB)


Almacena objetos
Los objetos se leen y recrean (cargan) en otros objetos.
Se usan tres scripts para crear extensiones : Make, Install, Uninstall

Cmo trabajar las extensiones


El diagrama modelo muestra que la clase extensin es una subclase de la Clase Objeto Base de Datos (ODB). El proyecto y las clases de
aplicacin tienen relaciones uno a muchos con la clase extensin
Ficheros ODB
Los objetos ODB son ficheros de textos especiales que permiten un mtodo eficiente de adicin de objetos y almacenamiento de dichos
objetos para una fcil recuperacin. Cuando un objeto se almacena en un fichero de texto ODB existente, los objetos se recaen desde sus
definiciones en el fichero de texto.
Los ficheros de proyecto (.apr) son un ejemplo de objetos ODB. Un fichero de proyecto almacena los objetos necesarios para construir
completamente la aplicacin ArcView y el proyecto actual. Cuando la aplicacin abre un proyecto, ste lee los objetos del ficheros de
proyecto y los recrea.
Una extensin es un fichero que almacena objetos (cualquiera que el autor haya incorporado a la extensin) para descarga fcil en el
fichero actual.
Un fichero de extensin (.avx) es otra clase especial de fichero ODB. En una extensin, los objetos se aaden en un orden especfico y
despus se recuperan cuando la extensin se instala en la aplicacin o proyecto actual. Un fichero de extensin tiene scripts especficos
incorporado, tales como el script Make, Install y UnsInstall.
Ficheros *.avx
Los Ficheros de extensin vienen dados por un sufijo .avx standard. Cmo almacenar y acceder a esos ficheros .avx se explica ms tarde
en esta seccin.

Creacin de extensiones
Crea un proyecto fuente, despus aade los objetos necesarios
Escribe los scripts necesarios para crear una fichero extensin
Define las propiedades de la extensin

Creacin de extensiones
Una extensin comienza como un proyecto. Este proyecto se convierte del fichero fuente de extensin. Aade cualquier objeto necesario
para mejorar la extensin de ese proyecto.
Scripts adicionales
Con el proyecto fuente, pueden crearse otros tres scripts. Dichos scripts son Make, Install y UnInstall.
El script Make usa el requerimiento anExtension.Make para crear una extensin y despus aade los objetos necesarios a la extensin.
Las propiedades de la extensin y dependencias se establecen tambin en el script Make.
Dos scripts adicionales, Install y UnInstall cumplen con los parmetros del requerimiento Make.
Propiedades de las extensiones
Las extensiones tienen propiedades (tales como SetAbout, SetExtVersion, Load y Unload) que permiten manejar la interaccin del usuario
con la extensin. Las propiedades se asignan a la extensin cuando se crea; algunas tienen scripts asociados con ellas. Se aprender
ms acerca de las propiedades de las extensiones ms adelante en esta misma seccin

El Script Make
Crea una extensin que aade dos botones a el GUI de la Vista
Crea el objeto extensin
theExt = Extension.Make
( c:\miguel\extens\vectool.avx.AsFileName, VectorTools,
av.GetProject.FindScript.FindScript (TheInstaller),
av.GetProject.FindScript.FindScript (TheUnInstaller),
{})
Busca y nombra los botones
bBar =av.GetProject.FIndGUI (View.GetButtonBar)
aButton1= bBar.FIndByScript(VectTools.CalcDistance)
aButton1.SetName (VectButton1)
aButton2= bBar.FIndByScript(VectTools.GeoBuffer)
aButton2.SetName (VectButton2)
El script Make
Este script se usa para crear una extensin. Su contenido variar dependiendo de los objetos aadidos y de los nmeros de las
propiedades. Las pginas 12-12 y 12-14 dan los requerimientos mnimos para construir una extensin.
Contenidos del script

Dependencias

En este script, el requerimiento Make se usa para crear una extensin


Extension.Make (aFileName.Name,InstallScript,UnInstallScript, Dependencies)
En los parmetros para el requerimiento Make, aFileName es el nombre del fichero de la extensin que se
crear. Debera llevar un sufijo .avx aadido a ste. El parmetro Name es para el nombre de la extensin
que aparece en la caja de dilogo Extension. InstallScript es el script que se ejecuta cuando se abre al
extensin. UnInstallScript es el script que se ejecuta cuando se cierra la extensin. El parmetro
dependencies especifica cualquier otro extensin o librera de linkaje dinmico (DLLs) cuya extensin es ms
dependiente. (ver en ayuda de ArcView DLL Basics).

Se pueden definir dependencias de la extensin proporciona una lista de otras extensiones o libreras
compartidas proporcionadas por ESRI. Por ejemplo, si se crea una extensin que proporcione alguna
funcionalidad especfica al Anlisis Espacial, es imperativo que se cargue la extensin de Anlisis Espacial.
Especifica el Anlisis Espacial en la lista de dependencias. ArcView asegura que el Anlisis Espacial est
cargado antes de empezar a cargar la extensin, asegurando el entorno para la extensin.
Las libreras compartidas proporcionadas por ESRI que extienden la jerarqua de clase tala como DDLs
soportan el anlisis espacial. Por ejemplo, si se crea una extensin que use las clases y requerimientos
definidas en el anlisis espacial, pero no el interface, podra crear una extensin con dependencia sobre el
Anlisis Espacial DLL
El script Make aade los objetos de la raz de las extensin. El autor de la extensin debe ser consciente del
orden en que dichos objetos se aaden, debido a que el script Install recupera los objetos de la extensin
usando los valores de los ndices. Los objetos en una extensin se indexan como si ellos estuvieran en una
lista.
Uso de nombres para controles

Es una convencin nombrar cualquier control aadiendo una extensin. Esto hace fcil buscar el
proyecto y encontrar los aquellos objetos nombrados cuando hay que desinstalarlos.

El script Make (continuacin)


Aade los objetos a la extensin (en orden)
theExt.Add(aButton1)
theExt.Add(aButton2)
Aade los scripts a la extensin
theExt.Add (av.GetProject.FIndScript (VecTool.CalcDistance))
theExt.Add (av.GetProject.FindScript (VecTool.GeoBuffer))
Describe la extensin y el asigna el nmero de la versin
theExt.SetAbout (Esta extensin proporciona funcionalidad de anlisis vectorial)
theExt.SetExtVersion(1)
Ejecuta la extensin y escribe el fichero al disco.
Se compila pero no se corre

Despus de que los botones han sido aadidos a la extensin, el script

Make aade los scripts que soportan.

Asignacin de propiedades de extensiones


En este momento el autor de la extensin determina qu
propiedades han de ser asignadas en el script Make. En el
ejemplo anterior, los requerimientos theExt.SetAbout y theExt.SetExtVersion se usan para establecer las propiedades.
Nmero de versin
Esta propiedad es el nmero de versin de la extensin que ha sido asignado en el script Make con el requerimiento
anExtension. SetVersion. Esta propiedad puede ser til para programadores que puedan llevar a cabo futuras versiones de la
extensin. El script install puede testear par ver si una versin particular de una extensin est ya cargada, antes de continuar la
ejecucin del script install.

About
Esta propiedad es una cadena que describe la extensin. La cadena aparece en la ventana de dilogo cuando el usuario hace clic
en el nombre de las extensin. La propiedad se asigna en el script Make con el requerimiento anExtension.SetAbout. (Otras
propiedades de las extensiones se cubren ms tarde en esta seccin.)
Ejecucin de ODB
El ltimo paso en el script Make usa el requerimiento Ext.Commit.Este requerimiento se hereda de la clase ODB y realiza
cambios en el
fichero ODB y escribe la ODB en el disco.
Compilacin del script Make
Despus de que el script est completo, se necesitar compilar este script, pero no correrlo al tiempo. Antes de poder correr el
script Make, debe asegurarse que de los otros scripts estn en uso, especficamente e Install y Uninstall deben compilarse
tambin. Si se corre el script Make antes de compilar los dos ltimos, el script Make encontrar un error .

El script Install

Se ejecuta cuando se carga la extensin o cuando se abre el proyecto


El objeto SELF hace referencia a la extensin
Define cmo se aaden los objetos al proyecto actual
Aade los botones a la barra de botones de la vista empezando en la posicin 21
bb=av.GetProject.FindGUI (View).GetButtonBar
bb.Add(SELF.Get(0),21)
bb.Add(SELF.Get(1),22)
Los script soportados por los botones no se aaden al proyecto
Debe compilarse, no ejecutarse antes de correr el script Make

El script Install

El script Install es un script adicional que prepara una extensin.

El script Install

El script Install se ejecuta cuando se carga una extensin o si la extensin est ya cargada, cuando se abre un
proyecto diferente o se crea uno nuevo. El script Install define cmo se aaden los objetos al proyecto actual. El
autor de la extensin especifica el orden en que los objetos se aaden a la extensin en el script Make para facilitar
la instalacin de cada objeto desde la extensin al proyecto.
Por ejemplo, si se aaden 3 herramientas y dos botones al docGUI de la vista del proyecto actual, el script Install
define cmo y dnde dichos controles se aaden a las barras de controles. El script Install se ejecuta tambin
cuando cualquier nuevo proyecto se crea mientras la extensin est activa.
En el cdigo de la pgina anterior, los objetos empiezan a instalarse y recuperarse desde la extensin. La extensin
est reverenciada por la palabra clave SELF.

Instalacin de scripts
En la pgina anterior, los scripts que soportan los controles no se aaden al proyecto Es innecesario porque los
scripts son parte de la extensin y en la extensin est en la bsqueda que realiza ArcVIew cuando busca el script
llamado (el script asociado con el control).La aplicacin busca el proyecto actual, los valores por defecto, las
extensiones cargadas, y despus los valores por defecto del sistema para el script llamado. El orden de bsqueda es
el siguiente:
1. Proyecto
2. Valores por defecto del usuario
3. Extensiones
4. Valores por defecto del sistema
Esto significa que no todos los objetos tienen que ser aadidos al proyecto. Estos permanecen como parte de la
extensin y cuando los objetos nombrados aparecen en un script, la extensin se busca para los objetos nombrados.
El script Install debe compilarse antes de ejecutar el script Make.
El ejemplo de la pgina anterior es la suma mnima necesaria para el script Install.
Hay otros detalles del script Install que sern introducidos despus de esta seccin.

El script UnInstall

Se ejecuta cundo se descarga una extensin o cuando se cierra un proyecto.


Borra cualquier objeto aadido al proyecto por el script Install
Borra los botones de la barra de botones de la vista
bb=av.GetProject.FindGUI (View).GetButtonBar
bb.Remove( bb.FIndByName(VectButton1))
bb.Remove(bb.FIndByName(VectButton2))
Debe compilarse antes de ejecutar el script Make
El script UnInstall

El segundo script recomendado es el script UnInstall.

El script UnInstall

El script UnInstall se ejecuta si el proyecto se cierra o cuando se descarga una extensin. Este script se
ejecuta antes del script UnLoad y limpia cualquier especificacin al proyecto.
Este script borra cualquier objeto que se aadi con el script Install. Este concepto es critico y repetitivo:
cualquier objeto que se aada al proyecto por el script Install necesita borrarse con el script UnInstall.
El script UnInstall debe compilarse antes de ejecutar script Make.
El cdigo de la pgina anterior es lo mnimo necesario para el script UnInstall. Hay otros detalles del script
Install que se comentarn ms tarde en la seccin.

Uso de nombres para localizar controles


Cuando los controles se borran del proyecto, es ventajoso recuperarlos por el nombre.Desde que el usuario
tiene la oportunidad de moverse por el conjunto de controles, pueden no estar en la misma posicin en que
fueron aadidos. Esto hace difcil el localizarlos y recuperarlos con el script UnInstall. Al referirse a los
controles por sus nombres, el autor de las extensiones no tiene que preocuparse por los movimientos del
usuario.

Uso de extensiones
Asignar variables de entorno para localizar ficheros .avx de extensiones
$AVEXT
$USEREXT
Carga de una extensin de la caja de dilogo Extensions

Uso de extensiones
Cuando se ejecuta el script Make, ste crea el fichero de la extensin en el directorio especificado por el requerimiento anExtension.Make
Localizacin de ficheros *.avx
Para ver la extensin listada en la caja de dilogo Extensions, el fichero .avx tiene que localizarse en $AVHOME/ext32 o moverse a un
directorio especificado por el usuario. El $AVHOME/ext32 se referencia por una variable llamada $AVEXT. El directorio especificado por el
usuario est referenciado por la variable $USEREXT. Ambas variables pueden asignarse en el script de inicio del nivel de la aplicacin o
en el script de inicio del proyecto, usando el requerimiento System.EnvVar.
ExtensionWin
Para llamar a una extensin especfica, haga activa la ventana de proyecto, y desde el menu Archivo (File) pique la opcin de men
Extensions. Este men corre el script appl.GetExtensionWin. Este script tiene una nica lnea de cdigo que enva al objeto
ExtensionWIn el requerimiento Show.

Ejercicio 12A: Creacin de una extensin

Paso 1

Iniciar ArcView y abrir un proyecto.

Paso 2

Inspeccionar los scripts Install y UnInstall

Paso3

Escriba el script Make y ejectelo.

Paso4

Testee la extensin con otro proyecto.

Ejercicio 12A: Creacin de una extensin


En este ejercicio, se podr construir una extensin que aada algunos controles de anlisis de vector al proyecto. Se
construir la extensin escribiendo el script Make. Se correr el script para construir el fichero de extensin y despus
testear la extensin aadiendo ste a un proyecto diferente.

Paso 1

Iniciar ArcView y abrir un proyecto.


Si es necesario iniciar ArcView.
Desde el men Archivo (File), elija Open Project. Moverse al directorio ejercicio. Hacer doble clic en ex12a.apr para abrir el
proyecto para este ejercicio.
Cuando el proyecto se abra, se ver una vista llamada Atlanta Schools.
Se construir una extensin que aada algunas facilidades de anlisis vectorial al proyecto. Este proyecto ya contiene los
objetos necesarios para la extensin; se escribir el script Make que construye la extensin.
La barra de botones tiene dos botones nuevos a la derecha del botn Ayuda (Help). Hay tambin una nueva herramienta al
final a la derecha de la barra de herramientas.

Esos tres contoles tienen las siguientes propiedades:

Propiedad

botn#1

botn#2

Apply

N/A

N/A

Click

VectTools.CalcDistance

VectTools.GeoBuffer

Cursor

N/A

N/A

Disabled

False

False

Help

Calcula la distancia entre las


entidades de dos temas de
punto

Dibuja un buffer alrededor


de la entidad seleccionada

Busca la entidad ms
cercana del punto
identificado

Help Topic

vaco

vaco

vaco

Icon

PatternRamp

Loop

Speeding Bullet

Invisible

False

False

False

Tag

vaco

vaco

vaco

Update

View.HasDataUpdate

View.HasDataUpdate

View.HasDataUpdate

Herramienta #1
VectTools.FindNear
vaco

Paso 2

Cursor.Bullseye
False

Inspeccionar los scripts Install y UnInstall


Los scripts Install e UnInstall son una parte importante de la extensin. Ellos controlan que las extensiones se carguen en
un proyecto y que se borren.
Primero examina el script Install. Este script se usar para instalar los objetos almacenados por la extensin en el proyecto
actual.
Abra el script VectTools.Installer

Los objetos se recuperan desde la extensin (SELF) y despus se aaden a la barra de botones de la vista. El script Install
no carga los tres scripts que se usan por los controles. Se aadirn a la extensin. La extensin est en el orden de
bsqueda que ArcView usa cuando busca un script determinado.
Cuando acabe de revisar el script, complelo, y cierre la ventana del script.
Despus examinar el script UnInstall.
Abra el script llamado VectTools.UnInstaller
Tmese un minuto en revisar el contenido de este script. ste encuentra los objetos cargados en la extensin por su
nombre y los borra del proyecto. Cuando acabe de
revisar el script, compile ste y cierre la ventana del script.
Paso3

Escriba el script Make y ejectelo.


El script Make crea la extensin y define los objetos que se almacenarn en la extensin. Incluso si el proyecto actual
contiene objetos que formarn parte de la extensin, el proyecto actual es nicamente la fuente para la extensin. Puede
no haber creado la extensin. Para hacerlo, usar el requerimiento Extension.Make, busca los objetos en el proyecto actual,
y los aade a la extensin.
Abra un nuevo script y, desde el men del script, elija propiedades(Properties), En la caja de dilogo de propiedades, llame
el script Tools.Maker. Haga clic en OK.
La primera cosa que har ser crear la extensin
Cree la variable llamada theExt enviando el requerimiento Make a la clase Extension. El requerimiento Make tiene cinco
parmetros, un nombre de fichero(aFileName),un nombre (aName),un script de Instalacin (anInstallScript), un script de
desinstalacin(anUnInsallScript),y cualquier Dependencia (Dependencies).
Para el primer parmetro, nombre la extensin vectoolLavx y de el path de el directorio pavetemp. Para convertir la cadena
a un nombre de fichero, use el requerimiento AsFileName.
Para el segundo parmetro, nombre al extensin Vector tools.
Para el tercer parmetro, comience con av y despus use el requerimiento GetProject, seguido por el script FindScript,
especificando VectTools.Installer como script Install.
Para el cuarto parmetro, use los mismos requerimientos que antes y especifique VectTools.Uninstaller como script
UnInstall.
Debido a que esa extensin no va a ser dependiente de cualquier otra extensin, slo proporciona una lista vaca para el
parmetro Dependencias.

Despus construir los objetos raz para la extensin. Empiece con el primero de los botones y despus la herramienta (El
orden no es importante. Lo es slo cuando en los objetos aadidos a la extensin.)
Recupere el primer botn.
Cree una variable llamada aButton1. En el lado derecho del operador de asignacin, empiece con av, y despus use el
requerimiento GetProject, seguido por el requerimiento FindGUI. El requerimiento FindGUI debera tener la cadena View
como parmetro. Despus enve el requerimiento GetButtonBar y FindByScript. El requerimiento FindByScript debera
tener VectTools.CalcDistance como parmetro.
Todo esto se puede hacer en una nica lnea usando requerimientos encadenados, o construir varias variables de varias
lneas (Puede usar esas variables de nuevo cuando aada el otro botn y la herramienta.)
Nombre este botn Boton1 enviando el requerimiento SetName a la variable aButton1.

Aada el segundo botn a la extensin de la misma forma que el primero. El script que ejecuta este botn se llama
VectTools.GeoBuffer.

Nombre este botn Botn2 enviando el requerimiento SetName a al variable aButton2.

Ahora construya la herramienta de la misma forma que se construyeron los dos botones. Use el requerimiento GetToolBar
en lugar deGetButtonBar. Esta herramienta ejecuta un script llamado VectTools.FindNear.

Nombre la herramienta Herramienta1 enviando el requerimiento SetName a la variable aTool1

Es importante que se de nombre a esos botones y herramientas como se especifica arriba, debido a que el script UnInstall
usa esos nombres para localizarlos.
Despus aada los dos botones y la herramienta a la extensin. Para aadir un objeto a la extensin, use el requerimiento
Add. El requerimiento Add se hereda de la superclase ODB.
Enve el requerimiento Add a la variable theExt. Haga esto tres veces, una vez para cada control. Use las variables para los
botones y herramienta como parmetros para el requerimiento Add.
Aada los tres scripts que usarn los controles de la extensin
Enve el requerimiento Add a la variable theExt. Como primer parmetro, use el conjunto de requerimientos encadenados
av.GetProject.FindScript. Para el parmetro del requerimiento FindScript, de el nombre del script. Remtase al grfico de la
pgina 12-25 para los nombres de los scripts. Necesitar hacerlo tres veces, una para cada script que est siendo aadido.
Consejo: Debera parecerse a algo como object.request(object.request(parmetrro).)
Lo siguiente que se debera hacer es describir la extensin
Enve a al extensin (referenciado con la variable theExt) el requerimiento SetAbout. Para este requerimiento, proporcione
una frase o dos que describan lo que hace la extensin. Por ejemplo: Esta extensin se asigna para aadir+NL+alguna
utilidad de anlisis vectorial simple para+NL+el proyecto actual. Esta cadena aparecer al final de la caja de dilogo de la
Extension
Asigne el nmero de versin de la extensin.

Enve a la variable theExt el requerimiento SetExtVersion. Como es la primera

versin, use el parmetro 1.0.

El paso final es hacer la extensin. El requerimiento Commit crear el fichero de extensin en el disco en el directorio
pavetemp.Enve el requerimiento Commit a la variable theExt.

Cree el fichero de la extensin


Compile y corra el script Make. ste crear la extensin (el fichero ODB) vectooLavx en el directorio pavetemp.
Finalmente, salvar el proyecto.
Salva el proyecto como VectTool.apr en el directorio pavetemp

Paso4

Testee la extensin con otro proyecto.


La extensin est ahora disponible. Se testear la extensin abriendo otro proyecto y cargndolo en ste.
Con la ventana de proyecto activa, elija Abrir Proyecto (Open Project) del men Archivo(FIle).
Despus muvase al directorio ejercicio y elija ex12test.apr
Cuando se abra el proyecto, ver el script activo llamado USEREXT.Set. Este script asignar la
variable del sistema
(USEREXT) para apuntar al directorio pavetemp. ArcView usa esta variable para encontrar los ficheros .avx que estn
disponible para las cajas de dilogo Extensions.
Cambie el path en el script para que se ajuste al path del directorio pavetemp. Compile y corra el script, despus cierre la
ventana del script.
Ahora, cargue la extensin.
Active la ventana de proyecto, despus desde el men Archivo (File), haga clic en la opcin Extensions. Debera ver la
extensin VectorTools listada en la caja de dilogo Extensions.
Haga clic en el nombre de la extensin y lea el mensaje About (descripcin de la extensin)
Haga clic en la caja de chequeo a la izquierda de Vector Tools, despus haga clic en OK. En este momento la extensin se
carga y se ejecuta el script Install.
Active la vista. Debera ver los dos botones y la herramienta que fueron instalados por la extensin.
Testee las herramientas:
Button1 calcula la distancia desde uno o ms puntos en un tema a todos los puntos en otro tema.
Button2 construye grficos poligonales alrededor de las entidades seleccionadas de un tema.
Tool1 encuentra y selecciona las entidades ms cercanas en el tema activo a un punto dado por el usuario de forma
interactiva.
Cuando acabe, active la ventana de Proyecto, y desde el men Archivo (File), de nuevo elija Extensions.
Haga clic en Vector Tools para apagar la extensin. Haga clic en OK.
Ahora ejecutar el script UnInstall especificado por el requerimiento Make.
Active la vista y vea que los controles ardido por la extensin se han ido.

End

Propiedades de la extensin
Seis propiedades de eventos permiten manejar la extensin
Install
UnInstall
Load
Unload
CanUnload
ProjectSave

Cada propiedad tiene su propio script


Todas la propiedades de las extensiones tienen scripts asociados con ellas y estn establecidos por el requerimiento Make de la
Extensin o cualquier otro requerimiento de Avene en el scriptMake.
Load
El script asociado con la propiedad Load se ejecuta cuando se activa la extensin. Una extensin puede devolverse de varias
formas: haciendo clic en la caja de chequeo en la caja de dilogo de Extensiones, abriendo un proyecto que depende de la
extensin o usando un requerimiento de Avenue. Este script se usa para asignar el entorno de aplicacin para la extensin, as
como las variables globales.
Install
El script Install se ejecuta cuando la extensin se carga primero y cada vez que se crea o abre un proyecto diferente mientras dicha
extensin est cargada. El script Install se usa para aadir objetos de la extensin al proyecto.
UnInstall
La propiedad UnInstall tiene un script asociado con ella que se ejecuta cuando se descarga la extensin o cuando se cierra el
proyecto actual. El script UnInstall borra cualquier objeto del proyecto que fuese aadido por el script Install.
Unload
El script se ejecuta cuando la extensin se descarga del proyecto. El script UnLoad lleva a cabo cualquier operacin de limpieza a
nivel de la aplicacin antes de que la extensin se descargue (El script Unload deshace todo aquello que hizo el script Load).
CanUnload
La propiedad CanUnLoad tiene asociado un script con el que testear si la aplicacin puede descargarse. Este script se ejecuta
cuando se llama al dilogo de la extensin y determina el estado de la marca de chequeo en la caja de dilogo de las Extensiones,
devolviendo true si se puede chequear y false si no. Se deja a la eleccin del autor de la extensin asignar la condicin para
cuando la extensin pueda o no descargarse.
ProjectSave
La propiedad TheProjectSave tiene asociado un script que se ejecuta antes de que el proyecto sea escrito en un fichero.

Relacin entre proyectos y extensiones


Los proyectos pueden depender de las extensiones
Los objetos de las extensiones residen en el espacio de la extensin
Los objetos de las extensiones no se salvan en el espacio del proyecto.
Los objetos copiados se salvan en el espacio del proyecto

Relacin entre proyectos y extensiones


La relacin entre proyecto y extensin se basa en el estado actual del proyecto. Esto es, si el proyecto se salva con la extensin
cargada, el proyecto depende de la extensin.
Si se intenta abrir el proyecto y el fichero de extensin no est localizado en el directorio especificado por AVEXT o $USEREXT ,
entonces ser requerido para que lleve a cabo la reparacin del proyecto y localizacin del fichero de extensin
Espacio de extesiones frente a espacios de proyecto.
Los objetos instalados por la extensin pertenecen a la extensin y nunca se escriben en el fichero de proyecto cuando se salva
ste. Esto significa que si el usuario personaliza los objetos instalados por la extensin, los cambios nos se salvan con el
proyecto .Por ejemplo, si la extensin se carga una vista, y el usuario aade temas o cambia los smbolos de la leyenda para el
tema, esos cambios no se salvarn con el proyecto cuando el usuario lo salve. Dichos objetos se llaman pertenecientes a la
extensin y residen en el espacio de la extensin.
Clonar objetos
El autor de la extensin puede permitir la personalizacin de los objetos de la extensin clonando los objetos de la misma. El autor
aade los objetos clonados al proyecto y as forman parte del espacio del proyecto. Una vez que los objetos forman parte del
espacio, cualquier personalizacin de los mismos se escribe en el fichero del proyecto cuando ste se salva. Si se instalan objetos
el en espacio proyecto es crtico, ya que si no dichos objetos se borrarn cuando la extensin se descargue. Necesitar localizar
dichos objetos para borrarlos .Si el usuario salva el proyecto y se cierra mas tarde el proyecto, se ejecuta el script UnInstall , pero
no se borran los objetos. Esto se da slo cuando el usuario descarga al extensin que el script UnInstall ejecuta y borra todos los
objetos aadidos por el script Install, incluso los objetos clonados. Entonces, cualquier personalizacin realizada se perder, y se
borrarn los objetos.

Manejo de una extensin con el script Install


El script Install debera verificar si se est en un proyecto activo.
if (av.GetProject = nil) then
return nil
end
Usa diccionarios para ver si las extensin se ha cargado ya.
if (SELF.GetPreferences.Count <>0 ) then
return nil
else
SELF.GetPreferences.Add (Versin, SELF.GetExtVersion)
end
Permite la personalizacin y ubicacin de controles en GUIs personalizados.
bb = av.GetProject.FindGUI (View).GetButtonBar
pos = bb.GetControls.FInd (bb.FindByScript (Help.Tool ))
bb.ADD (SELF.Get(0).clone,pos - 3)
bb.ADD (SELF.Get(1).clone,pos - 2)

Manejo de una extensin con el script Install


Es importante recordar que el script Install se ejecute cuando el usuario carga la extensin, cuando se cree un nuevo proyecto mientras se
carga la extensin, o cuando un proyecto se abre y depende de la extensin
Verificar un proyecto activo
Lo primero que el script Install debera hacer es verificar si hay un proyecto activo antes de continuar aadiendo objetos a la extensin. Si
no hay un proyecto activo, el script Install no debe ejecutarse.
Utilizacin de el diccionario de Preferencias
Si los objetos de la extensin han sido clonados y aadidos al espacio proyecto, se escriben en el fichero de proyecto cuando ste se
salva. El proyecto ahora depende de la extensin. Cuando se vuelve a abrir el proyecto, aquellos objetos ledos des fichero de proyecto se
aaden automticamente a ste. Tambin se ejecuta el script Install de la extensin. Cuando ste se ejecuta, aade los objetos de nuevo
hasta donde fue cargada al principio. Consecuentemente, pueden suceder dos cosas. El script Install necesita verificar si ya est cargada
la extensin. Si lo est, no es necesario finalizar el script Install y se puede no ejecutar dicho script. Si no est instalado, entonces aade
los objetos.
El autor debera usar diccionarios de preferencias par testear esto. (Ver 12-39 para una descripcin de los diccionarios) Cada extensin
cargada tiene un diccionario de preferencias que se salva con el proyecto. Incluso si el diccionario de preferencias se salva en el fichero
de proyecto, se debe acceder slo a travs de la extensin a la que pertenece. El requerimiento es anExtension.GetPreferences
Permiso de personalizacin
Se puede permitir la personalizacin de dos formas:
Clonar los objetos que la extensin aade. Este pone aquellos objetos en el espacio proyecto y cualquier personalizacin realizada
a dichos objetos se escribe en el fichero de proyecto.
Cuando se aaden controles al proyecto, la interfaz puede ser fuertemente personalizada.
Se pueden localizar controles usando la posicin exacta, en el conjunto de controles, relativo a otro control, o colocarlos al
principio o final del conjunto de controles

Uso de diccionarios con extensiones


Un diccionario es una coleccin de claves nicas y pares de valores

KEY

VALUE

KEY

VALUE

KEY

VALUE

Cargado

true

Version

1.0

Crear o recuperar diccionarios


theDictionary = Dictionary.Make (100)
theExt.GetPreferences

Aadir elementos
theDictionary.Add (aKey, aValue)
theExt.GetPreferences.Add (Versin, theExt.GetVersion)

Recuperar entradas de diccionario


keyList = theDictionary.ReturnsKeys
theVersion = theKey.GetPreferences.Get(Versin)

Uso de diccionarios con extensiones


Los diccionarios son una coleccin de claves y pares de valores. Los diccionarios aseguran que cada clave es nica. La clave y valor
pueden ser objetos de cualquier clase, y no necesita pertenecer a la misma clase.
Diccionarios de Nombres
Un Diccionario de Nombres (NameDictionary) usa los pares clave/valor, pero distinto de los diccionario genricos, donde la clave puede
ser cualquier objeto, la clave es el nombre del objeto. Este mtodo permite ms eficiente acceso y de recuperacin. El proyecto tiene un
Diccionario de Nombres que contiene un diccionario para cada extensin cargada.
Crear o recuperar diccionarios
Para crear un diccionario, enve el requerimiento Make a la clase Diccionary.
El nombre y tamao (nmero de entradas) del diccionario se especifica en el requerimiento Make. Con las extensiones un diccionario de
preferencias se almacena con el proyecto, pero pertenece a y se recupera de la extensin con el requerimiento getPreferences.
Aadir elementos a un diccionario
Los pares key/value se aaden a cualquier diccionario usando el requerimiento Add.
Devolver entradas en diccionarios.
Enve el requerimiento Returnkeys al diccionario para devolver una lista de valores nicos. Esta lista puede usarse es cajas de mensaje o
bucles. Para recuperar los valores asociados con una clave en una lista, enve el requerimiento Get con una clave (parmetro) al
diccionario.
Con extensiones, se puede chequear par ver qu versin de la extensin se carga usando el requerimiento Get con la clave Versin

Manejo de una extensin con el script UnInstall


El script UnInstall debera verificar si se est en un proyecto activo.
if (av.GetProject = nil) then
return nil
end
No hay razn para desinstalar los objetos de una extensin si el proyecto se est cerrando.
i f(av.GetProject.IsClosing) then
return nil
end

Manejo de una extensin con el script UnInstall


Con un script UnInstall ms extenso, el autor de la extensin puede manejar la extensin en un grado mayor
Verificar un proyecto activo
Lo primero que debera hacer el script Uninstall es verificar si hay un proyecto activo abierto antes de continuar. Si no hay
proyectos activos, entonces, no es necesario ejecutar el script uninstall.

Desinstalacin al tiempo de cerrar


Es importante recordar que el script UnInstall se ejecuta cuando se cierra un proyecto o cuando el usuario descarga la
extensin.
Cuando se cierra el proyecto, el script UnInstall no se necesita ejecutar porque el estado de la extensin y ha sido
determinado. Por ejemplo, si el autor de la extensin ha elegido dejar los objetos de la misma en el espacio de la extensin,
estos objetos no se salvarn con el fichero de proyecto. Cuando se cierra el proyecto dichos objetos se borran de la
memoria y como consecuencia no hay razn para que el script UnInstall los borre del proyecto. Otro ejemplo es si el autor
de la extensin ha elegido aadir los objetos al espacio del proyecto, los objetos de la extensin se escriben en el fichero de
proyecto y no es necesario borrarlos cuando se cierre el proyecto.
Es slo cuando el usuario descarga la extensin que el script UnInstall necesita borrar todos los objetos aadido por el
script Install.

Ejercicio 12B:

Manejo de una extensin

Paso 1
opcional

Editar el script Install para manejar extensiones.

Paso 2
opcional

Editar el script UnInstall y el script Make

Paso3
opcional

Paso 1
opcional

Personalizar los controles de la extensin

Editar el script Install para manejar extensiones.


En este paso, se editar el script Install para que si se hacen cambios en los objetos aadidos por la extensin,
puedan salvarse con el proyecto.
Si es necesario, inicie ArcView.
Desde el men Archivo (File), elegir Abrir Proyecto (Open Project). Muvase al directorio ejercicio.
Haga doble clic en ex12b.apr para abrir el proyecto para ese ejercicio.
En la ventana de proyecto, haga clic en el icono Scripts y abra el script VectTools.ModifiedInstaller.
Vea las primeras lneas de cdigo en ese script. Ellas chequean par ver si hay un proyecto actual abierto. Si no lo
hay, el script devuelve un objeto nil (nulo) y nunca acaba.
Lo primero que se debe hacer en ese script es escribir el estamento If Then para chequear si la extensin est ya
cargada. (Recuerde, si el proyecto se salva con la extensin cargada, el proyecto se hace dependiente de la
extensin. Entonces, cada vez que se abra el proyecto, la extensin se carga automticamente y se ejecuta el script

Install.)Si la extensin est ya cargada, no se quiere hacer nada que no sea devolver desde el script. Si la extensin
no est cargada, ha de continuar.
Inicie el estamento If Then . Como condicin, enve SELF ( que referencia a la extensin), el requerimiento
GetPreferences, seguido por el requerimiento Count, y use el operador relacional not equal to seguido por 0.
Si la condicin es true, la extensin ya est cargada; entonces devuleve un objeto nil (nulo) desde el script.
Si el contador es cero, significa que la extensin no est cargada.
Despus, escribir el estamento Else para asignar la versin actual de la extensin. Se aadir un elemento al
diccionario de Preferencias que identifica qu versin est cargada. El nmero de versin se usa para llevar a cabo
el desarrollo de la extensin.
Enve el requerimiento GetPreferences a SELF seguido por el requerimiento ADD para aadir un elemento al
diccionario de preferencias. Como primer parmetro (la clave) use Version. Para segundo parmetro ( el valor),
recupere el nmero de versin desde la extensin enviando a la extensin (SELF) el requerimiento GetExtVersion.
Ahora, examine las lneas que aaden los controles .Para localizar los controles en un posicin relativa, el script asigna una variable
llamada pos a un valor de ndice del botn Help ( el ltimo botn en la barra de botones de la vista).
Despus, editar el script para clonar los controles aadidos por la extensin. Se colocarn tambin los controles relativos al botn Help.
En la lnea posterior se crea la variable pos, inserte el requerimiento Clone despus del parmetro Get(0).
Reemplace el parmetro 2/ con la variable pos seguido por -3 como posicin.
Este colocar el primer botn tres lugares a la izquierda del botn Help.
Despus , edite el script para clonar y colocar el segundo botn.
Edite la siguiente lnea, usando -2 como posicin.
Ahora editar el script para clonar u colocar la herramienta similar de la forma que hizo para los botones.
Muvase a la seccin de cdigo que aade la herramienta. En la ltima lnea (tb.Add(SELF.Get(2),15)inserte el requerimiento Clone
despus del parmetro Get (2). Despus, para el parmetro de posicin (15) , enve a la variable tb (para la barra de botones) el
requerimiento Getcontrols seguido del requerimiento Count.
Compile ( no corra) el script. Cuando acabe, cierre el script.
Ahora, cuando salve el proyecto, cualquier personalizacin se preservar.

Paso 2
opcional

Editar el script UnInstall y el script Make


En este paso, editar el script UnInstall por lo que si se cierra el proyecto actual, el script UnInstall no se ejecutar.
Abra el script VectTools.ModifiedUninstaller.

Despus de las tres primeras lneas comentadas, empiece un estamento If Then. Para la condicin, enve a la aplicacin (av) el
requerimiento GetProject seguido del requerimiento IsClosing. Despus si la condicin es true, devuelve nil para terminar el script,
despus finalice el estamento If Then.
Compile el script.
Despus, abra el script VectTools.Maker. Modificar este script y especificar los nuevos scripts Install y UnInstall.
Primero, asigne el path en el requerimiento Extension.Make del directorio pavetemp.
Muvase a la lnea donde se hace la extensin (theExt). Cambie el nombre del fichero .avx desde vectool.avx a mvectool.avx ( m indica
la versin modificada)
Despus, cambie el nombre de la extensin de Vector Tools a Mod Vector Tools.
Finalmente, cambie el script Install desde Installer a VectTools.ModifiedInstaller y el script UnInstall desde VectTools.UnInstaller a
VectTools.ModifiedUnInstaller.
Compile este script, despus crralo. Crea otro fichero de extensin en el directorio pavetemp llamada mvectool.avx.
Cuando acabe, cierre la ventana del script.
Salve el proyecto como mvtool.apr en el directorio pavetemp.
Ahora testear la nueva extensin.
Haga clic en el proyecto para activarlo. Entonces, desde el men Archivo (File), haga clic en Abrir Proyecto(Open Project) y abra el
proyecto ex12test.apr almacenado en el directorio ejercicio.
Despus abra el proyecto, vaya al men Archivo (File) y haga clic en Extensions.
Debera ahora ver Mod Vector Tools junto con VecTools listado en la caja de dilogo Extensiones
Haga clic en la caja de chequeo a la derecha de Mod Vector Tools, despus haga clic en OK.
En este momento se carga la extensin y se ejecuta el script Install modificado. Usar este script con la extensin cargada en el siguiente
paso.

Paso3
opcional

Personalizar los controles de la extensin

En este paso, se personalizarn los controles aadidos por la extensin, se salvar el proyecto para ver qu personalizaciones se
preservan.
Abra la caja de dilogo de Personalizacin (Customize). Cambie el icono para la herramienta que se ha aadido a la extensin. Despus
arrastre los dos botones de la extensin a una nueva localizacin de la barra de botones.
Cuando acabe, cierre la caja de dilogo de Personalizacin (Customize).
Active la ventana de Proyecto, y desde el men Archivo (File) elija Salvar como (Save Project As). Salve este proyecto en el directorio
pavetemp y nombre ste custvect.apr.
Ahora volver a abrir el proyecto y examinar las personalizaciones
Con la ventana de Proyecto activa, desde el men Archivo (File), elija Abrir Proyecto (Open Project) .Navegue por el directorio pavetemp y
vuelva a abrir custvect.apr. Este es el proyecto en que se acaban de personalizar los controles.
Cuando abra el proyecto, active la vista. Los controles reflejarn la personalizacin.

End

A P N D I C E

Leer y escribir ficheros de texto

Leer y escribir ficheros de texto........................................................................ A-2


La clase Fichero......................................................................................... A-4
Crear FileNames y objetos Fichero............................................................ A-6
Utilizar FileDialog....................................................................................... A-8
Leer y escribir operaciones........................................................................ A-10
Leer el final del fichero............................................................................... A-12
Ejercicio A: Leer y escribir ficheros.................................................................. A-15

Leer y escribir ficheros de texto


Trabajar con ficheros y objetos FileName
Definir los permisos de acceso a ficheros
Utilizar las cajas de dilogo para buscar o crear ficheros

Figura
Leer y escribir ficheros de texto
Esta seccin examina el fichero de entrada y salida de Avenue. Aprender como trabajar con los objetos File (fichero) y FileName
(nombre de fichero), para permitir accesos bsicos al fichero. Los permisos de acceso al fichero (ej. Leer o escribir) se definen mediante
emnumeraciones de permiso. Tambin aprender como usar las cajas de dilogo para buscar o crear ficheros.

La clase Fichero
Leer, escribir y manejar ficheros
Subclases de File (Fichero)
TexFile (un nico carcter)
LineFile (lnea completa)
Cada objeto File (Fichero) tiene un objeto FileName asociado

File

LineFile

FileName

TextFile

FileName

ODB

La clase Fichero
La clase File maneja operaciones bsicas de ficheros, tanto copiar, borrar, chequear el acceso de escritura y operaciones de
entrada/salida, como el abrir, cerrar y leer ficheros. El fichero es una clase abstracta, usada slo para organizar las caractersticas de sus
subclases: todo fichero es un FileName o un TexFile. Un objeto FileName proporciona una ruta para localizar un fichero.
Objetos LineFile
Un elemento LineFile es una lnea completa de caracteres, que acaba mediante una plataforma dependiente de un carcter de final de
lnea. Las operaciones de escritura sobre un LineFile conservan la terminacin original.
Objetos TextFile
Un elemento TextFile es un nico carcter. La clase TextFile se utiliza cuando un fichero no est orientado a lneas (Ej. Cuando se
necesita buscar un carcter e insertar otro carcter o cadena de caracteres).

Crear FileNames y objetos Fichero

Crear un FileName
myNewFN = FileName.Make (c:\train\data.txt)
Crear un FileName mediante la conversin de una cadena
theWinFN = c:\work\data.txt.AsFileName
theUnixFN = /usr1/data.txt.AsFileName
theMacFN = Disk1:work:data.AsFileName

Windows
Unix
Macintos

Enumeraciones de permiso de ficheros


FILE_PERM_READ - abre el fichero con permiso de lectura
FILE_PERM_WRITE - abre el fichero con permiso de escritura
FILE_PERM_APPEND - abre el fichero para aadir
FILE_PERM_MODIFY - abre el fichero para modificarlo
Crear un LineFile
theLFile = LineFile.Make (theWinFN.#FILE_PERM_READ)

Crear FileNames y objetos Fichero


Cada fichero tiene asociado un FileName. Usted puede crear un FileName usando la cadena de la ruta correspondiente para su
plataforma. Puede utilizar la cadena de la ruta de dos formas para crear un FileName: usando el requerimiento Make en una clase
FileName, o utilizando el requerimiento AsFileName en la cadena, para convertirla a un fichero FileName.
Use el requerimiento Make en la clase LineFile o TextFile para crear un objeto Fichero. EL requerimiento Make necesita como parmetros
un FileName y una enumeracin que indica como quiere utilizar el fichero. Puede abrir un fichero ya sea LineFile o TexFile.
Enumeraciones de fichero
Los ficheros pueden abrirse para leer, escribir, modificar o aadir. Use la enumeracin de FilePermEnum para especificar los permisos de
un nuevo objeto fichero. Ambos, #FILE_PERM_WRITE y #FILE_PERM_APPEND abren un nuevo fichero o uno existente para escritura:

la diferencia es que #FILE_PERM_WRITE borra lo que tena escrito el fichero anteriormente, y #FILE_PERM_APPEND, no borra el
contenido del fichero. #FILE_PERM_READ, slo permite abrir un fichero existente.
Para ms informacin sobre los permisos de un fichero para lectura y escritura, vea la ayuda en lnea de las enumeraciones
#FILE_PERM_MODIFY y #FILE_PERM_CLEARMODIFY.
Ficheros de texto
Ejemplo de creacin de un fichero de texto:
theTfile = TextFile.Make (theWinFN, #FILE_PERM_WRITE)

Utilizar FileDialog
FileDialog visualiza una lista de ficheros y directorios en la caja de dilogo
Crear o recuperar nombres de ficheros
Show devuelve el fichero seleccionado
ReturnFiles devuelve una lista de ficheros seleccionados
Put se utiliza para crear ficheros nuevos
Obtener un filename del usuario y crear un fichero de texto
myFN= FileDialog.Show(*.txt,Text File,Show Files)
theFile = TextFile.Make (myFN, #FILE_PERM_READ)

Figura

Utilizar FileDialog
Un objeto FileDialog visualiza una lista de ficheros y directorios en una caja de dilogo. El requerimiento Show, ReturnFiles, y Put
permiten al usuario crear un nuevo fichero, o seleccionar uno o varios ficheros.
Existen varias razones para utilizar un FileDialog: puede evitarse escribir rutas sobre plataformas especficas tales que algunas pueden
necesitar ser actualizadas (ej. Para una aplicacin de plataforma hbrida o despus de mover los datos), y es el usuario quien elige y da
nombre a todos los ficheros.
Show
El requerimiento Show muestra al usuario la seleccin de un nico fichero, y devuelve un objeto FileName. El requerimiento Show
necesita tres parmetros: un patrn (Ej. *.ave), el nombre en la lista de ficheros de la lista de tipo desplegable, y un ttulo para la caja de
dilogo.
ReturnFiles
El requerimiento ReturnFiles permite al usuario seleccionar uno o ms ficheros, de uno o ms tipos. Devuelve una lista de
FileNames seleccionados. ReturnFiles necesita cuatro parmetros: una lista de patrones (ej. *.ave, *.txt), una lista de nombres de los
patrones en los ficheros de la lista de tipo desplegable (ej. Scripts (*.ave), TextFiles (*.txt), un ttulo para la caja de dilogo, y un ndice que
indica el patrn por defecto.
Put
El requerimiento Put permite al usuario especificar un fichero de salida, y devuelve un FileName. Put necesita tres parmetros:
una ruta por defecto para el fichero, un patrn, y un ttulo para la caja de dilogo.
Si el fichero especificado ya existe, se le requerir al usuario que conteste a la pregunta Replace Existing File? (Desea reemplazar el
fichero existente?), con un yes o un no.

Leer y escribir operaciones


Leer elementos de un fichero
theString = theLineFile.ReadElt
theChar = theTextFile.ReadElt
Escribir en un fichero
theFile.IsWritable

theLineFile.WriteElt (theString)
theFile.Close
Encontrar el nmero de elementos del fichero
theFile.GetSize
Manipular cadenas
theString.BasicTrim (leftCharacters, rightCharacters)
theString.Contains (anotherString)
theString.Substitute (someString, anotherString)
Manejar el puntero del fichero
theFile.IsAtEnd
theFile.GoToBeg
theFile.GotoEnd
theFile.SetPos (aNumber)
theFile.GetPos

Leer y escribir operaciones

Los ficheros acceden a un elemento cada vez. Lea los ficheros con el requerimiento ReadElt. El requerimiento ReadElt devuelve tanto
una lnea completa de caracteres o como un nico carcter, dependiendo de que el fichero sea un LineFile o un TextFile.
Escribir ficheros
Escriba los ficheros con el requerimiento WriteElt. Cuando escriba en ficheros, hay requerimientos que le permiten conocer qu
tamao tiene el fichero (GetSize), y si en el fichero se puede escribir (IsWritable). Despus de escribir en un fichero, deber cerrarlo.
Use el requerimiento Close para cerrar el fichero.
Manipular cadenas

Despus de leer una lnea desde un LineFile, hay algunos requerimientos de manipulacin de cadenas que puede usar para
modificar la cadena. Dirjase con String en la ayuda en lnea para obtener un listado completo de requerimientos. Puede tambin
convertir una cadena a una lista y usar los requerimientos de una lista.
Manejar el puntero del fichero
Puede utilizar requerimientos para situar el puntero del fichero en el comienzo del fichero
(GoToBeg), al final del fichero (GoToEnd), o en una posicin especifica mediante un ndice de posicin que comienza a 0 (SetPos).
Tambin puede chequear cuando se haya ledo el ltimo registro (IsAtEnd).

Leer el final del fichero


theFN = c:\work\data.txt.AsFileName
theLFile = LineFile.Make (theFN, #theFN, #FILE_PERM_READ)
while (theLFile.IsAtEnd.Not)
theString = theFile.ReadElt
MsgBox.Info (Reading... ++ theString,
end
MsgBox.Info (End of File,
theLFile.Close

Figura

Figura

Leer el final del fichero


Utilizando el bucle While, puede leer elementos desde el fichero hasta que se alcance el final del mismo.
Puede usar el requerimiento IsAtEnd para chequear si el puntero de fichero est al final del fichero, y use este test como condicin del
bucle While.
Cuando se alcanza el final del fichero, se devuelve Nil. Tambin puede iniciar el bucle While con un Booleano y testear si cada elemento
ledo es igual a Nil. En ese caso, el Booleano habr cambiado y el bucle se detendr.
Done = false
while (done.not)
theString = theFile.ReadElt
if (theString <> nill) then
MsgBox.Info(Line #:+(theLFile.GetPos-1).AsString
else
done = true
MsgBox.Info (end of File, )
end
end

+NL+theString,Reading,

Para dejar ver al usuario cada lnea, o verificar que fichero se est leyendo correctamente, puede usar MsgBox con el requerimiento Info
para visualizar la cadena que se est leyendo.

Ejercicio A: Leer y escribir ficheros


Paso 1

Iniciar ArcView y abrir un proyecto

Paso 2

Leer lneas desde un fichero y escribirlas en un segundo fichero

Paso 3

Almacenar entradas de usuario en un fichero de texto

Paso 4

Leer desde varios ficheros y escribir en un fichero nuevo

(opcional)

Paso 5

Examinar y reformar cadenas

Ejercicio A: Leer y escribir ficheros


En este ejercicio, leer y escribir ficheros de texto. Obtendr informacin desde el usuario, entonces cree un fichero y aada datos
desde un fichero de texto.
Paso 1

Iniciar ArcView y abrir un proyecto

Si es necesario, inicie ArcView.


Desde el men File (Archivo), elija Open Project (Abrir Proyecto). Muvase al directorio exercice. Haga doble clic en exa.apr para abrir
el proyecto de este ejercicio.
Cuando se abra el proyecto, ver la ventana del proyecto.
Paso 2

Leer lneas desde un fichero y escribirlos en un segundo fichero

En este paso, crear dos ficheros. Como lee los registros desde la primera lnea, los escribir en el segundo fichero.
Desde la ventana del proyecto, abra el Exercice EXA, Step 2.
Examine el fichero de texto gisfile1.txt que aparece a continuacin. Este es el fichero desde el que leer.
Almost 30 years ago, a number of geographers conceived a system for storing and organizing
espatial information in a computer. Over the past decade, this growing technology has come to be
know as Geographic Information System (GIS).
Paralleling advancements in the technology has been the growth of GIS applications. From highquality cartography to land use planning, natural resource management, environmental
assessment and planning, tax mapping, ecological research, emergency vehicle dispatch,
demographic research, utilities, business applications, and more, GIS promises to be one of the
largest computer applications ever to emerge.
Cree una variable llamada readFN enviando a la clase FileName el requerimiento Make con la ruta
$AVETRAIN/data/gisfile1.txt.

Cree una variable llamada readFile enviando a la clase LineFile al requerimiento Make. Los parmetros que el requerimiento Make
necesita son readFN y la enumeracin para el permiso de lectura es #FILE_PERM_READ.
Luego, cree un fichero en su directorio pavetemp en el que escribir las lneas que lea desde gisfile1.txt.
Cree una variable llamada writeFN enviando a la clase FileName el requerimiento Make con la cadena <ruta de pavetemp>/gisfile2.txt.
Cree una variable llamada writeFile enviando a la clase LineFile el requerimiento Make. Los parmetros que el requerimiento Make
necesita son writeFN y la enumeracin para el permiso de escritura es #FILE_PERM_WRITE.
Cree un bucle para leer todas las lneas en gisfile1.txt y escribirlas en gisfile2.txt.
Construya un bucle While con la condicin creada, enviando a readFile el requerimiento IsAtEnd con el requerimiento No.
Defina la variable llamada theString enviando a readFile el requerimiento ReadElt para leer un elemento.
Para escribir el elemento, enve a writeFile el requerimiento writeElt con theString.
Fin de la iteracin.
Despus de leer y escribir, enve a readFile y writeFile el requerimiento Close.

Compile y ejecute el programa.

Para examinar los resultados, desde la ventana del proyecto, abra el nuevo script. Utilice un nuevo script. Use el botn Load Text File
(Cargar Fichero de Texto) para cargar gisfile2.txt desde su directorio pavetemp en el script.
Figura
Ahora comprelo con gisfile1.txt como se mostr al comienzo del paso (pg. A-16)
Ahora, en lugar de escribir los nombres de los ficheros en el cdigo del script, permitir al usuario seleccionar un fichero para leer desde l
y crear uno nuevo para escribir en l.
Primero, comente las lneas que definen las variables readFN y writeFN.
Luego, cree una caja de dilogo que permita al usuario buscar directorios y elegir desde una lista con todos los ficheros, los de
extensin .txt.
Cree una nueva variable readFN enviando FileDialog con el requerimiento Show. Para los parmetros de Show, utilice las cadenas *.txt
para el patrn, TextFiles (*.txt) para el texto en la caja Type, y Select Files como ttulo de la caja.
Ahora cree una caja de dilogo que permita al usuario dar nombre al fichero de salida. Tambin listar todos los ficheros que tengan
extensin .txt.
Cree un nuevo writeFN enviando FileDialog con el requerimiento Put.
Como parmetros, use las cadenas <ruta
de
pavetemp>/newfile.txt con el requerimiento AsFileName como nombre del fichero por defecto, *.txt como patrn y CreateFile para el
ttulo de la caja.

Compile y ejecute el script. En la caja de dilogo creada elija un fichero de texto bajo e l directorio $AVETRAIN /data para el fichero de
entrada. En la caja de dilogo, cambie o deje el nombre por defecto del fichero de salida.
Para examinar los resultados, desde la ventana de proyecto, abra el nuevo script. Use el botn Load Text File (Cargar Fichero de Texto)
para cargar <ruta de pavetemp>/<su fichero > en el script.

Paso 3

Almacenar entradas de usuario en un fichero de texto

Pedir al usuario la entrada de datos personalizados y los escribir en un fichero. Utilizar una caja de mensaje YesNo para que el
usuario conteste si quiere continuar introduciendo datos.
Abra el script llamado Exercice EXA, Step 3, examine el cdigo que hay ya en el script, el cual muestra en pantalla una caja de mensaje
MultiInput. Cree este cdigo en un ejercicio.
theLabels = {Company Name,Address, Phone number)
theDefaults = {ESRI, 380 New York Street, (909) 793-2853)
theList = MsgBox.MultiInput (Enter Customer Data,Customer Database , theLabels, theDefaults)
Cree un fichero para escribir las entradas del usuario, cree una variable llamada theFN enviando la cadena <ruta de
pavetemp>/customer.dat con el requerimiento AsFileName.
Cree una variable llamada theWriteFile enviando el requerimiento Make a LineFile. El requerimiento Make necesita los parmetros
theFN y la enumeracin para el permiso de aadir al fichero #FILE_PERM_APPEND.
Haga el bucle para preguntar al usuario. Cuando el usuario conteste yes, la entrada se visualizar.
-Muvase a la lnea despus del comentario de la caja de entrada.
Use el bucle While y como condicin, enve el requerimiento YesNo a MsgBox. Como mensaje use Do yo want to add another
Record?, como ttulo use Customer Data y asigne por defecto el valor True.
La caja MultiInput pregunta al usuario por el nombre de la compaa, la direccin y el nmero de telfono, y crea una variable llamada
theList (este cdigo ya estaba en el script).
Despus de la lnea que crea la variable theList, inserte una nueva lnea.
Ahora cree el cdigo para escribir los nuevos datos al fichero de salida.
Para escribir tres elementos desde una lista en el fichero, enve el requerimiento WriteElt a theWriteFile. El parmetro para WriteElt
necesita tres cadenas. Cree la primera cadena enviando el requerimiento Get a theList con el ndice 0. Cree las otras dos cadenas de
igual forma, usando los ndices 1 y 2. Concatene las tres cadenas con ++.
Fin del bucle While.

Cuando el usuario conteste no, el fichero de texto se cerrar.


Enve el requerimiento Close a WriteFile.
Compile y ejecute el script. Introduzca algunos registros personalizados en el formulario. Puede usar la tecla de tabulacin <Tab> para
moverse por las cajas de entrada.
Examine los resultados, desde la ventana de proyecto, abra un nuevo script. Use el botn Load Text File para cargar <ruta de
pavetemp>/customer.dat en el script.
Ejecute el script de nuevo, aada alguno registros ms. Cargue <ruta de pavetemp>/ customer.dat en el script de nuevo, y observe que
los registros se han aadido correctamente (ej. El fichero no es borrado cada vez).

Paso 4

Leer desde varios ficheros y escribir en un fichero nuevo

(opcional)

Escriba un script que lea las primeras lneas de una muestra de scripts y escriba la informacin de la cabecera en un fichero de salida.
Abra el script, Exercice EXA, Step 4.
Para crear una lista de ficheros (*.ave), cree una variable llamada scriptFNList y enve a FileDialog el requerimiento ReturnFiles. Para la
lista de patrones, use la cadena *.ave y para la lista de etiquetas use Avenue Scripts (*.ave). Debido a que podra tener mltiples
patrones y etiquetas, site cada una de esas cadenas en una lista ({}). El ttulo de la caja de dilogo es Select Scripts, y use 0 para el
patrn por defecto.
Cree una variable llamada writeFN enviando al objeto FileName al requerimiento Make. Use como parmetro la cadena <ruta de
pavetemp>/headers.txt.
Cree una variable para el nuevo fichero llamada writeFile enviando a LineFile el requerimiento Make y la enumeracin para el permiso
de escritura es #FILE_PERM_WRITE.
Cree una variable llamada writeFile enviando a la clase LineFile el requerimiento Make. Los parmetros que el requerimiento Make
necesita son writeFN y la enumeracin para el permiso de escritura es #FILE_PERM_WRITE.
Cree un bucle que abra cada fichero para leer, creando una variable llamada readFile. Enviando el requerimiento Make a LineFile con
scriptFN y #FILE_PERM_READ.

Cree otro un bucle For Each que procese las cuatro primeras lneas (1..4) en cada fichero.
Cree una variable llamada theString usando readFile con el requerimiento ReadElt.
Enve a writeFile el requerimiento writeElt con theString como parmetro.
Fin de la iteracin For Each
Cierre readFile con el requerimiento Close.
Fin del otro bucle For Each.
Cierre el writeFile.

Compile y ejecute el script. Muvase hasta $AVETRAIN/scripts elija unos ficheros de los que leer sus cabeceras.
Para examinar los resultados, desde la ventana de proyecto, abra un nuevo script. Utilice el botn Load Text File (Cargar Fichero de
Texto) para cargar <ruta de pavetemp>/headers.txt en el script.

Paso 5

Examinar y reformar cadenas

En este paso, modifique el script creado en el paso 4 a un script con caracteres extra en la informacin de cabecera. Usando este script,
puede crear un fichero de salida describiendo toda lo que hace la muestra de scripts.
Se muestra a continuacin, la parte superior de la informacin de la cabecera para una muestra de scripts de Avenue. Observe los
caracteres especiales y las marcas de comentario. La informacin que describe lo que hace el script se encuentra en las diez primeras
lneas.
@(#) addgshp.ave 1.3 8/18/94 18:37:52
Name: AddGraphicShapesToView

Headline:A sample script wich demonstrates creating various GraphicShapes,


changing symbology, and adding these to the GraphicList of a View.

Self:

Desde la ventana del proyecto, abra Exercice EXA, Step 5. Modifique el bucle For Each. Para leer las diez primeras lneas,
cambie el rango de 1..4 a 1..10.
Despus de leer el elemento (ReadElt), use un estamento If Then para chequear if theString contains la cadena Self. Then, si se
cumple la condicin del if, break sale del bucle de este script y va al siguiente script.
Else, crea una variable llamada trimString y enva a theString el requerimiento BasicTrim acompaado con @(#) a la izquierda y nada
a la derecha. Asigne de nuevo trimString, esta vez acompaada slo con el apstofe a la izquierda y nada a la derecha.
Para el parmetro WriteElt, cambie theString a trimString.
Find del estamento if Then Else.
Compile y ejecute el script. Muvase al directorio $AVETRAIN /scripts y elija unos pocos ficheros para leer sus cabeceras.
Para examinar los resultados, desde la ventana de proyecto, abra un nuevo script. Use el botn Load Text File (Cargar Fichero de Texto)
para cargar <ruta de pavetemp>/headers.txt en el script.

Fin

A P N D I C E

Comunicacin con otro software


Comunicacin con otro software.......................................................................

B-2

Ejecutar comandos del sistema.................................................................. B-4


Conexin a una base de datos SQL...........................................................B-6
Interaplicacin de comunicacin (IAC)............................................................. B-8
Servidor de aplicaciones a un cliente de ArcView...................................... B-10
Aplicaciones de un cliente a un servidor de ArcView.................................
B-12
Llamada a Procedimientos Remotos (RPC).....................................................

B-14

Un cliente de ArcView con un servidor de ARC/INFO................................ B-16


Un servidor de ArcView y un cliente de ARC/INFO.................................... B-18
Ejercicio B1: Comunicacin con ARC/INFO..................................................... B-21
Cambio de Datos Dinmico (DDE) ...................................................................
Un cliente de ArcView con un servidor de Excel........................................ B-28
El DDEServer de ArcView.......................................................................... B-30
Ejercicio B2: Comunicacin con Excel............................................................. B-33

B-26

Comunicacin con otro software


Ejecutar comandos del sistema
Conexin a bases de datos SQL
Usar protocolos de interaplicacin

Comunicacin con otro software


En esta seccin, examinar una variedad de tcnicas que permiten a ArcView GIS comunicarse con otras aplicaciones. Ver
como Avenue puede enviar requerimientos a otros programas a travs de la clase System, la clase SQLCon y las clases que
soportan
los protocolos RPC y DDE .

Ejecutar comandos del sistema


Ejemplos en Windows
abre Excel con
System.Execute (c:\excel\excel.exe c:\sheet1.xls)
Ejecuta el registro de sonido
System.Execute (c:\soundrec.exe c:\windows\chimes.wav)
Ejemplos en UNIX
Inicia ARC/INFO y ejecuta un programa AML

System.EXecute (arc \ &run xyz.zml &)


Ejecuta un fichero audio
audioFile = mycoice.zu
commandString = cat home/ + audioFile + /dev/audio &
System.Execute (commandString)

Ejecutar comandos del sistema

El requerimiento Execute en la clase System proporciona un significado dirigido al envode una cadena de comando de una
plataforma especfica al sistema operativo. La cadena puede contener adicionalmente parmetros que requieren los comandos
del sistema o aplicacin.
La Clase System
La clase system proporciona otros requerimientos que permiten operaciones no definidas con consistencia mediante distintas
plataformas. Todos los requerimientos se envan a la clase System.
Por ejemplo, puede sonar un pitido (Beep) o un fichero con sonido (PlaySound).
Puede chequear la informacin del sistema de igual modo que las variables del entorno utilizando GetEnvVars y SetEnvVars,
tome el sistema operativo actual con GetOS, y la informacin sobre la memoria con GetAvailableMemory, IsMemoryAvailable y
PrintMemory.
Para ms informacin sobre la pantalla, mire los requerimientos GetLook y SetLook, SetScreenSizeInches,
ReturnScreenSizePixels y RefreshWindows.
Para chequear las teclas pulsadas y el clic del ratn, mire los requerimientos IsAltKeyDown, IsControlKeyDown y
IsDoubleClick.

Conexin a una base de datos SQL


Ejecutar bases de datos
theSQLList = SQLCon.GetConnections
mySQLCon=MsgBox.Choice(theSQLList,Pick a database,
SQL Connection)
Acceso a bases de datos
mySQLCon = SQLCon.Find (Oracle)
mySQLCon.Login (user/password)
Crear una Vtab y una tabla
sqlExp = select * from t1.tab
theVTab = VTab.MakeSQL (mySQLCon, sqlExp)
theTable = Table.Make (theVTab)
Enviar una expresin SQL al servidor
ok = mySQLCon.ExecuteSQL (sqlxp)

Conexin a una base de datos SQL

Use la clase SQL para encontrar o consultar conexiones SQL. Puede tomar una lista de todas las bases de datos con
GetConnections. Para crear la conexin, puede utilizar la lista, tomar una base de datos mediante su ndice numrico, o
permita al usuario
que seleccione la base de datos desde una caja de mensaje. Tambin puede usar el requerimiento Find para crear una
conexin que proporcione un nombre de base de datos.
Use el requerimiento Login para acceder al servidor con una cadena de entrada.
Una vez que la conexin est hecha, defina una expresin de seleccin y cree una VTab con el requerimiento MakeSQL y la
expresin. Entonces cree el documento tabla con la VTab.
Enviar un comando al servidor SQL
Enve los procesos al servidor SQL utilizando el requerimiento ExecuteSQL. Puede usarla para seleccionar, actualizar,
insertar o borrar informacin desde la base de datos SQL. Este requerimiento devuelve un booleano indicando si el proceso se
realiz con xito.
Plataformas UNIX
La interfaz de base de datos de ARC/INFO (DBI) se utiliza para conectar a bases de datos SQL en plataformas UNIX. el
fichero $AVHOME/etc/default.db es el fichero de definicin que contiene la informacin de conexin para cada base de datos.
Plataformas PC (bajo Windows o NT)
Los conductores de la base de datos relacional abierta (ODBC) se utilizan para conectar a bases de datos SQL. ESRI
solo testea y soporta el paquete Intersolv DataDirect ODBC. EL conductor define las conexiones y mtodos de acceso a
registros.
Los scripts que contienen la clase SQLCon o el requerimiento MakeSQL no pueden ejecutarse desde el editor de scripts.
Debe asignar primero al script un botn o eleccin de men.

Interaplicacin de comunicacin (IAC)


Establecer comunicacin entre las aplicaciones cliente/servidor
Un cliente hace un requerimientos a un servidor; el servidor contesta
Protocolos de plataformas especficas
Windows-Dynamic Data Exchange (DDE)
UNIX - Llamadas a procedimientos remotos (RPC)
Macintosh - eventos Apple y AppleScript

Cliente

Servidor

requerimiento

requerimiento
respuesta respuesta

Red

Interaplicacin de comunicacin (IAC)

La interaplicacin de la comunicacin (IAC) establece comunicacin entre el cliente y las aplicaciones del servidor. La
aplicacin del servidor llama a funciones o requerimientos de datos desde la aplicacin del servidor, y el servidor procesa el
requerimiento y contesta al cliente.
ArcView proporciona una plataforma especfica con soporte para IAC en las siguientes plataformas:
Intercambio Dinmico de Datos(DDE) para Windows
Llamada a procedimientos remotos (RPC) para Unix
Eventos Apple y AppleScripts para Macintosh
Varias clases, tales como DDEClient, DDEServer, RPCClient y RPCServer,han sido implementadas para soportar estos
protocolos de plataformas especficas.

Servidor de aplicaciones a un cliente de ArcView


Paquetes estadsticos
Software de procesamiento de imgenes
ARC/INFO GIS

Servidor
Hoja de clculo

Paquete
Estadstico
Procesamiento
Imgenes
Usuario
ArcView

Cliente
ARC/INFO

Hoja de
Clculo

Servidor de aplicaciones a un cliente de ArcView

Puede utilizar el cliente de ArcView para conectarse a una aplicacin de un servidor que entienda el protocolo IAC. ArcView
puede preguntar a un paquete estadstico para calcular sofisticadas estadsticas y devolver los resultados, o puede preguntar
a un software de procesamiento de imgenes para manipular una imagen que va a ser usada como tema en ArcView.
ARC/INFO puede ser usado para permitir operaciones GIS sofisticadas y generar nuevas fuentes de datos que pueden ser
utilizadas por ArcView.
ArcView puede pasar datos a una hoja de clculo y tomar la ventaja de las funciones de manipulacin de datos de una hoja de
clculo, entonces pasar los datos y cargarlos en un tabla de ArcView.

Aplicaciones de un cliente a un servidor de ArcView


Vehculo de rastreo
Estaciones supervisoras
Direcciones personalizadas

Cliente
Vehculo
de rastreo

Estaciones
Supervisoras

Direcciones
Personalizadas

Servidor
ArcView

Usuario

Aplicaciones de un cliente a un servidor de ArcView


Puede utilizar ArcView como un servidor a aplicaciones cliente. El cliente puede proporcionar a ArcView nuevas posiciones de
un vehculo movindose en una vista. El cliente tambin puede estar actualizando los valores de los atributos que afectan a la
simbologa o clasificacin de una entidad en una vista. Por ejemplo, una estacin de trfico supervisora recibe informacin
actualizada sobre la cantidad de trafico a cada hora. Esta informacin podra ser enviada a ArcView y ArcView cambiara el
color de la entidad estacin en la vista. O el cliente puede enviar a ArcView una direccin personalizada, y entonces ArcView
devolver las coordenadas x e y de la direccin.

Llamada a Procedimientos Remotos (RPC)

Permite la comunicacin entre clientes y servidores en plataformas UNIX


Un servidor RPC se identifica por
El nombre de la mquina servidor
Nmero de identificacin del servidor
Nmero de versin
El cliente usa esta informacin para establecer una conexin RPC
El servidor RPC proporciona una serie de funciones al cliente
Cada funcin se identifica con un procedimiento ID

Llamada a Procedimientos Remotos (RPC)

RPC es un protocolo de comunicacin para ejecutar aplicaciones en plataformas UNIX. RPC permite a un servidor
proporcionar una serie de funciones al cliente. El servidor y el cliente pueden se mquinas diferentes en una red.
El servidor es identificado nicamente por tres componentes: el nombre anfitrin de la mquina en la que reside, un nmero ID
del servidor, y un nmero de la versin del programa. El cliente usa esta informacin para establecer la conexin. Cada tipo
de funcin que proporciona un servidor es identificada por un nmero de identificacin del procedimiento.
El comando de UNIX rpcinfo -p <nombre anfitrin> puede utilizarse para encontrar los posibles servidores en un anfitrin
especfico.

Un cliente de ArcView con un servidor de ARC/INFO

Funciones de un servidor ARC/INFO


1- ejecuta la cadena de comando
2- devuelve el estado del proceso especificado
Establece el servidor ARC/INFO usando [ IACOPEN ]
Devuelve informacin a la consola o fichero
Arc: &set estatus := [ IACOPEN ] connect_files
Host : rhino Program no : 40000000 Version no: 1
Establece el cliente ArcView
client = RPCClient.Make (rhino, 0x40000000,1)
Crea una cadena de comando y la ejecuta en el servidor
theCommand = intersect cov1 cov2 cov3

jobID = client.Execute (1, theCommand, theString)


Chequea si el proceso ha finalizado
jobStatus = client.Execute (2, jobID, String)
if (jobStatus.Extract (0) = DONE) then
MsgBox.Info ( El proceso de ARC/INFO ha acabado...,)
end

Un cliente de ArcView con un servidor de ARC/INFO


Puede usar ARC/INFO como un servidor RPC para un cliente ArcView. Los dos procedimientos que soporta ARC/INFO son la
ejecucin de la cadena de comando (procedimiento ID=1), y devolver el estado del proceso (procedimiento ID=2).
Crear el servidor y cliente
Primero cree el servidor ARC/INFO usando la funcin de AML [IACOPEN] que devuelve la informacin necesaria para el
cliente de ArcView: el nombre anfitrin de la mquina del servidor, el nmero ID del servidor y el nmero de la versin del
programa.
Opcionalmente, esta informacin puede ser capturada en un fichero. Establezca un cliente de ArcView usando la clase
RPCClient con el requerimiento Make y la informacin devuelta para estos parmetros. Cierre la conexin del cliente de
ArcView
con el requerimiento Close.
Ejecutar un comando
Cree una cadena de comando, entonces, use el requerimiento Execute para ejecutar el comando en el servidor. Los
parmetros del requerimiento de Execute son, un nmero de procedimiento, una cadena de comando y la clase devuelta.
Execute devuelve
un Nil, cadena, booleano o nmero. El procedimiento requerido debe devolver datos que puedan ser convertidos a una de
estas clases.
Chequear si el proceso se ha completado

En el siguiente ejemplo, ARC/INFO crea una nueva cobertura que usted quiere aadir como un tema de ArcView. Para
averiguar si ARC/INFO ha completado el proceso, use el requerimiento Execute con el procedimiento ID-2. Compruebe que se
devuelve la cadena DONE. Cuando el proceso se ha completado, puede aadir el nuevo tema.
Error de chequeo
El RPCClient tiene varios requerimientos de chequeo de errores, incluyendo GetErrorID, GetErrorMessage y HasError.

Un servidor de ArcView y un cliente de ARC/INFO


Funciones de un servidor ArcView
1- ejecucin de script
Establece ArcView como servidor
RPCServer.Start (0x40000000,1)
Establece ARC/INFO como cliente
Arc: &s x [IACREQUEST %server% 1 av.run (aScript, ) stat)
Desconecta ArcView como servidor
RPCServer.Stop

Un servidor de ArcView y un cliente de ARC/INFO


Puede utilizar ArcView como un servidor RPC para un cliente ARC/INFO. Inicie el servidor de ArcView con el requerimiento
Start en la clase RPCServer. Proporcione el servidor ID y el nmero de la versin como informacin de conexin. Slo un
servidor
RPC puede existir para una aplicacin en ArcView. Use RPCServer con el requerimiento Stop para detener el uso de ArcView
como un servidor.
Establezca el cliente ARC/INFO con la funcin de AML [IACCONNECT]. sta requiere informacin de conexin (la cual es
creada por [IACOPEN], y un estado de conexin. [IACREQUEST] ejecuta un script en el servidor y devuelve una cadena que
representa el
ltimo objeto creado. El servidor RPC de ArcView soporta una funcin, identificada por el nmero 1.

Ejercicio B1: Comunicain con ARC/INFO

Paso 1

Iniciar ArcView y abrir un proyecto

Paso 2

Examinar una muestra de scripts

Paso 3

Asociar la conexin y los scripts del servidor con los botones

Paso 4

Establecer el servidor ARC/INFO

Paso 5

Enviar comandos al servidor desde un cliente

Ejercicio B1: Comunicain con ARC/INFO

En este ejercicio, usar los scripts de Avenue para conectarse con ARC/INFO. Aprender como establecer a ArcView como
cliente y a ARC/INFO como servidor.
Paso 1

Iniciar ArcView y abrir un proyecto

Si es necesario inicie ArcView.


Desde el men File (Archivo), elija Open Project (Abrir Proyecto). Muvase al directorio exercice. Haga doble clic en
exb1.apr para abrir el proyecto para este ejercicio. Cuando se abra el proyecto, ver la vista Readlands con dos temas activos,
Flood Zone y Landuse.
Paso 2

Examinar una muestra de scripts

Hay dos scripts en el proyecto. El script ConnectToAlServer conecta ARC/INFO como servidor; el script AlServer usa el
servidor ARC/INFO para permitir la unin de las coberturas de polgonos Flood y Landuse. Los dos scripts se incluyen en la
muestra de scripts proporcionados por ArcView.
Para examinar estos scripts, vaya al men Help (Ayuda) y haga clic en Help Topics (Ayuda de Temas) para abrir la ayuda
de ArcView. Haga clic en Find (Encontrar) y teclee el nombre de cada uno de los scripts de la muestra: ConnectToAIServer y
AIServer. Examine el cdigo fuente para cada uno de esos scripts.

Paso 3

Asociar la conexin y los scripts del servidor con los botones

Los documentos scripts llamados ConnectToAIServer y AIServer han sido creados en su proyecto. Crear dos botones y
asignar estos scripts con el evento Clic del botn.
Abra la caja de dilogo de personalizacin y aada dos botones a la GUI de la vista. Aada los nuevos botones a la
derecha del botn Help (Ayuda).
Para el nuevo botn a la derecha, asgnele en la propiedad Icon el icono C y asciele el script ConnectToAIServer con la
propiedad Click.
Para el nuevo botn a la izquierda, asgnele en la propiedad Icon el icono S y asciele el script AIServer con la propiedad
Click.
Cierre la caja de dilogo de personalizacin.
Paso 4

Establecer el servidor ARC/INFO

Ahora iniciar ARC/INFO y usar una funcin del AML para dar el nombre anfitrin, el ID del servidor y el nmero de la versin.
Muvase a la ventana de UNIX, y con el prompt del UNIX teclee arc para iniciar ARC/INFO.
Promp de Unix :> arc
Use el directivo &type con la funcin [ IACOPEN ] para iniciar el servidor de ARC/INFO, y cree un fichero llamado
connect.iac que contenga la informacin de conexin: nombre anfitrin, nmero del programa y versin del programa.
Arc: &type [IACOPEN] connect.iac
Hsot: <su nombre> Program no : 40000000 Version no : 1
0
Si la segunda lnea no es 0, se producir un error; desconecte el servidor de ARC/INFO par teclear &Type [ IACCLOSE
].
Luego, editar el script AIServer y remplazar el nombre anfitrin (Rhino) con el suyo.
Con la ventana del proyecto activa, haga clic en el icono Scripts, entonces haga doble clic en el script AIServer para
abrirlo.
Muvase a la primera lnea despus de los comentarios y cambie rhino por su anfitrin.
Client = RPCClient.Make (rhino, 0x40000000,1)

Guarde los cambios y compile es script.


Paso 5

Enviar comandos al servidor desde un cliente

Ponga activa la vista Redlands.


Haga clic en el botn C para leer la conexin del fichero y establecer ARC/INFO como servidor. En la caja de dilogo de
conexin, elija su fichero de conexin , connect.iac
( busque en su directorio home).
Haga clic en el botn S para enviar a ARC/INFO el comando UNION para superponer los dos temas de polgonos activos.
Llame a la cobertura de salida luflood.
Haga clic en la caja de dilogo de sintaxis ARC/INFO. ArcView est ocupado hasta que ARC/INFO finaliza la unin de los dos
temas de polgonos.
El script AIServer encuentra las coberturas que fueron usadas para crear los temas landuse y flood. Si ejecuta el comando
UNION de ARC/INFO, el cual superpone las coberturas y crea una nueva cobertura, se crear un tema de salida llamado
luflood desde la nueva cobertura.

Fin

Cambio de Datos Dinmico (DDE)


Permite el intercambio de datos entre dos aplicaciones de Windows
El intercambio de datos se llama conversacin
Una conversacin es nicamente identificada por el nombre de la aplicacin y tema
El tema describe el tipo de datos intercambiados
Los datos han sido intercambiados son referidos como un item (campo).

Cambio de Datos Dinmico (DDE)


El Intercambio Dinmico de Datos (DDE) es un protocolo para transferir datos entre aplicaciones ejecutadas bajo Microsoft
Windows. La aplicacin cliente inicia un requerimiento y la aplicacin servidor responde. El cliente y el servidor son referidos
a
la vez como destino y fuente.
Una conversacin DDE
Las aplicaciones se intercambian informacin mediante una conversacin. Cada conversacin es nicamente definida por
dos partes de informacin: la aplicacin del servidor y el tema. El nombre de la aplicacin es usualmente el nombre del fichero
ejecutable, sin la extensin del fichero (ej. MSAccess para Microsoft Access ). Los temas son categoras de datos que el
servidor entiende. Cada servidor soporta varios temas; la mayora de los servidores soporta el tema del sistema. Consulte su
documentacin de la aplicacin para ver que temas soporta. Las partes de datos que se intercambian se llaman items
(campos).
Muestra de scripts DDE
Use la etiqueta Find (Encontrar) en la ayuda de ArcView para localizar y examinar estos scripts: DDECreateSpreadsheet y
GetDDESystemItems.

Un cliente de ArcView con un servidor de Excel


Establece el cliente ArcView y el servidor Excel
exitClient = DDEClient.Make (excel, system)
Inicia las siguientes transacciones
ejecuta - provoca que el servidor ejecute un comando
requiere- enva informacin desde el servidor al cliente
poke - enva informacin desde el cliente al servidor
Crea una hoja de clculo
ex1Client.Execute ([ New (1,0,FALSE ])
Recupera informacin desde la hoja de clculo
selection = ex1Client.REquest (selection)
analiza el nombre de la hoja de clculo
spreadSheet = selection.Left (selection.IndexOf (!))
Inicia una nueva conversacin con el nuevo tema
asClient = DDEClient.Make (excel, spreadSheet)
Enva un valor a Excel
asClient.Poke(R1C1, 234567)

Un cliente de ArcView con un servidor de Excel


Establezca el cliente de ArcView y la conversacin con la clase DDEClient y el requerimiento Make. Use la aplicacin y el tema
para los parmetros de la nueva conversacin. Para desconectar el cliente desde el servidor, use el requerimiento Close.
Transacciones
Use el DDEClient par iniciar una de las diversas transacciones. Execute hace que el servidor ejecute las cadenas de
comando recibidas desde el cliente. Request y Poke transfieren datos. Request devuelve un campo del servidor al cliente.
Poke enva un campo desde el cliente al servidor.
Chequeo de errores
El DDEClient tiene diversos requerimientos de chequeo de errores incluyendo GetErrorID, GetErrorMessage y HasError.
Puede usarlos para chequear si la conexin se hizo con xito con el siguiente cdigo:
exClient = DDEClient.Make ("Excel ", "System")
if (exlClient.HasError ) then
MsgBox.Error (exlClient.GetErrorMsg, "")
exit
end

El DDEServer de ArcView
El servidor de ArcView se inicia cuando se abre la aplicacin
Soporta los temas del sistema
Soporta los campos de cadena
El servidor DDE de ArcView soporta las siguientes transacciones:
ejecuta - ArcView ejecuta las cadenas de comando desde el cliente
requiere - ArcView devuelve los resultados del script al cliente
poke- el cliente enva los datos para usar como entrada a un script
El servidor de ArcView se detiene cuando la aplicacin se cierra

El DDEServer de ArcView
Cuando se abre la aplicacin en ArcView, el DDEServer de ArcView se inicia y llama a ArcView. Slo hay un servidor de
ArcView iniciado para la aplicacin. El proyecto de arranque
por defecto inicia el DDEServer y el proyecto por defecto de cierre para el
DDEServer. El servidor de ArcView soporta slo el tema System y el campo String.
Transacciones
El cliente puede iniciar uno de las diversas transacciones standard: Execute, Request, Poke y Advise. Execute hace que
ArcView ejecute comandos recibidos en una cadena desde el cliente. Por ejemplo, Excel puede enviar un comando para
ejecutar un script (av.Run). Si el script calcula un valor del registro, Request podra devolver el valor a Excel. Poke transfiere
datos desde el cliente a ArcView. Por ejemplo, si el cliente es una aplicacin que recoge las posiciones del GPS
(Global Positioning System), podra pasarlas a ArcView y actualizar la posicin del vehculo en la pantalla.

Ejercicio B2: Comunicacin con Excel


Paso 1

Iniciar Excel y ArcView y abrir el proyecto.

Paso 2

Crear una conexin con Excel y chequear los errores

Paso 3

Proporcionar una lista de campos desde Excel y seleccionar uno para consultar

Paso 4

Se necesita ms informacin sobre el campo seleccionado

Ejercicio B2: Comunicacin con Excel


En este ejercicio conectar con Excel y le enviar requerimientos para devolver una lista de campos. Entonces proporcionar
informacin sobre los campo seleccionado desde la lista.
Paso 1

Iniciar Excel y ArcView y abrir el proyecto.

Inicie Excel desde el Administrador de programas mediante doble clic en el icono de Excel.
Si es necesario, inicie ArcView.
Desde el men File (Archivo ) elija Open Project (Abrir Proyecto). Muvase al directorio exercice, con doble clic en
exb2.apr para abrir el proyecto de este ejercicio.
Cuando el proyecto se abra, ver abierto el script con ttulo Exercice EXB2, Step 2.
Paso 2

Crear una conexin con Excel y chequear los errores

Con este script crear una conexin con Excel. Antes de pasar informacin a Excel, querr verificar que la conexin se
ha realizado correctamente.
Cree una variable llamada sysClient enviando el requerimiento Make a DDEClient, usando como dos parmetros las
cadenas Excel y System.
Inicie un estamento If Then, utilizando sysClient.HasError como valor booleano.
Informe del error enviando un requerimiento Error a MsgBox. Enve el requerimiento GetErrorMsg a sysClient como
primer parmetro, y una cadena vaca como el segundo.
En este punto, salga del script y finalice el estamento If Them.

Paso 3

Proporcionar una lista de campos desde Excel y seleccionar uno para consultar

Una vez hecha la conexin a Excel, ArcView puede enviar un requerimiento y recibir informacin desde Excel sobre el
requerimiento.
Cree una variable llamada excelItems enviando el requerimiento Request a sysClient. Como parmetro enve
lacadena SysItems.
ExcelItems es una cadena que contiene todos los campos que soporta Excel. Convertir la cadena a una lista y la usar
para hacer una seleccin desde una caja de mensaje.
Cree una variable llamada selectItem enviando el requerimiento ListAsString a MsgBox. Como primer parmetro enve
excelItems al convertidor AsList. Como segundo parmetro, enve la cadena Select an Item to Query, y como tercer
parmetro, enve la cadena Query Excel Items.
Testee para ver si algn campo est seleccionado. Sino, detenga la ejecucin del script.
Utilice el estamento If con Item = nil como condicin, Then
Si la condicin es true, salga del programa y finalice el estamento If Them.
Paso 4

Se necesita ms informacin sobre el campo seleccionado

Una vez seleccionado un campo, puede necesitar informacin adicional sobre l desde Excel.
Cree una variable llamada result enviando el requerimiento Request a sysClient. Use selectItem como parmetro.
Cree resulttrans enviando el requerimiento Translate a result, con una cadena vaca concatenada con un carcter TAB
como primer parmetro y dos concatenando NL (nueva lnea) como segundo parmetro.
Visualice el resultado enviando el requerimiento Report a MsgBox. Como primer parmetro, enve reslttrans, y como
segundo la variable selectItem.
Cierre la conexin enviando el requerimiento Close a sysClient.

Compile y ejecute el script. Elija un de los campos en la lista y lea la informacin sobre el campo seleccionado. Testee
el script unas dos veces como informacin adicional sobre los campos del sistema Excel.
Ahora compare su script con un script de muestra.
Haga clic en Find en la ayuda de ArcView y teclee el nombre de su script: GetDDESystemItems. Este script es similar
al que acaba de realizar usted.

Fin

Você também pode gostar