Professional Documents
Culture Documents
Versin 9.5
Este manual es una gua de referencia para el desarrollo de aplicaciones en MapInfo Professional 9.5 Elaborado por: Olibert Garca Felipe
MANUAL DE MAPBASIC
INDICE
1.
EDITOR DE MAPBASIC ............................................................................................................................... 4 1.1 1.2 DESCRIPCIN DE LA INTERFAZ .......................................................................................................................... 4 COMPILAR PROGRAMAS: ................................................................................................................................ 5
2.
FUNDAMENTOS DE PROGRAMACIN EN MB............................................................................................ 6 2.1 2.2 2.3 2.4 2.5 VARIABLES................................................................................................................................................... 6 TIPOS DE DATOS ........................................................................................................................................... 6 OPERADORES ............................................................................................................................................... 7 CONTROLES DE FLUJO Y BUCLES........................................................................................................................ 9 PROCEDIMIENTOS SUB Y FUNCTION ................................................................................................................ 12
3.
CREACIN DE INTERFACES EN MAPBASIC ............................................................................................... 14 3.1 3.2 3.3 3.4 GESTIN DE MENS .................................................................................................................................... 14 GESTIN DE BARRA DE HERRAMIENTAS:........................................................................................................... 16 FUNCIN COMMANDINFO() ......................................................................................................................... 17 CUADROS DE DIALOGO ................................................................................................................................. 21
4.
TRABAJO CON TABLAS: ........................................................................................................................... 25 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 SENTENCIA CREATE TABLE ............................................................................................................................ 25 SENTENCIA ALTER TABLE .............................................................................................................................. 26 SENTENCIA CREATE MAP.............................................................................................................................. 26 SENTENCIA PACK TABLE ............................................................................................................................... 26 FUNCIN TABLEINFO ................................................................................................................................... 26 FUNCIN NUMTABLES ................................................................................................................................. 27 SENTENCIA OPEN TABLE............................................................................................................................... 27 SENTENCIA COMMIT TABLE, ROLLBACK TABLE .................................................................................................. 27 TABLAS ESPECIALES ..................................................................................................................................... 28 FUNCIN OBJECTINFO ................................................................................................................................. 28
5.
TRABAJO CON VENTANAS ....................................................................................................................... 29 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 SENTENCIA MAP ......................................................................................................................................... 30 FUNCIN WINDOWID ................................................................................................................................. 30 FUNCIN FRONTWINDOW ........................................................................................................................... 30 FUNCIN NUMWINDOWS, NUMALLWINDOWS ............................................................................................... 30 FUNCIN WINDOWINFO .............................................................................................................................. 31 SENTENCIA SET MAP ................................................................................................................................... 32 AGREGAR Y QUITAR CAPAS ............................................................................................................................ 33 BSQUEDA Y LOCALIZACIN DE OBJETOS.......................................................................................................... 34
6.
VENTANA DE PRESENTACIN:................................................................................................................. 34 6.1 6.2 6.3 6.4 6.5 SENTENCIA LAYOUT ..................................................................................................................................... 34 SENTENCIA CREATE FRAME ........................................................................................................................... 35 SENTENCIA CREATE TEXT .............................................................................................................................. 35 TABLA LAYOUTN......................................................................................................................................... 36 IMPRESIN DE LA VENTANA DE PRESENTACIN .................................................................................................. 36
7.
TRABAJO CON DBMS:.............................................................................................................................. 36 7.1 7.2 DIFERENCIA ENTRE BBDD ESPACIAL Y NO ESPACIAL ........................................................................................... 36 CONEXIN DBMS SIN BBDD ESPACIAL.......................................................................................................... 37
preciso_net@hotmail.com
Pgina 2
MANUAL DE MAPBASIC
CONECTAR, DESCONECTAR A SQLSERVER Y ORACLE. ......................................................................................... 38 HACER UNA TABLA REPRESENTABLE CON COORDENADAS X E Y ............................................................................. 38 VINCULAR, DESVINCULAR TABLAS ................................................................................................................... 40 REFRESCAR DATOS ...................................................................................................................................... 41 CONEXIN DBMS CON BBDD ESPACIAL ........................................................................................................ 41 CREAR ESPACIOS EN EL SERVIDOR. .................................................................................................................. 42
INTEGRACIN CON OTROS LEGUAJES DE PROGRAMACIN: ................................................................... 43 8.1 8.2 8.3 ESTABLECIENDO LA CONEXIN CON LA INSTANCIA DE MAPINFO ........................................................................... 44 ENVOS DE COMANDOS Y CONSULTAS A MAPINFO DESDE VB6.0, .NET ................................................................ 44 USO DE LOS MTODOS CALLBACK .................................................................................................................. 45
preciso_net@hotmail.com
Pgina 3
MANUAL DE MAPBASIC
1. Editor de MapBasic
Para ingresar al editor y compilador de MapBasic, realice lo siguiente: En el men Inicio haga clic en programas, luego MapInfo y enseguida MapBasic 9.5
Barra de Men
rea de trabajo
preciso_net@hotmail.com
Pgina 4
MANUAL DE MAPBASIC
Men Archivo (File): Nuevo (New): Permite crear un nuevo archivo de MapBasic. Abrir (Open): Abre un archivo de MapBasic previamente guardado (*.MB) Guardar (Save): Permite guardar los cambios realizados sobre un archivo de MapBasic. Guardar Como (Save As): Permite guardar los cambios realizados sobre un archivo de MapBasic. Cerrar (Close): Cierra un archivo de MapBasic. Cerrar todo (Close All): Cierra todos los archivos de MapBasic abiertos. Revertir (Revert): Permite revertir todos los cambios realizados despus de la ltima versin guardada.
Men Edicin (Edit): Deshacer (Undo): Permite deshacer la ltima accin realizada. Cortar (Cut): Permite cortar un texto seleccionado. Copiar (Copy): Permite copiar un texto seleccionado. Pegar (Paste): Permite pegar el contenido (texto) que se encuentra en el portapapeles. Limpiar (Clear): Borra todo el texto seleccionado. Seleccionar todo (Select All): Permite seleccionar todo el contenido.
Men Buscar (Search): Buscar (Find): Muestra un cuadro de dilogo para buscar el texto ingresado. Buscar Siguiente (Find Again): Busca el siguiente resultado para el texto ingresado como bsqueda. Buscar y reemplazar (Replace and Find Again): Busca y reemplaza el texto ingresado por el nuevo texto. Ir a Lnea (Go to Line): Permite ir a la lnea indicada.
Men Proyecto (Project): Compilar archivo (Compile current file): Permite compilar el archivo actual (*.MB) en formato ejecutable (*.MBX). Ejecutar (Run): Permite ejecutar el archivo (*.MBX) en MapInfo.
preciso_net@hotmail.com
Pgina 5
MANUAL DE MAPBASIC
2. Fundamentos de programacin en MB
Expresiones: Una expresin es un conjunto de variables, constantes, llamada a funciones, referencias a tablas y operadores. Por ejemplo: Cdigo: Declare Sub Main() Sub Main() Dim nombre as String Expresion variable nombre = Hola Olibert Llamado a funcin UCase Note UCase$(nombre) End Sub
2.1 Variables
Una variable es un identificador que guarda el valor en un tipo de datos determinado. Podemos ejecutar operaciones de lectura y escritura sobre el valor que contiene. En MapBasic se declaran las variables de la siguiente manera: Dim [nom_identificador] as [Tipo_Dato] Donde [nom_identificador] es el nombre de la variable con el cual la identificaremos en el programa y [Tipo_Dato] es el tipo de dato para el valor almacenado por la variable. A continuacin se describen los tipos de datos y la forma de asignacin de los mismos.
preciso_net@hotmail.com
Pgina 6
MANUAL DE MAPBASIC
Logical
Se puede definir el valor lgico de la siguiente manera 1 = True; 0 = false. Si se tiene el archivo de definicin se podra usar las constantes TRUE, FALSE
Date
Alias
Dato exclusivo de MapInfo, es utilizado para identificar el nombre de un campo o tabla de MapInfo
Pen
Brush
Font
Symbol
Object
Dato exclusivo de MapInfo, es utilizado para almacenar un objeto (Punto, Lnea, Regin, Polilnea, etc.)
2.3 Operadores
Un operador acta sobre una o ms variables para producir un resultado. Los operadores se clasifican segn el tipo de dato o valor que producen. Operadores Numricos: Los operadores numricos actan sobre los valores numricos para obtener un resultado. Los operadores numricos son los siguientes:
preciso_net@hotmail.com
Pgina 7
MANUAL DE MAPBASIC
Operador + * / \ Mod ^
Operadores Cadena: Los operadores de cadena trabajan sobre variables de este tipo para realizar operaciones de concatenacin o de comparacin. Los operadores de cadena son los siguientes: Operador & (+) Like Operacin Concatenar Evalua una cadena contra un determinado patrn. Devuelve un valor lgico Caracteres comodn: % : Representa cero o mas caracteres _ : Representa un carcter. Ejemplo NomCompleto = Apellidos & , & nombres NomCompleto = Apellidos + , + nombres varIgual = nombre like Ol_b%
La diferencia entre el operador & (ampersand) y el operador + (plus) es que & obliga a que los tipos de datos sean cadena, sin embargo para que se ejecute correctamente debe ir separado de la variable a la cual concatena. El operador + puede concatenar una cadena sin embargo si es utilizado con dos variables de tipo numrico interpretara que se est realizando una suma. Operadores de fechas: Los operadores sobre fechas permiten sumar o restar fechas de la siguiente manera: Expresin Date + Integer Date Integer Date Date Retorno Retorna un tipo fecha con N das ms, el nmero de das agregados est determinado por la variable entera. Retorna un tipo fecha con N das menos, el nmero de das disminuidos est determinado por la variable entera. Retorna un valor entero, con la diferencia de das entre ambas fechas.
Operadores de comparacin: Los operadores de comparacin evalan dos valores y retornan valores lgicos. Operador = <> < Retorna verdadero cuando: Iguales Diferentes Menor Ejemplo IF A = B THEN IF A <> B THEN IF A < B THEN
preciso_net@hotmail.com
Pgina 8
MANUAL DE MAPBASIC
IF IF IF IF
A A A A
> B THEN <= B THEN >= B THEN Between 1 And 100 THEN
Los operadores lgicos evalan valores lgicos y retornan como resultado un nuevo valor lgico TRUE o FALSE. Operador AND OR NOT Retorna Verdadero cuando: Ambas expresiones son verdaderas Una de las expresiones o ambas son verdaderas Niega la expresin, si es Ejemplo IF A AND B THEN IF A OR B THEN IF NOT A THEN
Operadores Geogrficos: Estos operadores son exclusivos de MapInfo y operan sobre expresiones de tipo objeto, retornando un valor lgico. Operador CONTAINS CONTAINS PART CONTAINS ENTIRE WITHIN PARTLY WITHIN ENTIRELY WITHIN INTERSECTS Retorna Verdadero cuando: Primer objeto contiene el centroide del segundo objeto. Primer objeto contiene parte del segundo objeto. Primer objeto contiene totalmente al segundo objeto. El centroide del primer objeto esta dentro del segundo objeto El primer objeto est parcialmente dentro del segundo objeto. El primer objeto est enteramente dentro del segundo objeto. Los dos objetos se intersecan en algn punto. Ejemplo IF A CONTAINS B THEN IF A CONTAINS PART B THEN IF A CONTAIN ENTIRE B THEN IF A WITHIN B THEN IF A PARTLY WITHIN B THEN IF A ENTIRELY WITHIN B THEN IF A INTERSECTS B THEN
preciso_net@hotmail.com
Pgina 9
MANUAL DE MAPBASIC
Cdigo: Declare Sub Main() Sub Main() Dim nombre as String Expresion variable nombre = Olibert Evalua la condicin IF nombre = Olibert THEN se ejecuta si es verdadero NOTE Bienvenido al sistema ELSE se ejecuta si es falso NOTE Usuario desconocido END IF End Sub
Do Case Ejecuta uno de varios grupos de instrucciones segn el valor de una expresin determinada. Sintaxis: DO CASE <expression> CASE <valor1>
preciso_net@hotmail.com
Pgina 10
MANUAL DE MAPBASIC
Dim Cantidad as Integer Expresion variable Cantidad = 10 Evalua la condicin DO CASE Cantidad CASE Cantidad < 10 NOTE La cantidad es menor que 10 CASE 10 NOTE La cantidad es igual a 10 CASE ELSE NOTE La cantidad es mayor a 10 END CASE End Sub
For Next Repite una instruccin o bloque de cdigo un determinado nmero de veces. Sintaxis: FOR <valor_inicial> TO <valor_final>
<Bloque de instrucciones>
NEXT Ejemplo: Cdigo: Declare Sub Main() Sub Main() Dim contador as Integer Dim fin as Integer Establecer el valor final fin = 10 Evalua la condicin FOR contador = 1 TO fin Print Ejecucion + contador NEXT End Sub
Do Loop Repite una instruccin o bloque de cdigo mientras la condicin que evala sea verdadera.
preciso_net@hotmail.com
Pgina 11
MANUAL DE MAPBASIC
<Bloque de instrucciones>
LOOP Forma 2: DO
<Bloque de instrucciones>
LOOP WHILE <Condicin> Ejemplo: Cdigo: Declare Sub Main() Sub Main() Dim seguir as Logical DO Ingresa una vez y pregunta para continuar seguir = ASK(Seguro que desea continuar?, S, No) PRINT CURTIME() LOOP WHILE seguir Se repite siempre que sea verdadero End Sub
Declare Sub Main() Sub Main() Dim seguir as Logical Se pregunta antes de entrar al bucle seguir = ASK(Seguro que desea continuar?, S, No) DO WHILE seguir Entra solo cuando seguir es verdadero seguir = ASK(Seguro que desea continuar?, S, No) PRINT CURTIME() LOOP End Sub
preciso_net@hotmail.com
Pgina 12
MANUAL DE MAPBASIC
del otro en que los procedimientos Sub realizan un conjunto de rutinas sin retornar ningn tipo de valor tras su ejecucin, caso contrario los procedimientos Function si retornan un valor en un determinado tipo de dato. Sintaxis: SUB <NombreProcedimiento> ([<Parametros>])
<Bloque de instrucciones>
END SUB FUNCTION <NombreFuncion> ([<Parametros>]) AS <TipoDato_Retorno>
<Bloque de instrucciones>
END FUNCTION Ejemplo: Cdigo: Declare Sub Main() Sub Main() Dim num1 as Integer Dim num2 as Integer Dim resul as Integer resul = Sumar(num1, num2) Mostrar_Resultado(resul) End Sub Sub Mostrar_Resultado(cad as String) NOTE cad End Sub Function Sumar(n1 as Integer, n2 as Integer) Sumar = n1 + n2 End Function
Los parmetros son opcionales, si no se especifica su mbito por defecto todos los parmetros se pasan por referencia, si se desea que un parmetros se pase por valor se debe indicar la palabra clave BYVAL antes del parmetro. Ejemplo: Cdigo: Declare Sub Main() Sub Main() Dim cadena as String cadena = Valor Cambiar_Mostrar_Resultado(resul)
preciso_net@hotmail.com
Pgina 13
MANUAL DE MAPBASIC
NOTE cadena End Sub Sub Cambiar_Mostrar_Resultado (ByVal cad as String) cad = cad & Cambio NOTE cad End Sub
3. Sub Men
preciso_net@hotmail.com
Pgina 14
MANUAL DE MAPBASIC
Alter Menu {menuname | ID menu_id } Remove {handler | submenuname | ID menu_item_id } [, {handler | submenuname | ID menu_item_id}...]
Ejemplo: Cdigo: Declare Sub Main() Declare Crear_Menu() Sub Main() Llama al procedimiento crear Menu Crear_Menu End Sub Sub Crear_Menu() Crea un men llamado archivo con tres opciones y un separador CREATE MENU Archivo AS &Nuevo Calling opt_nuevo, &Abrir Calling opt_abrir, (-, &Salir Calling opt_salir ALTER MENU BAR ADD Archivo End Sub Declare Sub Main() Sub Main() Quita el men que acabamos de agregar de la barra de men ALTER MENU BAR REMOVE Archivo End Sub
Barras de herramienta: Una barra de herramientas es una ventana flotante o fija que contiene botones, los cuales podemos programar para ejecutar algunas acciones. Los tipos de botones que se pueden agregar son tres: PushButton: Este tipo de botn lanza una accin a penas se pulse sobre l no se queda presionado luego de que el usuario termine de hacer clic. ToggleButton: Este tipo de botn maneja dos estados (Checked, Unchecked) un ejemplo de uso de este botn podra ser para mostrar u ocultar una ventana.
preciso_net@hotmail.com
Pgina 15
MANUAL DE MAPBASIC
ToolButton: Este tipo de botn no ejecuta ninguna accin de inmediato sino cuando se hace clic sobre una ventana de mapa, listado, presentacin, etc. Un ejemplo de este botn son las herramientas de dibujo.
preciso_net@hotmail.com
Pgina 16
MANUAL DE MAPBASIC
[ HelpMsg msg ] [ ModifierKeys { On | Off } ] [ Enable ] [ Disable ] [ Check ] [ Uncheck ] MapInfo reserva nmeros de Id para algunas de sus barras de herramientas estndar. ID 1 2 3 4 5 Barra de herramientas Principal (Main) Dibujo (Drawing) Herramientas (Tools) standar (Standard) ODBC
preciso_net@hotmail.com
Pgina 17
MANUAL DE MAPBASIC
CMD_INFO_X2
Retorna la Coordenada X cuando se suelta el botn del mouse y se aplica solo cuando se utiliza la forma de dibujo para lnea. DM_CUSTOM_LINE. Retorna la Coordenada Y cuando se suelta el botn del mouse y se aplica solo cuando DRAWMODE es DM_CUSTOM_LINE. Retorna un valor lgico TRUE si el usuario tiene presionado el botn SHIFT mientras se usa la herramienta. Retorna un valor lgico FALSE si el usuario tiene presionado el botn CTRL mientras se usa la herramienta. Retorna un entero con el ID del botn al que se hace clic. Retorna un objeto: Polilnea o polgono. Y se aplica solo cuando DRAWMODE es DM_CUSTOM_POLYLINE o DM_CUSTOM_POLYGON
CMD_INFO_Y2
CMD_INFO_SHIFT
CMD_INFO_CTRL
CMD_INFO_TOOLBTN CMD_INFO_CUSTOM_OBJ
Ejemplo: Cdigo: Este ejemplo crea una barra de herramientas con dos botones PushButton un separador y luego un botn ToogleButton Hacemos referencia a los archivos .DEF de iconos y generales de MapBasic Include icons.def Include mapbasic.def Declaracin de los prototipos Declare Sub Main() Declare Sub Crear_BarraPush() Declare Sub opt_primero() Declare Sub opt_segundo() Declare Sub opt_tercero() Dim flg_Activo as Logical Sub Main() Llama al procedimiento crear BarraPush Call Crear_BarraPush End Sub Sub Crear_BarraPush() Crea una barra de herramientas CREATE BUTTONPAD Utilidades AS Primer botn PushButton
preciso_net@hotmail.com
Pgina 18
MANUAL DE MAPBASIC
ID 1001 Icon MI_ICON_RUN Calling opt_primero HelpMsg Ejecutar primera opcin Disable Segundo botn PushButton ID 1002 Icon MI_ICON_CLIP_REGION Calling opt_segundo HelpMsg Ejecutar segunda opcin Disable Separador Separator Tercer botn ToogleButton ID 1003 Icon MI_ICON_HELP Calling opt_tercero HelpMsg Muestra/Oculta los primeros botones UnCkeck End Sub Sub opt_primero() End Sub Sub opt_segundo() End Sub Sub opt_tercero() IF flg_Activo THEN Habilita y deshabilita los botones por su ID ALTER BUTTON ID 1001 Disable ALTER BUTTON ID 1002 Disable ALTER BUTTON ID 1003 Check ELSE Habilita y deshabilita los botones por su ID ALTER BUTTON ID 1001 Enable ALTER BUTTON ID 1002 Enable ALTER BUTTON ID 1002 UnCheck End Sub
Este ejemplo crea una barra de herramientas 3 botones ToolButton el primero muestra la coordenada donde hace clic, el segundo enva las coordenadas inicial y final donde hizo clic y el tercero enva un conjunto de coordenadas por donde ha pasado. Hacemos referencia a los archivos .DEF de iconos y generales de MapBasic Include icons.def Include mapbasic.def Declaracin de los prototipos Declare Sub Main() Declare Sub Crear_BarraPush() Declare Sub opt_primero() Declare Sub opt_segundo() Declare Sub opt_tercero()
preciso_net@hotmail.com
Pgina 19
MANUAL DE MAPBASIC
Sub Main() Llama al procedimiento crear BarraPush Call Crear_BarraTool End Sub Sub Crear_BarraTool() Crea una barra de herramientas CREATE BUTTONPAD Tools Custom AS Primer botn ToolButton ID 1001 Icon MI_ICON_SYMBOL DRAWMODE DM_CUSTOM_POINT CURSOR MI_CURSOR_CROSSHAIR Calling opt_primero HelpMsg Ejecutar primera opcin Segundo botn ToolButton ID 1002 Icon MI_ICON_LINE DRAWMODE DM_CUSTOM_LINE CURSOR MI_CURSOR_CROSSHAIR Calling opt_segundo HelpMsg Ejecutar segunda opcin Tercer botn ToolButton ID 1002 Icon MI_ICON_POLYLINE DRAWMODE DM_CUSTOM_POLYLINE CURSOR MI_CURSOR_CROSSHAIR Calling opt_tercero HelpMsg Ejecutar segunda opcin End Sub Sub opt_primero() Validar de que se haya hecho clic en una ventana de mapa IF WindowInfo(FrontWindow(), WIN_INFO_TYPE) <> WIN_MAPPER THEN NOTE Debe hacer clic sobre una ventana de mapa ELSE Dim x1 as Float Dim y1 as Float x1 = CommandInfo(CMD_INFO_X) y1 = CommandInfo(CMD_INFO_Y) NOTE Coordenas (X,Y) & x1 & y1 END IF End Sub Sub opt_segundo() Validar de que se haya hecho clic en una ventana de mapa IF WindowInfo(FrontWindow(), WIN_INFO_TYPE) <> WIN_MAPPER THEN
preciso_net@hotmail.com
Pgina 20
MANUAL DE MAPBASIC
NOTE Debe hacer clic sobre una ventana de mapa ELSE Dim x1 as Float Dim y1 as Float Dim x2 as Float Dim y2 as Float x1 y1 x2 y2 = CommandInfo(CMD_INFO_X) = CommandInfo(CMD_INFO_Y) = CommandInfo(CMD_INFO_X2) = CommandInfo(CMD_INFO_Y2)
NOTE Coordenadas 1 (X,Y) & x1 & - & y1 & Coordenadas 2 (X,Y) & x2 & - & y2 END IF End Sub Sub opt_tercero() Validar de que se haya hecho clic en una ventana de mapa IF WindowInfo(FrontWindow(), WIN_INFO_TYPE) <> WIN_MAPPER THEN NOTE Debe hacer clic sobre una ventana de mapa ELSE Dim newobj as Object newobj = CommandInfo(CMD_INFO_CUSTOM_OBJ) END IF End Sub
ASK(). Muestra un mensaje con dos botones, un botn aceptar y otro cancelar. Se utiliza mayormente cuando se quiere preguntar al usuario si se va a ejecutar o cancelar una accin.
preciso_net@hotmail.com
Pgina 21
MANUAL DE MAPBASIC
Como resultado despus de su ejecucin retorna un tipo lgico verdadero si se hizo clic en el botn correspondiente a Aceptar caso contrario retorna falso. FILEOPENDLG() y FILESAVEASDLG(). Muestra una ventana de dialogo para abrir o guardar un archivo. Sintaxis: FileOpenDlg(ruta_directorio, nombre_archivo, tipo_archivo, titulo) FileSaveAsDlg(ruta_directorio, nombre_archivo, tipo_archivo, titulo) Ruta_directorio: Ruta del directorio donde se inicia por defecto. Nombre_archivo: Nombre del archivo sugerido para buscar o guardar. Tipo_archivo: Tipo del archivo a abrir. Ver cuadro tipos de archivo. Titulo: Titulo del cuadro de dilogo. Tipos de archivo: Parametro Tipo_archivo TAB WOR MIF DBF XLS TXT Dilogos personalizados Los cuadros de dialogo personalizados permiten crear interfaces a medida. Para ello MapBasic cuenta con una serie de controles para ingreso, seleccin entre otras. Tipo de archivo Tabla de MapInfo Espacio de trabajo de MapInfo Formato de MapInfo en modo texto Archivo dBase o compatible Archivo de Microsoft Excel Archivos de texto
preciso_net@hotmail.com
Pgina 22
MANUAL DE MAPBASIC
Sintaxis: Dialog [Title title ] [Width w ] [Height h ] [Position x, y ] [Calling handler] Control control_clause [Control control_clause...] La clausula Control sirve para indicar los controles que se va a agregar a la ventana de dialogo. Cada control a la vez puede guardar su valor en una variable para luego procesarla al momento de ejecutar el comando Aceptar (OK). Los controles que se pueden agregar son los siguientes: StaticText. Crea un control etiqueta no editable, es decir, no permite el ingreso de datos. EditText. Crea un control cuadro de texto editable, permite el ingreso de datos por teclado. CheckBox. Crea un control casilla de verificacin. GroupBox. Crea un control marco con posibilidad de poner un titulo en la parte superior. Este control es utilizado para contener controles dentro y ordenarlos de forma coherente. RadioGroup. Crea un contenedor de controles radio para seleccionar uno a la vez. ListBox. Crea un control cuadro de lista para seleccionar un elemento de una lista de opciones. MultiListBox. Crea un control cuadro de lista para seleccionar uno o varios elementos de una lista de opciones. PopupMenu. Crea un control cuadro combinado (combo) con una lista desplegable de opciones para que el usuario seleccione solo una. Button. Crea un control botn de comando. OKButton. Crea un control botn de comando con funcin predeterminada. Se ejecuta cuando el usuario presiona ENTER en cualquier otro control y luego cierra la ventana de dialogo. CancelButton. Crea un control botn de comando con funcin predeterminada. Se ejecuta cuando el usuario presiona ESC en cualquier otro control y luego cierra la ventana. Pickers. Crea controles de seleccin de estilos, los controles Pickers pueden ser para seleccionar los estilos de: Smbolo, lnea, relleno y fuente.
Cdigo: Este ejemplo crea un cuadro de dialogo usando cada tipo de control. Declaracin de los prototipos Declare Sub Main() Declare Sub Crear_Dialogo() Declare Sub ok_sub() Declare Sub reset_sub()
preciso_net@hotmail.com
Pgina 23
MANUAL DE MAPBASIC
Sub Main() Llama al procedimiento crear Dialogo Call Crear_Dialogo End Sub Sub Crear_Dialogo() Variables para almacenar los resultados Dim titulo as String Dim i_detalle as String Dim sym_var as Symbol Dim i_cuarter as Integer Dim i_alcance as Integer Dim l_mostrarleyenda as Logical Crea una barra de herramientas DIALOG TITLE Selecciones StaticText (etiqueta) Control StaticText Title "Ingrese el ttulo:" Position 5, 10 EditText (cuadro de texto) Control EditText Value "Nuevo mapa" Into titulo ID 1 Position 65, 8 Width 90 GroupBox(Marco) Control GroupBox Title "Nivel de detalle" Position 5, 30 Width 70 Height 40 RadioGroup(Opciones radio) Control RadioGroup Title "&Detalles completos;&Detalles parciales" Value 2 Into i_detalle ID 2 Position 12, 42 Width 60 SymbolPicker(Selecionar estilo de Smbolo) Control SymbolPicker Position 95, 45 Into sym_var ID 3 ListBox(Cuadro de lista simple) Control ListBox Title "1er Qrtr;2do Qrtr;3er Qrtr;4to Qrtr" Value 4 Into i_cuarter ID 4 Position 5, 90 Width 65 Height 35 MultiListBox(Cuadro de lista mltiple) Control MultiListBox Title "Streets;Highways;Towns;Counties;States" Value 3 ID 5 Position 95, 90 Width 65 Height 35 PopupMenu(Cuadro combinado)
preciso_net@hotmail.com
Pgina 24
MANUAL DE MAPBASIC
Control PopupMenu Title "Town;County;Territory;Entire state" Value 2 Into i_alcance ID 6 Position 5, 140 CheckBox(Casilla de verificacin) Control CheckBox Title "Incluir &Legend" Into l_mostrarleyenda ID 7 Position 95, 140 Button(Botn de comando) Control Button Title "&Limpiar" Calling reset_sub Position 10, 165 OKButton(Botn de comando OK) Control OKButton Position 65, 165 Calling ok_sub CancelButton(Botn de comando Cancelar) Control CancelButton Position 120, 165 End Sub Sub ok_sub() End Sub Sub reset_sub() End Sub
preciso_net@hotmail.com
Pgina 25
MANUAL DE MAPBASIC
[ { Type NATIVE | Type DBF [ CharSet char_set ] | Type { Access | ODBC } database_filespec [ Version version ] Table tablename [ Password pwd ] [ CharSet char_set ] }] [ Version version ]
preciso_net@hotmail.com
Pgina 26
MANUAL DE MAPBASIC
Atributo
TAB_INFO_COORDSYS_CLAUSE
Valor que retorna Retorna una cadena indicando el Sistema de coordenadas en el formato de la clausula CoordSys. Por ejemplo: CoordSys Earth Projection 1, 0" Retorna TRUE si la tabla tiene cambios pendientes de guardar. Retorna TRUE si la tabla es representable. Retorna una cadena indicando el nombre de la tabla. Retorna el nmero de columnas que tiene la tabla. Retorna el nmero de filas que tiene la tabla. Retorna verdadero si la tabla es de solo lectura. Retorna la ruta del archivo .TAB de la tabla evaluada. Retorna TRUE si se trata de una tabla temporal, por ejemplo una consulta Query1.
TAB_INFO_EDITED
preciso_net@hotmail.com
Pgina 27
MANUAL DE MAPBASIC
Tablename; es el nombre de la tabla (alias en MapInfo) Leer y escribir en los registros de una tabla Muchas de las operaciones comunes que se realizan sobre las tablas incluyen la edicin de sus datos para esto MapInfo Professional brinda accesos a sus datos por medio de cursores. Para aplicar estas operaciones se utiliza la sentencia FETCH. Sintaxis: Fetch {First | Last | Next | Prev | Rec n} From table n; Es el ndice del registro al cual se mueve el cursor. table; El nombre de la tabla en la cual se efecta el movimiento del cursor.
4.10
Funcin ObjectInfo
Permite tomar informacin acerca de una variable de tipo objeto. Sintaxis: ObjectInfo( object, attribute )
Atributo
OBJ_INFO_TYPE (1)
Valor que retorna Retorna el tipo de objeto que contiene la variable. Ver la tabla de tipos de objeto. Retorna el estilo de lnea del objeto.
OBJ_INFO_PEN (2)
preciso_net@hotmail.com
Pgina 28
MANUAL DE MAPBASIC
Retorna el estilo de relleno del objeto. Retorna el estilo de fuente del objeto. Retorna el estilo de smbolo del objeto. Retorna un entero con el nmero de nodos que tiene la Polilnea o regin. Retorna el nmero de polgonos que tiene el objeto regin. O numero de secciones que tiene el objeto Polilnea. Retorna el numero de nodos que tiene el polgono N de la regin, o el sector N en caso sea una Polilnea.
OBJ_INFO_NPOLYGONS (21)
OBJ_INFO_NPOLYGONS+N (21)
Descripcin Objeto arco. Objeto tipo circulo o elipse. Objeto tipo lnea. Objeto tipo polilinea. Objeto tipo punto. Objeto tipo marco (usado en la ventana de presentacin) Objeto tipo regin poligonal. Objeto tipo rectangular. Objeto tipo rectangular con bordes redondeados. Objeto tipo texto.
preciso_net@hotmail.com
Pgina 29
MANUAL DE MAPBASIC
Cdigo: Este ejemplo crea una nueva ventana de mapa con las tablas Distritos, Manzanas y Clientes Map From Distritos, Manzanas, Clientes
preciso_net@hotmail.com
Pgina 30
MANUAL DE MAPBASIC
Valor que retorna Retorna una cadena con la sentencia necesaria para crear una ventana clonada a partir de la ventana consultada. Retorna el nombre de la ventana. Retorna el estado de una ventana puede ser:
WIN_STATE_NORMAL; ventana en tamao normal. WIN_STATE_MINIMIZED; ventana minimizada. WIN_STATE_MAXIMIZED; ventana maximizada.
WIN_INFO_TABLE (10)
Retorna una cadena con el nombre de la tabla que se crea por defecto en la ventana. Segn el tipo de ventana puede retornar los siguientes valores. Ventana de Mapa: Retorna la tabla CosmeticN Ventana de Presentacin: Retorna la tabla LayoutN Ventana de listado: Retorna el nombre de la tabla que esta visualizando
WIN_INFO_TYPE (3)
Retorna un entero con el tipo de ventana que se visualiza. Vea la tabla de tipos de ventana y sus constantes.
Tipo de ventana
WIN_MAPPER WIN_BROWSER WIN_LAYOUT WIN_GRAPH WIN_MAPBASIC WIN_MESSAGE
Descripcion Ventana de mapa. Ventana de listado. Ventana de presentacin Ventana de grafico. Ventana de MapBasic Ventana de mensaje
preciso_net@hotmail.com
Pgina 31
MANUAL DE MAPBASIC
Ejemplo: Cdigo: Este ejemplo clona una ventana de mapa actual Run Command WindowInfo(FrontWindow(), 15) Este ejemplo devuelve el nombre de la tabla que contiene la ventana actual. Dim nameTable as String Dim idVentana as Integer idVentana = FrontWindow() nameTable = WindowInfo(idVentana, 10) Note NameTable
preciso_net@hotmail.com
Pgina 32
MANUAL DE MAPBASIC
{ Image Reprojection { None | Always | Auto } ] [ Image Resampling { CubicConvolution | NearestNeighbor } ] [ Relief { On | Off } ] [ Move Nodes { value | Default } ] [ LAYERCLAUSE LAYERCLAUSE ... ] Ejemplo: Cdigo: Este ejemplo establece la ventana de Mapa Actual en 1.5 km de zoom y la centra en las coordenadas -76.91 y -12.23 Set Map Zoom 1.5 Units "km" Center (-76.91, -12.23) Este ejemplo hace no visible la capa con ndice 2 Set Map Layer 2 Display Off Este ejemplo hace no seleccionable la capa con ndice 1 Set Map Layer 1 Selectable Off Este ejemplo establece el sistema de coordenadas para la ventana actual en Latitud Longitud WGS 84 Set Map CoordSys Earth Projection 1, 104
preciso_net@hotmail.com
Pgina 33
MANUAL DE MAPBASIC
Add Map Window FrontWindow() Layer Distritos, Manzanas Este ejemplo quita las tablas agregadas recientemente Remove Map Window FrontWindow() Layer Distritos, Manzanas
6. Ventana de Presentacin:
La ventana de presentacin nos permite disear una plantilla con objetos como: Texto, Marcos, Mapas entre otros. Para posteriormente enviar la impresin a la cola de trabajos.
preciso_net@hotmail.com
Pgina 34
MANUAL DE MAPBASIC
Ejemplos: Cdigo: Este ejemplo agrega una ventana de mapa a la ventana de presentacin autoajustando su contenido al marco, luego se agrega un texto que ira como titulo de la presentacin crea el estilo de la fuente para el texto Dim fuente as Font Fuente = MakeFont("Arial",1,18,0, 16777215) crea el marco para alojar la ventana de mapa Create Frame (1,3) (20,28) Title Distritos Mapa FillFrame On Crea el texto para agregar a la presentacin Create Text "Titulo de presentacin" (6, 0.5) (20,0.5) Font fuente Justify Left
preciso_net@hotmail.com
Pgina 35
MANUAL DE MAPBASIC
Accin a realizar Leer y guardar datos planos. Leer y guardar datos espaciales. Realizar consultas espaciales en el servidor. Trabajo multiusuario sobre una misma tabla.
Las bases de datos que admiten componente espacial y son soportadas por MapInfo Professional son las siguientes:
preciso_net@hotmail.com
Pgina 36
MANUAL DE MAPBASIC
Microsoft SQL Server 2000/2005 + Spatial Ware Oracle 9i, 10g, 11g + Oracle Spatial
Sistema de coordenadas Estilo para objeto smbolo Nombre de columna con coordenada X Nombre de columna con coordenada Y
Numero de filas
preciso_net@hotmail.com
Pgina 37
MANUAL DE MAPBASIC
Conexin a Oracle Dim tk as String Dim cs as String Dim idConnect as Integer Establecer los valores para el Toolkit y cadena de conexin tk = ORAINET cs = DSN=DSN_SampleOra;HOST=BS6;PORT=1521;SID=ORCL;UID=olibert;PWD=secreto idConnect = Server_connect(tk, cs)
preciso_net@hotmail.com
Pgina 38
MANUAL DE MAPBASIC
nuestro servidor solo se podr crear una tabla representable con coordenadas x e y. Para ello usaremos la sentencia Server Create Map. Sintaxis: Server ConnectionNumber Create Map For linked_table Type { MICODE columnname | XYINDEX columnname | SPATIALWARE } CoordSys... [ MapBounds { Data | Coordsys | Values ( x1, y1 )( x2, y2 )} ] [ ObjectType { Point | Line | Region | ALL } ] [ Symbol (...) ] [ Linestyle Pen(...) ] [ Regionstyle Pen(...) Brush(...) ] [ Style Type style_number [ Column column_name ] ] ConnectionNumber; Id de la conexin en la cual se est trabajando. Linked_table; Nombre de la tabla a vincular. Ejemplo: Cdigo: Este ejemplo hace una tabla del servidor representable. El servidor no tiene componente espacial Dim tk as String Dim cs as String Dim idConnect as Integer Establecer los valores para el Toolkit y cadena de conexin tk = ODBC cs = DSN=DSN_Sample;UID=olibert;PWD=secreto idConnect = Server_connect(tk, cs) Server idConnect Create Map For "tb_Programacion" Type XYINDEX ("COORDENADA_X","COORDENADA_Y") CoordSys Earth Projection 1, 0 mapbounds data ObjectType Point Symbol (34,16711680,9)
Este ejemplo hace una tabla del servidor representable. El servidor tiene componente espacial Dim tk as String Dim cs as String Dim idConnect as Integer Establecer los valores para el Toolkit y cadena de conexin tk = ODBC cs = DSN=DSN_Sample;UID=olibert;PWD=secreto idConnect = Server_connect(tk, cs) Server idConnect Create Map For "tb_Programacion" Type SPATIALWARE
preciso_net@hotmail.com
Pgina 39
MANUAL DE MAPBASIC
"SW_GEOMETRY") CoordSys Earth Projection 1, 0 mapbounds data ObjectType All Symbol (35,0,12) LineStyle Pen (1,2,0) RegionStyle Pen (1,2,0) Brush (2,16777215,16777215)
preciso_net@hotmail.com
Pgina 40
MANUAL DE MAPBASIC
UnLink "tb_Programacion"
Nota: Para que una tabla vinculada pueda ser editada y actualizada debe contener una clave primaria.
preciso_net@hotmail.com
Pgina 41
MANUAL DE MAPBASIC
4. Ingrese la informacin de conexin haciendo clic en el botn ODBC. Si se trata de Oracle se hara clic en el botn Oracle Spatial. 5. Seleccione la tabla o tablas que cargara en la base de datos. 6. En la casilla Nombre de tabla del servidor indique el nombre de la tabla con la que se creara en el servidor. 7. En el cuadro combinado procesamiento de tabla del servidor. Seleccione crear nueva tabla si no existe. 8. Haga clic en cargar y espere el mensaje satisfactorio.
preciso_net@hotmail.com
Pgina 42
MANUAL DE MAPBASIC
1. Ingresar al administrador corporativo de SQL Server. 2. Crear una base de datos con el nombre que desee, para el ejemplo le pondremos BDSpatial. 3. En el analizador de consultas de SQLServer ejecutar el siguiente script. Cdigo: Cambia a la base de datos BDSpatial USE BDSpatial Ejecuta el procedimiento almacenado para crear espacios en la base de datos. EXEC sp_spatialize_db
4. Crear una tabla con los campos que guste, con clave primaria y agregar al final los campos SW_GEOMETRY (ST_SPATIAL) y MI_STYLE (VARCHAR(254)).
Cdigo: Crea una tabla normal con las columnas para hacerla espacial. CREATE TABLE tabSpatial (CODIGO INT PRIMARY KEY, NOMBRE VARCHAR(50), SW_GEOMETRY ST_SPATIAL, MI_STYLE VARCHAR(254))
5. Ejecutar la siguiente sentencia para crear espacios en la tabla tabSpatial recientemente creada.
Cdigo: Ejecuta el procedimiento que hace la tabla espacial.Sintaxis: EXEC sp_sw_spatialize_column <owner>, <tablename>, <spatialcolumn>, <keycolumn> EXEC sp_sw_spatialize_column 'dbo','tabSpatial','sw_geometry','codigo'
se
creara
la
tabla
auxiliar:
Terminados estos pasos ya podemos trabajar con esta tabla desde MapInfo para crear y/o modificar objetos.
preciso_net@hotmail.com
Pgina 43
MANUAL DE MAPBASIC
Comando Set Application Window Por medio de este comando le indicamos a MapInfo Professional cual ser la aplicacin o ventana sobre la cual respondern sus cuadros de dialogo. Comando Set Next Document Parent Por medio de este comando podemos embeber una ventana (Ventana de Mapa, listado, presentacin, etc.) de MapInfo Professional dentro de un control de Visual Basic de tipo contenedor (Panel).
preciso_net@hotmail.com
Pgina 44
MANUAL DE MAPBASIC
Sintaxis: Run Menu Command <idComando> idComando; Id del comando a ejecutar. Para saber el ID de un comando de MapInfo Professional lo podemos averiguar abriendo el archivo menu.def que se encuentra en el directorio de MapBasic. A continuacin se muestran algunos IDs que se encuentran en este archivo: Archivo menu.def: Define Define Define Define M_TOOLS_SELECTOR M_TOOLS_RECENTER M_TOOLS_EXPAND M_TOOLS_SHRINK 1701 1702 1705 1706 Seleccionar Mover Acercar Alejar
preciso_net@hotmail.com
Pgina 45