You are on page 1of 45

MANUAL DE MAPBASIC

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

7.3 7.4 7.5 7.6 7.7 7.8 8.

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

O en el escritorio haga clic en el icono de la aplicacin.

1.1 Descripcin de la interfaz

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.

1.2 Compilar programas:


Para crear un programa en MapBasic, necesitamos que por lo menos se tenga la siguiente estructura. Cdigo: Declarar la estructura Declare Sub Main() Primer procedimiento que se ejecuta cuando se inicia la aplicacin Sub Main() Note Hola Mundo End Sub

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.

2.2 Tipos de datos


Tipo Integer SmallInt Float Ejemplo de Asignacin i = 1073741824 i = 16384 F=4 tam = 3.36 resul = 3.4e9 String Nombre = Olibert Para agregar caracteres especiales se puede usar la funcin Chr$() Notas

preciso_net@hotmail.com

Pgina 6

MANUAL DE MAPBASIC

Logical

Visible = 1 Visible = TRUE

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

Fecha_ped = 20100324 Fecha_ven = 3/24/10 Fecha_pago = 03-24-10 Ayer = Curdate() 1

Alias

Columna = Total Tabla = TabDistritos

Dato exclusivo de MapInfo, es utilizado para identificar el nombre de un campo o tabla de MapInfo

Pen

StyleLinea = MakePen(1, 3, BLACK)

Dato exclusivo de MapInfo, es utilizado para almacenar un estilo de lnea.

Brush

StyleRelleno = MakeBrush(5, BLUE, WHITE)

Dato exclusivo de MapInfo, es utilizado para almacenar un estilo de Relleno.

Font

StyleFuente = MakeFont(Helv, 1, 20,BLACK, WHITE)

Dato exclusivo de MapInfo, es utilizado para almacenar un estilo de fuente.

Symbol

StylePunto = MakeSymbol(44, RED, 16)

Dato exclusivo de MapInfo, es utilizado para almacenar un estilo Smbolo.

Object

Myobj = CreateLine(73.2, 40, 73.6, 40.4)

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 ^

Operacin Sumar Restar Multiplicar Divisin Divisin entera Residuo Exponenciacin

Ejemplo X=A Y=A Z=A X=A Y=A Z=A X=A +B B *B /B \B Mod B ^B

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

> <= >= Between And Operadores lgicos:

Mayor Menor igual Mayor igual Dentro del rango

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

2.4 Controles de flujo y bucles


Las sentencias de control de flujo afectan el orden en que se ejecutan las operaciones dentro de la lgica de un programa, se dividen en: If then else As como en otros lenguajes de programacin la sentencia IF evala una condicin que de ser verdadera ejecuta lo que se encuentra dentro del bloque THEN, caso contrario si la condicin es falsa ejecuta lo que se encuentra dentro del bloque ELSE. Sintaxis: IF <expression>THEN

preciso_net@hotmail.com

Pgina 9

MANUAL DE MAPBASIC

<Bloque de instrucciones si es verdadero>


ELSE

<Bloque de instrucciones si es falso>


END IF Ejemplo:

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>

<Bloque de instrucciones si expression es igual a valor1>


CASE <valor2>

<Bloque de instrucciones si expression es igual a valor1>


CASE ELSE

<Bloque de instrucciones si expression no ingreso en ningn caso>


END CASE Ejemplo: Cdigo: Declare Sub Main() Sub Main()

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

Sintaxis: Forma 1: DO WHILE <Condicin>

<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

2.5 Procedimientos Sub y Function


Los procedimientos y funciones nos ayudan a ordenar, estructurar y reutilizar una porcin de cdigo. Segn su comportamiento se pueden clasificar en Procedimientos Sub y Function. Se diferencian uno

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. Creacin de interfaces en MapBasic


Mens Un men nos permite brindar al usuario una lista de opciones a escoger. Un men est conformado por tems a la vez un men puede ser parte de otro men (Sub-Men), a continuacin se muestra los mens, submens e tems.
1. Barra de Men 2. Items

3. Sub Men

3.1 Gestin de Mens


A continuacin se muestran las sintaxis para realizar operaciones bsicas sobre los mens: Operacin Crear men Sintaxis Create Menu nuevo_menu [ ID menu_id ] As item [ ID menu_item_id ] {Calling handler} [ , menuitem ... ] Redefinir la barra de men Alter Menu Bar { Add | Remove } { menuname | ID menu_id } [ , { menuname | ID menu_id } ... ] Agregar tems a un men Alter Menu {menuname | ID menu_id } Add menudef [, menudef...]

preciso_net@hotmail.com

Pgina 14

MANUAL DE MAPBASIC

Quitar tems de un men

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.

3.2 Gestin de barra de herramientas:


A continuacin se muestran las sintaxis para realizar operaciones sobre las barras de herramientas: Operacin Crear una barra de herramientas Sintaxis Create ButtonPad {title_string | ID pad_num } As button_definition [ button_definition ... ] [ Title title_string ] [ Width w ] [ Position ( x, y ) [ Units unit_name ] ] [ ToolbarPosition ( row, column ) ] [ { Show | Hide } ] [ { Fixed | Float } ] Modificar una barra de herramientas Alter ButtonPad { current_title | ID pad_num } [ Add button_definition [ button_definition ... ] ] [ Remove { handler_num | ID button_id } [ , ... ] ] [ Title new_title ] [ Width w ] [ Position ( x, y ) [ Units unit_name ] ] [ ToolbarPosition ( row, column ) ] [ { Show | Hide } ] [ { Fixed | Float } ] [ Destroy ] Modificar un botn Alter Button { handler | ID button_id } [ { Enable | Disable } ] [ { Check | Uncheck } ] Definir un botn { PushButton | ToggleButton | ToolButton } Calling { procedure | menu_code | OLE methodname | DDE server, topic } [ ID button_id ] [ Icon n [ File file_spec ] ] [ Cursor n [ File file_spec ] ] [ DrawMode dm_code ]

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

3.3 Funcin CommandInfo()


Esta funcin se utiliza dentro de un procedimiento que haya sido invocado por un ToolButton para poder capturar informacin de por ejemplo las coordenadas donde el usuario ha hecho clic. Sintaxis: CommandInfo (Atributo) Atributo: Para el caso de los ToolButton los valores posibles para atributo son los siguientes Atributo CMD_INFO_X Valor que retorna Cuando se hace clic sobre una ventana de mapa retorna la coordenada X del lugar donde se hizo clic. Cuando se hace clic sobre una ventana de listado retorna el ndice de la columna correspondiente a la celda donde se hizo clic. Cuando se hace clic sobre una ventana de presentacin retorna la distancia entre el margen izquierdo y el lugar donde se hizo el clic. CMD_INFO_Y Cuando se hace clic sobre una ventana de mapa retorna la coordenada Y del lugar donde se hizo clic. Cuando se hace clic sobre una ventana de listado retorna el ndice de la fila correspondiente a la celda donde se hizo clic. Cuando se hace clic sobre una ventana de presentacin retorna la distancia entre el margen superior y el lugar donde se hizo clic.

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

3.4 Cuadros de dialogo


Los cuadros de dialogo permiten al usuario interactuar con la aplicacin. Con la finalidad te tomar los datos ingresados para luego ejecutar su lgica y mostrar el resultado. Dilogos estndar NOTE. Muestra un mensaje con el texto indicado. Sintaxis: NOTE <texto>

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

Sintaxis: ASK(Texto mensaje, Texto Aceptar, Texto Cancelar)

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

4. Trabajo con tablas:


Las tablas de MapInfo Professional se diferencian de otro tipo de tabla que normalmente vemos en DBMS en que estas tablas no solo tienen filas y columnas con datos planos sino que adems contienen columnas que pueden almacenar objetos geomtricos y pueden realizar operaciones espaciales y geomtricas sobre estas columnas.

4.1 Sentencia Create Table


Permite crear una nueva tabla en MapInfo Professional para ello debemos indicar el formato que tendr adems de las columnas y sus tipos de datos. Sintaxis: Create Table table ( column columntype [ , ... ] ) | Using from_table } [ File filespec ]

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 ]

4.2 Sentencia Alter Table


Permite alterar la estructura de una tabla de MapInfo Professional, se pueden agregar nuevas columnas, quitar columnas creadas y/o reordenar la ubicacin de las columnas. Sintaxis: Alter Table table ( [ Add columnname columntype [, ...] ] [ Modify columnname columntype [, ...] ] [ Drop columnname [, ...] ] [ Rename oldcolumnname newcolumnname [, ...] ] [ Order columnname, columnname [,...] ] ) [ Interactive ]

4.3 Sentencia Create Map


Una vez creada la estructura de una tabla en MapInfo Professional, si queremos almacenar datos en esta tabla debemos hacerla representable Create Map permite hacer una tabla plana representable brindando as la posibilidad de poder agregarla a una ventana de mapa. Sintaxis: Create Map For table [ CoordSys... ] Using from_table]

4.4 Sentencia Pack Table


Parte del mantenimiento que se realiza sobre una tabla incluye el empaquetado de las tablas que no es ms que limpiar la tabla de registros u objetos que han sido eliminados y han dejado residuos de su creacin. Pack Table permite empaquetar la tabla eliminando esos residuos y disminuyendo su tamao en disco. Sintaxis: Pack Table table { Graphic | Data | Graphic Data } [ Interactive ]

4.5 Funcin TableInfo


Permite obtener informacin acerca del estado, caractersticas y/o propiedades de una tabla Sintaxis: TableInfo(table_id, atributo)

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

TAB_INFO_MAPPABLE TAB_INFO_NAME TAB_INFO_NCOLS TAB_INFO_NROWS TAB_INFO_READONLY TAB_INFO_TABFILE TAB_INFO_TEMP

4.6 Funcin NumTables


Devuelve el nmero de tablas que estn abiertas en la sesin de MapInfo Professional. Sintaxis: NumTables()

4.7 Sentencia Open Table


Permite abrir una tabla de MapInfo que se encuentra en disco. Sintaxis: Open Table filename [ As tablename ] [ Hide ] [ ReadOnly ] [ Interactive ] [ Password pwd ] [ NoIndex ] [ View Automatic ] [ DenyWrite ] [ VMGrid | VMRaster | VMDefault ]

4.8 Sentencia Commit Table, Rollback Table


La sentencia Commit Table permite guardar los cambios de una tabla editada. Por otro lado la sentencia RollBack Table permite deshacer los cambios de una tabla editada. Sintaxis: Commit Table tablename [ As filespec] [Interactive] Rollback Table tablename

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.9 Tablas especiales


MapInfo Professional utiliza tablas especiales que son creadas y gestionadas por la misma aplicacin para guardar informacin adicional. Estas tablas son: Selection; Tabla que se crea por defecto cada vez que se hace una consulta y no se especifica la tabla resultado. Cosmetic; Esta tabla se crea cada vez que se genera una ventana de mapa. Y su nombre va cambiando de manera correlativa cada vez que se crea una nueva ventana de mapa. Layout; Esta tabla se crea cada vez que se genera una ventana de presentacin. Al igual que la tabla Cosmetic su nombre va cambiando de manera correlativa cuando se crea una nueva ventana de presentacin. Columna OBJ La columna OBJ es una columna no visible para el usuario pero si se pueden realizar lectura, escritura y clculos sobre esta columna. Sentencia Create Point, Line, Region, Pline Estas sentencias permiten crear objetos de tipo Punto, lnea, regin y Polilnea y pueden ser almacenados en una variable de tipo objeto.

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

OBJ_INFO_BRUSH (3) OBJ_INFO_TEXTFONT (2) OBJ_INFO_SYMBOL (2) OBJ_INFO_NPNTS (20)

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)

Constantes para OBJ_INFO_TYPE


OBJ_TYPE_ARC OBJ_TYPE_ELLIPSE OBJ_TYPE_LINE OBJ_TYPE_PLINE OBJ_TYPE_POINT OBJ_TYPE_FRAME OBJ_TYPE_REGION OBJ_TYPE_RECT OBJ_TYPE_ROUNDRECT OBJ_TYPE_TEXT

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.

5. Trabajo con Ventanas


MapInfo Professional puede trabajar con diferentes tipos de ventana para visualizar informacin tanto tabular como geogrfica entre otras. Ventana de Mapa La ventana de Mapa es sobre la cual se administran las capas en MapInfo Professional, para trabajar con estas ventanas MapBasic proporciona una serie de funciones y sentencias que permiten realizar operaciones sobre esta.

preciso_net@hotmail.com

Pgina 29

MANUAL DE MAPBASIC

5.1 Sentencia Map


Permite crear una nueva ventana de mapa con las capas, dimensiones y posicin indicada en sus parmetros. Sintaxis: Map From table [ , table ... ] [ Position ( x, y ) [ Units paperunits ] ] [ Width window_width [ Units paperunits ] ] [ Height window_height [ Units paperunits ] ] [ { Min | Max } ] Ejemplo:

Cdigo: Este ejemplo crea una nueva ventana de mapa con las tablas Distritos, Manzanas y Clientes Map From Distritos, Manzanas, Clientes

5.2 Funcin WindowID


Retorna el ID de la ventana. Sintaxis: WindowID (window_num)

5.3 Funcin FrontWindow


Retorna el ID de la ventana que se encuentra al frente de todas las dems. Sintaxis: FrontWindow()

5.4 Funcin NumWindows, NumAllWindows


NumWindows; Devuelve el nmero de documentos (ventana de mapa, listado, grafico y presentacin) que se encuentras abiertas en la sesin de MapInfo Professional. Y NumAllWindows retorna todas las ventanas (documentos y flotantes) que se encuentran abiertas en la sesin de MapInfo Professional. Sintaxis: NumWindows() NumAllWindows()

preciso_net@hotmail.com

Pgina 30

MANUAL DE MAPBASIC

5.5 Funcin WindowInfo


Permite tomar informacin sobre el estado de las ventanas. Sintaxis: WindowInfo(window_id, atributo) window_id; Identificador de la ventana. Atributo; valor constante con la propiedad a consultar de la ventana indicada en window_id. Algunos valores posibles para el parmetro atributo son las siguientes: Atributo
WIN_INFO_CLONEWINDOW (15) WIN_INFO_NAME (1) WIN_INFO_STATE (9)

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

WIN_INFO WIN_LEGEND WIN_STATISTICS

Ventana de informacin Ventana de leyenda temtica Ventana de estadsticas

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

5.6 Sentencia Set Map


Establece las caractersticas de la ventana de mapa como por ejemplo dimensiones, zoom, centro y capas a visualizar. Sintaxis: Set Map [ Window window_id ] [ Center ( longitude, latitude ) [ Smart Redraw ] ] [ Clipping { Object clipper | Off | On } | Using [Display { All | PolyObj } | Overlay ] } ]] [ Zoom { zoom_distance [ Units dist_unit ] | Entire [ Layer layer_id ] } ] [ Preserve { Scale | Zoom } ] [ Display { Scale | Position | Zoom } ] [ Order layer_id, layer_id [ , layer_id ... ] ] [ Pan pan_distance [ Units dist_unit ] { North | South | East | West } [ Smart Redraw ] ] [ CoordSys... ] [ Area Units area_unit ] [ Distance Units dist_unit ] [ Distance Type { Spherical | Cartesian } ] [ XY Units xy_unit ] [ Display Decimal { On | Off | [ Display Grid ] [ Scale screen_dist [ Units dist_unit ] For map_dist [ Units dist_unit ] ] [ Redraw { On | Off } ]

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

5.7 Agregar y quitar capas


Add Map Layer Permite agregar una capa a la ventana de mapa indicada. Sintaxis: Add Map [ Window window_id ] [ Auto ] Layer table [ , table ... ] [ Animate ] Remove Map Layer Permite quitar una capa de la ventana de mapa indicada. Sintaxis: Remove Map [ Window window_id ] Layer map_layer [ , map_layer ... ] [ Interactive ] Ejemplos: Cdigo: Este ejemplo agrega al mapa actual las capas de distritos y manzanas

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

5.8 Bsqueda y localizacin de objetos


Para buscar un registro en una tabla podemos usar las consultas SQL Select que nos brinda MapInfo Professional, sin embargo una vez encontrado un registro necesitamos que la ventana de mapa nos indique donde se encuentra dicho objeto. Ejemplos: Cdigo: Este ejemplo selecciona un objeto y cambia la vista del mapa actual hasta el punto en que podemos visualizar el objeto. SELECT * FROM Distritos WHERE IdDistrito=23 Run Menu Command 312 Si se desea buscar en todas las ventanas de mapa se ejecutara el siguiente comando. Run Menu Command 306

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.

6.1 Sentencia Layout


Nos permite crear una nueva ventana de presentacin sobre la cual podemos disear nuestras plantilla de impresin. Sintaxis: Layout [ Position ( x, y ) [ Units paperunits ] ] [ Width window_width [ Units paperunits ] ] [ Height window_height [ Units paperunits ] ] [ { Min | Max } ] Ejemplos: Cdigo: Este ejemplo crea una ventana de presentacin con la unidad de medida en centmetros (cm).

preciso_net@hotmail.com

Pgina 34

MANUAL DE MAPBASIC

Layout Set CoordSys Layout Units "cm"

6.2 Sentencia Create Frame


Permite crear marcos contenedores para poder agregarlo a la ventana de presentacin. Sintaxis: Create Frame [ Into { Window layout_win_id | Variable var_name } ] ( x1, y1 ) ( x2, y2 ) [ Pen... ] [ Brush... ] [ Title title ] [ From Window contents_win_id ] [ FillFrame { On | Off } ]

6.3 Sentencia Create Text


Permite crear objetos de texto en la ventana de presentacin. Sintaxis: Create Text [ Into { Window window_id | Variable var_name } ]

text_string ( x1, y1 ) ( x2, y2 )


[ [ [ [ [ Font... ] Label Line { Simple | Arrow } ( label_x, label_y ) ] Spacing { 1.0 | 1.5 | 2.0 } ] Justify { Left | Center | Right } ] Angle text_angle ]

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

6.4 Tabla LayoutN


Toda ventana de presentacin tiene embebida una tabla oculta la cual tiene el nombre LayoutN donde N es un nmero correlativo que aumenta cada vez que se crea una nueva ventana de presentacin. Si queremos borrar todo el contenido de una ventana de presentacin deberamos ejecutar el siguiente cdigo: Cdigo: Este ejemplo borra todos los objetos de la ventana de presentacin actual Dim nameLayout as String Tomar el nombre de la tabla Layout para la ventana de presentacin actual nameLayout = WindowInfo(FrontWindow(), 10) Delete from nameLayout

6.5 Impresin de la ventana de presentacin

7. Trabajo con DBMS:


MapInfo Professional se puede comunicar a las Base de datos por de ODBC. Para ello es necesario que se cree un DSN (Data Source Name) en el Administrador de ODBC y tener registrado y correctamente instalado el controlador ODBC para la base de datos a la que queremos conectarnos. Para poder programar la gestin a realizar sobre los servidores de bases de datos MapBasic cuenta con una serie de instrucciones que le permiten leer y guardar informacin en las bases de datos.

7.1 Diferencia entre BBDD Espacial y no espacial


Como hemos indicado MapInfo Professional se puede conectar a cualquier tipo de base de datos que tenga controladores ODBC. Sin embargo toma una actitud diferente cuando se conecta a una Base de Datos con componente espacial que cuando se conecta a una base de datos sin componente espacial. A continuacin se muestra un cuadro comparativo indicado las acciones que se puede realizar sobre una base de datos espacial y una no espacial desde MapInfo Professional. BBDD Espacial S S S S BBDD No espacial S No No S

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

7.2 Conexin DBMS Sin BBDD Espacial


MAPINFO_MAPCATALOG Para poder trabajar con tablas de una base de datos es necesario crear en el esquema del servidor la tabla MAPINFO.MAPINFO_MAPCATALOG esta tabla tiene la siguiente estructura: Nombre columna SPATIALTYPE TABLENAME OWNERNAME SPATIALCOLUMN DB_X_LL DB_Y_LL DB_X_UR DB_Y_UR COORDINATESYSTEM SYMBOL XCOLUMNNAME YCOLUMNNAME RENDITIONTYPE RENDITIONCOLUMN RENDITIONTABLE NUMBER_ROWS La Instruccin a ejecutar seria: CREATE TABLE [MAPINFO.MAPINFO_MAPCATALOG] ( [SPATIALTYPE] [float] NULL , [TABLENAME] [char] (32) NULL , [OWNERNAME] [char] (32) NULL , [SPATIALCOLUMN] [char] (32) NULL , [DB_X_LL] [float] NULL , [DB_Y_LL] [float] NULL , [DB_X_UR] [float] NULL , [DB_Y_UR] [float] NULL , [COORDINATESYSTEM] [char] (254) NULL , [SYMBOL] [char] (254) NULL , [XCOLUMNNAME] [char] (32) NULL , [YCOLUMNNAME] [char] (32) NULL , [RENDITIONTYPE] [int] NULL , [RENDITIONCOLUMN] [char] (32) NULL , [RENDITIONTABLE] [char] (32) NULL , [NUMBER_ROWS] [int] NULL ) ON [PRIMARY] GO Esta tabla debe ser creada con el nombre de usuario mapinfo y su clave debe ser mapinfo. Este usuario debe tener permisos de propietario de objetos y de lectura/escritura sobre la base de datos. Tipo dato FLOAT CHAR(32) CHAR(32) CHAR(32) FLOAT FLOAT FLOAT FLOAT CHAR(254) CHAR(254) CHAR(32) CHAR(32) INT CHAR(32) CHAR(32) INT Descripcin Tipo de tabla espacial Nombre de la tabla Nombre del propietario de la tabla Nombre de la columna espacial

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

7.3 Conectar, desconectar a SQLServer y Oracle.


Para conectarse a una base de datos usando MapBasic usaremos la sentencia Server_Connect. Y para desconectarnos usaremos Server Disconnect. Sintaxis: Server_Connect (toolkit, connect_string) Toolkit; Cadena que identifica la interface remota, puede ser ODBC o ORAINET cuando se quiere conectar a Oracle. Connect_string; Cadena con informacin adicional necesaria para conectarse a la Base de datos. Server <ConnectionNumber> Disconnect ConnectionNumber; Id de la conexin que se va a cerrar. Ejemplo: Cdigo: Conexin a SQLServer 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)

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)

Desconectarse del servidor de base de datos Server idConnect Disconnect

7.4 Hacer una tabla representable con coordenadas X e Y


Una vez que tenemos creado el archivo MAPINFO.MAPINFO_MAPCATALOG en la base de datos. Ya podemos hacer representable una tabla del servidor. Como no tenemos componente espacial en

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)

7.5 Vincular, desvincular tablas


MapInfo Professional se puede vincular a tablas de una base de datos. Al vincular una tabla del servidor lo que hace MapInfo Professional es descargar una copia de la tabla del servidor en el disco del cliente. Si la tabla del servidor se ha hecho representable entonces adems de bajar los datos tambin se podr trabajar la tabla como una capa de MapInfo, si no se ha hecho representable solo se podrn bajar los datos. Para vincular tablas del servidor desde MapBasic se utiliza la sentencia Server Link Table, de igual manera para quitar el vnculo de una tabla se utiliza la sentencia UnLink Sintaxis: Server ConnectionNumber Link Table

SQLQuery Into TableName Toolkit toolkitname [ File FileSpec ]


[ ReadOnly ] [ Autokey { Off | On }] ConnectionNumber; Id de la conexin establecida. SQLQuery; Cadena con la consulta SQL SELECT a realizar. TableName; Nombre de la tabla en MapInfo Professional. ToolkitName: Cadena que identifica la interface remota. FileSpec; Cadena con la ruta del archivo donde se descargaran los datos. UnLink TableName TableName; Nombre de la tabla en MapInfo Professional. Ejemplo: Cdigo: Este ejemplo vincula una tabla del servidor y la muestra en MapInfo Professional 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 Link Table "select * from tb_programacion" toolkit "ODBC" into "tb_Programacion" File "C:\tb_Programacion.TAB" Autokey ON

Este ejemplo quita el vinculo de una tabla vinculada previamente

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.

7.6 Refrescar datos


Al trabajar con conexin a bases de datos, MapInfo Professional permite que varios usuarios puedan estar visualizando y modificando una tabla al mismo tiempo. En este escenario si queremos obtener la ltima versin de los datos, en MapBasic tendramos que ejecutar la sentencia Server Refresh. Sintaxis: Server Refresh TableName TableName; Nombre de la tabla en MapInfo Professional de la cual se quieren obtener la ltima versin. Ejemplo: Cdigo: Este ejemplo hace una tabla del servidor representable 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 Link Table "select * from tb_programacion" toolkit "ODBC" into "tb_Programacion" File "C:\tb_Programacion.TAB" Autokey ON Server Refresh tb_Programacion

7.7 Conexin DBMS Con BBDD Espacial


Como ya lo habamos indicado antes MapInfo se puede conectar a bases de datos con componente espacial o sin l. En este punto mostraremos las herramientas que se utilizan cuando se trabaja con bases de datos que incluyen componente espacial. Easyloader Esta herramienta de MapInfo Professional permite cargar una tabla de MapInfo (.TAB) en una base de datos espacial. Para ello realicen los siguientes pasos: 1. Abra una tabla representable de MapInfo. 2. En el men herramientas haga clic en EasyLoader, sino aparece vaya al administrador de herramientas busque EasyLoader y marque los cuadros de Carga y automtico.

preciso_net@hotmail.com

Pgina 41

MANUAL DE MAPBASIC

3. Cuando carga el EasyLoader se muestra la siguiente pantalla.

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.

7.8 Crear Espacios en el servidor.


Para crear bases de datos en SQL Server 2000/2005/2008 que soporten componentes espaciales es necesario instalar Spatial Ware 4.9.2 for SQL Server. En el caso de Oracle no es necesario instalar estos componentes ya que vienen incluidos dentro de la instalacin. Sin embargo no se activa por defecto y es necesaria una instalacin y configuracin del componente espacial para poder utilizarlo. A continuacin vamos a mostrar paso a paso como crear bases de datos y tablas espaciales en un servidor SQL Server 2000.

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'

6. Si se ejecuto correctamente el procedimiento tabSpatial#t#SW_GEOMETRY#t#CODIGO

se

creara

la

tabla

auxiliar:

Terminados estos pasos ya podemos trabajar con esta tabla desde MapInfo para crear y/o modificar objetos.

8. Integracin con otros leguajes de programacin:


MapInfo Professional puede ser controlado desde otras aplicaciones y no solamente desde MapBasic. Por ejemplo puede ser controlado desde una aplicacin construida en Visual Basic. Este tipo de aplicaciones integran los elementos de MapInfo Professional dentro de los elementos de la aplicacin, para lograr esto MapInfo crea una instancia nueva que se ejecuta junto con la aplicacin.

preciso_net@hotmail.com

Pgina 43

MANUAL DE MAPBASIC

8.1 Estableciendo la conexin con la instancia de MapInfo


Para crear un nuevo proyecto con integracin a MapInfo Professional debe realizar los siguientes pasos: 1. 2. 3. 4. Cree un nuevo proyecto de Visual Basic .Net Haga clic derecho sobre el proyecto y luego Agregar referencia. En cuadro de dialogo referencia haga clic en la ficha COM. Busque y seleccione la referencia MapInfo 9.5 OLE Automation Type Library y haga clic en Aceptar.

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).

8.2 Envos de comandos y consultas a MapInfo desde VB6.0, .NET


Comando Do Permite enviar una instruccin MapBasic para que se sea ejecutada por la instancia embebida de MapInfo Professional. Sintaxis: mapInfoApp.Do <Instruccin MapBasic> mapInfoApp; Instancia de MapInfo Professional. Instruccin MapBasic; cadena con la instruccin MapBasic a ejecutar. Ejemplo: Funcion Eval Permite ejecutar una instruccin MapBasic en la instancia de MapInfo Professional y a la vez retornar un valor. Sintaxis: res = mapInfoApp.Eval(<Instruccin MapBasic>) mapInfoApp; Instancia de MapInfo Professional. res; Objeto con el tipo de dato que retorna la funcin Eval. Instruccin MapBasic; cadena con la instruccin que debe ejecutarse para retornar el valor requerido. Integrando barras de herramientas y mens de MapInfo en .NET Para realizar la integracin de las barras de herramientas y mens de MapInfo usaremos la instruccin Run Menu Command la cual permite simular la seleccin de un men o botn de comando.

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

8.3 Uso de los mtodos CallBack


A veces que cuando trabajamos con la integracin de mapas en una aplicacin Visual Basic, necesitamos ejecutar acciones cuando se lanza un evento. MapInfo Professional provee de mtodos que actan como eventos para capturarlos es necesario implementar las funciones de la clase MapInfoCallBack el cual lo podemos encontrar en el directorio Integrated Mapping el cual a su vez se encuentra dentro del directorio Samples de MapBasic. Para implementar esta Interface podemos usar la palabra clave Implements luego de la declaracin de la clase en la que vamos a programar la implementacin. Se crearan automticamente los tres mtodos que nos brinda MapInfo Professional. Ejemplo: Cdigo: Public Class Form1 Implements MapInfo.MiPro.Samples.IM.ICallbackNotify #Region "Notify" Public Sub OnMenuItemClick(ByVal id As UInteger) Implements MapInfo.MiPro.Samples.IM.ICallbackNotify.OnMenuItemClick 'Sucede cuando se hace clic en un men End Sub Public Sub OnStatusBarTextChanged(ByVal text As String) Implements MapInfo.MiPro.Samples.IM.ICallbackNotify.OnStatusBarTextChanged 'Sucede cuando cambia el texto de la barra de estado End Sub Public Sub OnWindowContentsChanged(ByVal windowId As UInteger) Implements MapInfo.MiPro.Samples.IM.ICallbackNotify.OnWindowContentsChanged 'Sucede cuando cambia el contenido de una ventana End Sub #End Region End Class

preciso_net@hotmail.com

Pgina 45

You might also like