You are on page 1of 28

9D: Intro to MapBasic for the

non-programmer

Jim Regan
Senior Consultant
Pitney Bowes Software – Global Services
Who am I ?
• Jim Regan
• Senior Consultant, Pitney Bowes Software, Global Services
• 14+ years at MapInfo/Pitney Bowes Software
• Training
• Developer Services
• Professional Services
• Global Services
• jim.regan@mapinfo.com
Agenda

• What is MapBasic

• Who can use MapBasic

• What you can do with MapBasic

• MapBasic in MapInfo Professional

• MapBasic applications
What Is MapBasic?

• Full-featured programming language with over 300


statements and functions
• Works in conjunction with MapInfo Professional
• MapBasic applications need MapInfo Professional ( or
MapInfo Professional runtime) in order to run
• MapBasic programs take advantage of all of MapInfo
Professional’s features and geographic data-management
capabilities
Who can use MapBasic

• MapInfo Professional users


• Novice
• Intermediate
• Power

• MapBasic Programmers
What you can do with MapBasic

• Change the menu and toolbars

• Automate repetitive tasks

• Add functionality
MapBasic in MapInfo Professional

• SURPRISE!!!!!
You have already been using MapBasic by just using
MapInfo Professional
• Every time you open a workspace, you are actually
running a series of MapBasic commands
• The menus are created through MapBasic commands
• The MapBasic window shows “behind the scenes”
commands
Where Does MapBasic Exist

• MapBasic Window
• Accessed via the Options > Show MapBasic Window menu
option in MapInfo Professional
• MapInfo Workspaces
• *.WOR
• MapInfo Menu File
• C:\Program Files\MapInfo\Professional\MAPINFOW.MNU
• MapBasic Applications
• *.MB - MapBasic source code
• *.MBX - Compiled MapBasic executable file
MapBasic Window
MapBasic Window

• A Window and A Door


• View Commands
• Run Command(s)
• Type or paste text into the window
• Save Text
MapInfo Workspaces
MapInfo Workspace

• Text file
• Series of MapBasic commands to open tables and arrange
data views
• Easy to read* (Individual descriptions may vary)
• Useful to learn MapBasic syntax and statements
• Consider copying / pasting MapBasic statements from a
workspace into a program or MapBasic window
• Consider modifying a Workspace to perform additional
commands when it is loaded
Workspaces - 9D_MapWorld2008.wor ( 1 of 2 )
!Workspace
!Version 600
!Charset WindowsLatin1
Open Table "Data\gazmaj" As gazmaj Interactive
Open Table "Data\ocean" As ocean Interactive
Open Table "Data\STATES" As STATES Interactive
Open Table "Data\World" As World Interactive
Set Window MapBasic
Position (2.59375,6.22917) Units "in"
Width 7.22917 Units "in" Height 1.5625 Units "in"
Open Window MapBasic
Map From gazmaj,STATES,World,ocean
Position (0.0520833,0.0520833) Units "in"
Width 10.3438 Units "in" Height 6.85417 Units "in"
Set Window FrontWindow() ScrollBars Off Autoscroll On
Set Map
CoordSys Earth Projection 1, 62
Center (-73.46802886,44.1447105)
Zoom 2633.012886 Units "mi"
Preserve Zoom Display Zoom
Distance Units "mi" Area Units "sq mi" XY Units "degree"
Set Map
Layer 1
Display Global
Workspaces - 9D_MapWorld2008.wor ( 2 of 2 )
Global Pen (1,2,0) Brush (2,16777215,16777215) Symbol (34,16711680,3,"MapInfo Symbols",256,0) Line (1,2,0) Font
("Arial",0,9,0)
Label Line Arrow Position Right Font ("Arial",0,9,0) Pen (1,2,0)
With Place_Name
Parallel On Auto Off Overlap Off Duplicates On Offset 2
Visibility On
Layer 2
Display Global
Global Pen (1,2,7368816) Brush (2,16777072,16777215) Symbol (35,0,12) Line (1,2,0) Font ("Arial",0,9,0)
Label Line None Position Center Font ("Arial",0,9,0) Pen (1,2,0)
With State_Name
Parallel On Auto Off Overlap Off Duplicates On Offset 2
Visibility On
Layer 3
Display Global
Global Pen (1,2,9474192) Brush (2,16768112,16777215) Symbol (35,0,12) Line (1,2,0) Font ("Arial",0,9,0)
Label Line None Position Center Font ("Arial",0,9,0) Pen (1,2,0)
With Country
Parallel On Auto Off Overlap Off Duplicates On Offset 2
Visibility On
Layer 4
Display Graphic
Global Pen (1,2,0) Brush (2,16777215,16777215) Symbol (35,0,12) Line (1,2,0) Font ("Arial",0,9,0)
Label Line None Position Center Font ("Arial",0,9,0) Pen (1,2,0)
With Name
Parallel On Auto Off Overlap Off Duplicates On Offset 2
Visibility On
MapInfo Professional Menu Definition
MapInfo Menu File

• Series of MapBasic commands to arrange menu structure


• Sort of a MapBasic Program
• C:\Program Files\MapInfo\Professional\MAPINFOW.MNU

BE CAUTIOUS WHEN EDITING THIS FILE!!!!


MAKE A BACKUP COPY (or TWO) BEFORE EDITING!!!

PLEASE BE CAREFUL!!!!!!
Modifying the menu file

• Seriously…..be cautious when modifying this file!!!


MapInfo Menu File

Create Menu "&File" ID 1 As


"&New Table...\tCtrl+N/W^N"
HelpMsg "Create a new table."
calling 101,
"&Open...\tCtrl+O/W^O"
HelpMsg "Open tables or workspaces."
calling 102,
"Open Web Service" As "Open Web Service",
"Open DB&MS Connection..."
HelpMsg "Connect to a DBMS server."
calling 125,
"(-",
"(&Close Table..."
HelpMsg "Close one or more tables."
calling 103,
MapBasic Applications
MapBasic Applications
• File Types
• *.MB – source code
• *.MBX – Compiled code
• Running MapBasic *.MBX programs
• An MBX needs a copy of MiPro to run (or MiPro runtime)
• To Launch
• From File Explorer
• Run *.mbx ( file is linked to Mapinfow.exe)
• From within MapInfo Professional
• Tools > Run MapBasic Program menu option in MiPro
• Sources of MapBasic applications
• MapInfo Corporation
• MapInfo Partners
• Shareware
• Users
Steps for Creating a Simple MapBasic Program

• Create Shell
• Write / “Steal” the Code
• Create Interface
• Run It
Create Shell

• Every MapBasic program has a minimum amount of code to


make a program
• Usually looks like this:

Declare Sub Main

Sub Main
‘ code goes here
End Sub
Write/Steal The Code

• Use Code from the MapBasic Window, Workspaces


• Step Through Operations
• Save The Code
• Comment The Code
Compile and Run the Program

• The MapBasic IDE needs to compile the application into a


MBX before it can be run with MapInfo Professional
Create the User Interface

• Determine data that has to be entered


• Determine best method by which to obtain the data
• Consider the user interface flow
Looping
• For… To…Step…Next
Dim how_many As Integer
For how_many=10 to 100 step 10
Note “the next number is:” + how_many
Next

• Do…Until/While…Loop
Do

Loop Until <condition>

• While <condition>

Wend

• Do While <condition>

Loop
Review

• You have already been using MapBasic by using MapInfo


Professional
• Every time you open a workspace, you run a series of
MapBasic commands
• You can control the menus and toolbars using MapBasic
commands in the MNU file
• You can view, learn, enter, and save MapBasic commands
via the MapBasic window
More Information on MapBasic…

• MapBasic Sample Applications


• Many good examples on how to accomplish specific tasks using
MapBasic (C:\Program Files\MapInfo\MapBasic\Samples\)
• Product documentation found on PDF
• MapBasic User’s Guide
• MapBasic Knowledgebase
• http://testdrive.mapinfo.com
• MapInfo Training Classes
• http://www.mapinfo.com/training
• MapInfo User Group
• http://www.mapinfo.com/mipug

You might also like