Manual-Mapbasic
Manual-Mapbasic
Versión 9.5
INDICE
1. EDITOR DE MAPBASIC
M APBASIC ............................................................................................................................... 4
1.1 DESCRIPCIÓN DE LA INTERFAZ ..................................................................................................... ..................... 4
1.2 COMPILAR PROGRAMAS : .................................................................................................... ............................ 5
2. FUNDAMENTOS DE PROGRAMACIÓN EN MB............................................................................................ 6
2.1 VARIABLES ........................................................... ............................................................... ......................... 6
2.2 TIPOS DE DATOS ........................................................................................................................................... 6
2.3 OPERADORES ...................................................................................................... ......................................... 7
2.4 CONTROLES DE FLUJO Y BUCLES ........................................................................................................................ 9
2.5 PROCEDIMIENTOS SUB Y FUNCTION ...................................................... .......................................................... 12
3. CREACIÓN DE INTERFACES EN MAPBASIC ............................................................................................... 14
3.1 GESTIÓN DE MENÚS ...................................................... ................................................................ .............. 14
3.2 GESTIÓN DE BARRA DE HERRAMIENTAS :.............................................................. ............................................. 16
3.3 FUNCIÓN COMMANDINFO() ......................................................................................................................... 17
3.4 CUADROS DE DIALOGO ..................................................................................................... ............................ 21
4. TRABAJO CON TABLAS: ........................................................................................................................... 25
4.1 SENTENCIA CREATE TABLE ....................................................................................... ..................................... 25
4.2 SENTENCIA ALTER TABLE ..................................................................................................... ......................... 26
4.3 SENTENCIA CREATE MAP............................................................ ................................................................ .. 26
4.4 SENTENCIA PACK TABLE ............................................................................ ................................................... 26
4.5 FUNCIÓN TABLEINFO ...................................................................................................... ............................. 26
4.6 FUNCIÓN NUMTABLES.................................................. ............................................................... ................ 27
4.7 SENTENCIA OPEN TABLE .............................................................. ............................................................... .. 27
4.8 SENTENCIA COMMIT TABLE, ROLLBACK TABLE .................................................................................................. 27
4.9 TABLAS ESPECIALES ..................................................................................................................................... 28
4.10 FUNCIÓN OBJECTINFO .............................................................................................. ................................... 28
5. TRABAJO CON VENTANAS ....................................................................................................................... 29
5.1 SENTENCIA MAP.............................................................. ............................................................... ............ 30
5.2 FUNCIÓN WINDOWID ............................................................................................... .................................. 30
5.3 FUNCIÓN FRONTWINDOW ........................................................................................................................... 30
5.4 FUNCIÓN NUMWINDOWS, NUMALLWINDOWS .......................................................... ..................................... 30
5.5 FUNCIÓN WINDOWINFO ..................................................................................................... ......................... 31
5.6 SENTENCIA SET MAP ..................................................................................................... .............................. 32
5.7 AGREGAR Y QUITAR CAPAS ......................................................... ................................................................ ... 33
5.8 BÚSQUEDA Y LOCALIZACIÓN DE OBJETOS .......................................................................................................... 34
6. VENTANA DE PRESENTACIÓN: ................................................................................................................. 34
6.1 SENTENCIA LAYOUT ........................................................ ............................................................... .............. 34
6.2 SENTENCIA CREATE FRAME ........................................................................................................ ................... 35
6.3 SENTENCIA CREATE TEXT ............................................................................................................. ................. 35
6.4 TABLA LAYOUTN......................................................................................................................................... 36
6.5 IMPRESIÓN DE LA VENTANA DE PRESENTACIÓN .................................................................................................. 36
7. TRABAJO CON DBMS:.............................................................................................................................. 36
7.1 DIFERENCIA ENTRE BBDD ESPACIAL Y NO ESPACIAL ........................................................................................... 36
7.2 CONEXIÓN DBMS SIN BBDD ESPACIAL............................................................ .............................................. 37
MANUAL DE MAPBASIC
1. Editor de MapBasic
Para ingresar al editor y compilador de MapBasic, realice lo siguiente:
• En el menú Inicio haga clic
cli c en programas, luego MapInfo y enseguida MapBasic 9.5
Barra de Menú
Menú
Área de trabajo
MANUAL DE MAPBASIC
• Compilar archivo (Compile current file): Permite compilar el archivo actual (*.MB) en formato
ejecutable (*.MBX).
• Ejecutar (Run): Permite ejecutar el archivo (*.MBX) en MapInfo.
Para crear un programa en MapBasic, necesitamos que por lo menos se tenga la siguiente estructura.
Código:
‘Declarar la estructura
Declare Sub Main()
Note “Hola Mundo”
End Sub
MANUAL DE MAPBASIC
2. Fundamentos de programación en MB
Expresiones:
Código:
Sub Main()
‘Expresion variable
nombre = “Hola Olibert”
‘Llamado a función 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]
Integer i = 1073741824
SmallInt i = 16384
Float F=4
tam = 3.36
resul = 3.4e9
String Nombre = “Olibert” Para agregar caracteres
especiales se puede usar la
función Chr$()
MANUAL DE MAPBASIC
2.3 Operadores
Un operador actúa sobre una o más variables para producir un resultado. Los operadores se clasifican
según el tipo de dato o valor que producen.
Operadores Numéricos:
Los operadores numéricos actúan sobre los valores numéricos para obtener un resultado. Los
operadores numéricos son los siguientes:
MANUAL DE MAPBASIC
Sintaxis:
Forma 1:
DO WHILE <Condición>
<Bloque de instrucciones>
LOOP
Forma 2:
DO
<Bloque de instrucciones>
LOOP WHILE <Condición>
Ejemplo:
Código:
Sub Main()
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
Sub Main()
End Sub
Los procedimientos y funciones nos ayudan a ordenar, estructurar y reutilizar una porción de código.
Según su comportamiento se pueden clasificar en Procedimientos Sub y Function. Se diferencian uno
MANUAL DE MAPBASIC
del otro en que los procedimientos Sub realizan un conjunto de rutinas sin retornar ningún tipo de
valor tras su ejecución, caso contrario los procedimientos Function si retornan un valor en un
determinado tipo de dato.
Sintaxis:
Ejemplo:
Código:
Sub Main()
Dim num1 as Integer
Dim num2 as Integer
Dim resul as Integer
Los parámetros son opcionales, si no se especifica su ámbito por defecto todos los parámetros se
pasan por referencia, si se desea que un parámetros se pase por valor se debe indicar la palabra clave
BYVAL antes del parámetro.
Ejemplo:
Código:
Sub Main()
Dim cadena as String
cadena = “Valor”
Cambiar_Mostrar_Resultado(resul)
MANUAL DE MAPBASIC
NOTE cadena
End Sub
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 continuación se muestra los
menús, submenús e ítems.
1. Barra de Menú
2. Items
3. Sub Menú
A continuación se muestran las sintaxis para realizar operaciones básicas sobre los menús:
Operación Sintaxis
Sub Main()
‘Llama al procedimiento crear BarraPush
Call Crear_BarraTool
End Sub
Sub Crear_BarraTool()
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
MANUAL DE MAPBASIC
x1 = CommandInfo(CMD_INFO_X )
y1 = CommandInfo(CMD_INFO_Y )
x2 = CommandInfo(CMD_INFO_X2 )
y2 = 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
Los cuadros de dialogo permiten al usuario interactuar con la aplicación. Con la finalidad te tomar los
datos ingresados para luego ejecutar su lógica y mostrar el resultado.
Diálogos estándar
Sintaxis:
NOTE <texto>
ASK(). Muestra un mensaje con dos botones, un botón aceptar y otro cancelar. Se utiliza
mayormente cuando se quiere preguntar al usuario si se va a ejecutar o cancelar una acción.
MANUAL DE MAPBASIC
Sintaxis:
Como resultado después de su ejecución retorna un tipo lógico verdadero si se hizo clic en el botón
correspondiente a Aceptar caso contrario retorna falso.
FILEOPENDLG() y FILESAVEASDLG() . Muestra una ventana de dialogo para abrir o guardar un
archivo.
Sintaxis:
Diálogos personalizados
Los cuadros de dialogo personalizados permiten crear interfaces a medida. Para ello MapBasic cuenta
con una serie de controles para ingreso, selección entre otras.
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:
Ejemplo:
Código:
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 además de bajar los datos
también se podrá trabajar la tabla como una capa de MapInfo, si no se ha hecho representable solo
se podrán bajar los datos. Para vincular tablas del servidor desde MapBasic se utiliza la sentencia
Server Link Table, de igual manera para quitar el vínculo de una tabla se utiliza la sentencia UnLink
Sintaxis:
UnLink TableName
Ejemplo:
Código:
‘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
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 conexión 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 versión de los datos, en MapBasic tendríamos que ejecutar la sentencia Server Refresh.
Sintaxis:
Código:
Como ya lo habíamos 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 automático.
MANUAL DE MAPBASIC
Código:
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)).
Código:
‘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))
Código:
Terminados estos pasos ya podemos trabajar con esta tabla desde MapInfo para crear y/o modificar
objetos.
Para crear un nuevo proyecto con integración a MapInfo Professional debe realizar los siguientes
pasos:
1. Cree un nuevo proyecto de Visual Basic .Net
2. Haga clic derecho sobre el proyecto y luego Agregar referencia.
3. En cuadro de dialogo referencia haga clic en la ficha COM.
4. 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 aplicación o ventana
sobre la cual responderán sus cuadros de dialogo.
Comando Set Next Document Parent
Por medio de este comando podemos embeber una ventana (Ventana de Mapa, listado, presentación,
etc.) de MapInfo Professional dentro de un control de Visual Basic de tipo contenedor (Panel).
Comando Do
Permite enviar una instrucción MapBasic para que se sea ejecutada por la instancia embebida de MapInfo
Professional.
Sintaxis:
Ejemplo:
Funcion Eval
Permite ejecutar una instrucción MapBasic en la instancia de MapInfo Professional y a la vez retornar
un valor.
Sintaxis:
Para realizar la integración de las barras de herramientas y menús de MapInfo usaremos la instrucción
Run Menu Command la cual permite simular la selección de un menú o botón de comando.
MANUAL DE MAPBASIC
Sintaxis:
Archivo menu.def:
Define M_TOOLS_SELECTOR 1701 ‘Seleccionar
Define M_TOOLS_RECENTER 1702 ‘Mover
Define M_TOOLS_EXPAND 1705 ‘Acercar
Define M_TOOLS_SHRINK 1706 ‘Alejar
A veces que cuando trabajamos con la integración de mapas en una aplicación Visual Basic,
necesitamos ejecutar acciones cuando se lanza un evento. MapInfo Professional provee de métodos
que actúan 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 declaración
de la clase en la que vamos a programar la implementación. Se crearan automáticamente los tres
métodos que nos brinda MapInfo Professional.
Ejemplo:
Código:
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