SlideShare une entreprise Scribd logo
1  sur  40
Peter H. Møller

Senior Systems Engineer
Pitney Bowes Software
Using MapBasic to modify your user interface

Peter Horsbøll Møller
Pitney Bowes Software

2
What is MapBasic?
• MapBasic is a scripting language that makes it easy to
automate MapInfo Professional
• MapBasic is also a freely available compiler (and editor)
to compile MapBasic source code into MapBasic
applications (MBX)
• MapBasic is also the text that you see when you open a
workspace in a text editor

• MapBasic is all over within MapInfo Professional!

3
What is C#?
• C# is a Windows programming language developed by
Microsoft.
• C# does require a .NET Framework to be able to run
• Since MapInfo Professional v9.5 you can call/access
methods within C# (and other .NET language)
assemblies

4
What is the user interface?
• The user interface is what you use to make MapInfo
Professional do what you want it to do
• The user interface is
–
–
–
–

the toolbars and the buttons
the menus and the menu items
the Layer Control and the Table List windows
the different dialogs that pops up within MapInfo Professional

5
Using MapBasic to modify your user interface
Rearranging and creating shortcut keys

1

Modifying the MapInfo menu file

2

Adding shortcut keys using a MapBasic application

3

Building your own dialogs

4

Using .NET languages to build good looking user interfaces

6
What is the MapInfo menu file?
• The menu file - mapinfow.mnu is used by MapInfo Professional
to build the menus and toolbars
• It contains a number of
MapBasic statements for doing
this
• The menu file is plain ascii and
can be edited in a text editor,
like NotePad

7
Create Menu statements
Let’s look at the content
• Defining a new menu
• Defining a new menu item
• Ending a menu defintion (no
comma)
• Defining a sub menu in a menu
• Defining a separator

8
Create ButtonPad statements
Let’s look at the content
• Defining a new buttonpad/toolbar
• Defining a new button (push)
• Defining a new button (toggle)
• Defining a new button (tool)
• Setting initial state and width
• Defining a separator

9
Some notes
• Make a copy of your mapinfow.mnu before you start
modifying it!
• You mapinfow.mnu is normally found in the directory
where you installed MapInfo Professional. I can however
be read from other places. Use this statement in the
MapBasic window to locate the correct file, see path in
the message window afterwards:
– Print LocateFile$(7)

• Do remember the menu file i version specific, so you will
need to modify the file for each new version of MapInfo
Professional
10
Modifying the MapInfo menu file
Demo

12
Using MapBasic to modify your user interface
Static shortcut keys in an application

1

Modifying the MapInfo menu file

2

Adding shortcut keys using a MapBasic application

3

Building your own dialogs

4

Using .NET languages to build good looking user interfaces

13
What is a shortcut key?
• A shortcut key makes it
possible to access a feature
thru a key combination on
your keyboard
• Only menu items can have
shortcut keys – buttons can
not ...
• ... but you can create menu
items that ”call” the same
handler as the button

14
How do you define a shortcut key?
• Create Menu statement:
Create Menu newmenuname [ ID menu_id ] As
menuitem [ ID menu_item_id ] [ HelpMsg help ] {
Calling handler | As menuname } [ , menuitem
... ]

• You specify the shortcut key as part of the menu item
title:

15
Examples
• ”/W^N” is the shortcut for Ctrl + N
• ”tCtrl+N” adds the text ”Ctrl+N” at
the right side of the menu
• That is not necessay after v10 –
just create the shortcut and the
matching text will appear by default

16
Special keys
• It’s easy to assign ”normal” keys like a, b and z to menu items
using their character.
• But you can also use special key like F1, F2 and Home by
referring to their number
• Here is list of virtual key codes:
http://www.kbdedit.com/manual/low_level_vk_list.html
• For example Home has the numeric value 0x24 (hex). You
need to convert this to a decimal number. Use for instance:
http://www.statman.info/conversions/hexadecimal.html
• Now you can assign the value to a menu item like this:
“Zoom entire layer.../W#%36"
HelpMsg "Display an individual or all map layer(s)."
calling 807

17
Adding shortcut keys using a MapBasic application
Demo

• Defined in the Menu.def

19
Using MapBasic to modify your user interface
Custom made dialogs to make things easier

1

Modifying the MapInfo menu file

2

Adding shortcut keys using a MapBasic application

3

Building your own dialogs

4

Using .NET languages to build good looking user interfaces

20
Custom dialogs
• With MapBasic you can build applications containing
custom dialogs designed for your specific need
• These dialogs can be designed to access data, analyse
data, update attribute information and a number of other
use cases
• MapBasic dialogs are modal (like the old Layer Control
prior to MapInfo Pro 10.0). They can’t be floating (like the
new Layer Control added in MapInfo Pro 10.0)

21
Some examples

22
Control types
StaticText
PopupMenu

StaticText

StaticText
RadioGroup

ListBox
MultiListBox
GroupBox

PenPicker
BrushPicker
SymbolPicker
FontPicker

CheckBox

StaticText
EditText
OKButton

CancelButton
23
Let’s look at some MapBasic code

24
Handlers
• A handler is a subprocedure, called from the dialog
• A handler on the dialog itself is called when the dialog is
created and is being loaded
• You can use it to insert default values
• A handler on a control is called when the user ”uses” the
control
• It can be used to react to the actions/choices of the user,
like updating other control

25
Handler on the dialog

•

Creates a list of map windows

• Refreshes the control with the
•

list of windows
Activates the handler for this
control

26
Handler on a control

• Reads which windows is
selected in the control

• Creates a list of layers

• Refreshes the control with the
list of layers

27
Building your own dialogs
Using MapBasic to modify your user interface
Fancy looking windows, not dialogs

1

Modifying the MapInfo menu file

2

Adding shortcut keys using a MapBasic application

3

Building your own dialogs

4

Using .NET languages to build good looking user interfaces

29
Using .NET
• From MapInfo Professional 9.5 you have been able to
call .NET methods from your MapBasic applications
• This has given a wide range of new possibilities when
building applications to run inside MapInfo Professional

30
How is this done?
• Create a class with one or more static method
• Compile it into an assembly (.dll)
• Make the assembly
accessible for your
MapBasic app (copy it
to the same folder as
the app)
• Run your app

• Use the Declare Method statement to declare your
.NET method to MapBasic
• Call/use the method in your MapBasic app
• Compile (and link) your application
31
Create a new project in Visual Studio
• Choose the type ”Class Library”
• Name your project, here ”MapInfoDialog”
Add a static method
• Here we have added the method ShowDialog
Compile your .NET assembly
• Compiler your project thru Build > Build MapInfoDialog
– Or hit Shift + F6

• Note if there were any compile errors
Make the assembly accessible
• Copy the assembly to the folder where your compiled
MapBasic application will be located:
– MapInfoDialog.dll: The assembly
– MapInfoDialog.pdb: Debug information
Build your MapBasic application
• Declare Method
– Class: including Namesspaces
– Lib: without path but with ”.dll”

• Declare Sub Main
• Call ShowDialog(”some title”, ”some text to show in dialog”)
Compile and run your MapBasic application
• Compile
– Check for errors

• Run the application in MapInfo Pro
Some examples

38
Getting started with MapBasic?

Use the MapBasic
window

Look at your
workspaces

 Open the MapBasic window.
 Look at the statements MapInfo Pro write here when you do certain tasks

 Try to open a workspace in a text editor
 Look at the statements here

Find tools with
source code

 Have a look at the tools site, like MapInfoTools.com. Some tools do come with
source code.
 Have a look at these and try to modify them to fit your needs

Sign up for
MapInfo-L

 Signup for MapInfo-L on Google Groups: groups.google.com/group/mapinfo-l
 Follow and learn from the conversation here and start asking questions

39
Thank You
Peter Horsbøll Møller
peter.moller@pb.com

Contenu connexe

Tendances

3D WebGIS using Opensource software
3D WebGIS using Opensource software3D WebGIS using Opensource software
3D WebGIS using Opensource software
Parthesh Bulbule
 

Tendances (20)

Corel draw
Corel drawCorel draw
Corel draw
 
Lab report 9 satellite image classification using Erdas imagine
Lab report 9  satellite image classification using Erdas imagineLab report 9  satellite image classification using Erdas imagine
Lab report 9 satellite image classification using Erdas imagine
 
QGIS 고급 및 PyQGIS - 김기웅, 임영현
QGIS 고급 및 PyQGIS - 김기웅, 임영현 QGIS 고급 및 PyQGIS - 김기웅, 임영현
QGIS 고급 및 PyQGIS - 김기웅, 임영현
 
Internet GIS
Internet GISInternet GIS
Internet GIS
 
OpenStreetMap
OpenStreetMapOpenStreetMap
OpenStreetMap
 
공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
 공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습 공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
 
PyQGIS 개발자 쿡북(PyQGIS Developer Cookbook) 한국어 판
PyQGIS 개발자 쿡북(PyQGIS Developer Cookbook) 한국어 판 PyQGIS 개발자 쿡북(PyQGIS Developer Cookbook) 한국어 판
PyQGIS 개발자 쿡북(PyQGIS Developer Cookbook) 한국어 판
 
QGIS 활용
QGIS 활용QGIS 활용
QGIS 활용
 
QGIS Module 4
QGIS Module 4QGIS Module 4
QGIS Module 4
 
Intro to Adobe Photoshop
Intro to Adobe PhotoshopIntro to Adobe Photoshop
Intro to Adobe Photoshop
 
PostGIS 시작하기
PostGIS 시작하기PostGIS 시작하기
PostGIS 시작하기
 
Introduccion publisher
Introduccion publisherIntroduccion publisher
Introduccion publisher
 
Getting Started with PostGIS
Getting Started with PostGISGetting Started with PostGIS
Getting Started with PostGIS
 
3D WebGIS using Opensource software
3D WebGIS using Opensource software3D WebGIS using Opensource software
3D WebGIS using Opensource software
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반
 
Microsoft Excel 2013 Basics course
Microsoft Excel 2013 Basics courseMicrosoft Excel 2013 Basics course
Microsoft Excel 2013 Basics course
 
3 step photoshop basics pen tool
3 step photoshop basics pen tool3 step photoshop basics pen tool
3 step photoshop basics pen tool
 
GEOPROCESSING IN QGIS
GEOPROCESSING IN QGISGEOPROCESSING IN QGIS
GEOPROCESSING IN QGIS
 
Arcgis training day_1
Arcgis training day_1Arcgis training day_1
Arcgis training day_1
 
Introduccion a Corel Draw
Introduccion a Corel DrawIntroduccion a Corel Draw
Introduccion a Corel Draw
 

Similaire à Using MapBasic to modify your user interface

Csc153 chapter 03
Csc153 chapter 03Csc153 chapter 03
Csc153 chapter 03
PCC
 
Introduction to visual basic 6 (1)
Introduction to visual basic 6 (1)Introduction to visual basic 6 (1)
Introduction to visual basic 6 (1)
Mark Vincent Cantero
 
Practicalfileofvb workshop
Practicalfileofvb workshopPracticalfileofvb workshop
Practicalfileofvb workshop
dhi her
 
Vb6.0 Introduction
Vb6.0 IntroductionVb6.0 Introduction
Vb6.0 Introduction
Tennyson
 

Similaire à Using MapBasic to modify your user interface (20)

Getting Started with the Ribbon library - MUGUKI User Group Meeting 2016
Getting Started with the Ribbon library - MUGUKI User Group Meeting 2016Getting Started with the Ribbon library - MUGUKI User Group Meeting 2016
Getting Started with the Ribbon library - MUGUKI User Group Meeting 2016
 
Introduction to programming using Visual Basic 6
Introduction to programming using Visual Basic 6Introduction to programming using Visual Basic 6
Introduction to programming using Visual Basic 6
 
Automating Repetitive Tasks with MapBasic
Automating Repetitive Tasks with MapBasicAutomating Repetitive Tasks with MapBasic
Automating Repetitive Tasks with MapBasic
 
Csc153 chapter 03
Csc153 chapter 03Csc153 chapter 03
Csc153 chapter 03
 
Winisisx
WinisisxWinisisx
Winisisx
 
Introduction to visual basic 6 (1)
Introduction to visual basic 6 (1)Introduction to visual basic 6 (1)
Introduction to visual basic 6 (1)
 
Ms vb
Ms vbMs vb
Ms vb
 
Vb%20 tutorial
Vb%20 tutorialVb%20 tutorial
Vb%20 tutorial
 
Visual basic
Visual basicVisual basic
Visual basic
 
VB6_OBJECTS AND GRAPHICS.ppt
VB6_OBJECTS AND GRAPHICS.pptVB6_OBJECTS AND GRAPHICS.ppt
VB6_OBJECTS AND GRAPHICS.ppt
 
Visual basic
Visual basicVisual basic
Visual basic
 
Visual Basic.pptx
Visual Basic.pptxVisual Basic.pptx
Visual Basic.pptx
 
Visual Basic IDE Introduction
Visual Basic IDE IntroductionVisual Basic IDE Introduction
Visual Basic IDE Introduction
 
Visual Basic IDE Intro.pdf
Visual Basic IDE Intro.pdfVisual Basic IDE Intro.pdf
Visual Basic IDE Intro.pdf
 
VB6_INTRODUCTION.ppt
VB6_INTRODUCTION.pptVB6_INTRODUCTION.ppt
VB6_INTRODUCTION.ppt
 
VB PPT by ADI part-1.pdf
VB PPT by ADI part-1.pdfVB PPT by ADI part-1.pdf
VB PPT by ADI part-1.pdf
 
Practicalfileofvb workshop
Practicalfileofvb workshopPracticalfileofvb workshop
Practicalfileofvb workshop
 
Vb6.0 Introduction
Vb6.0 IntroductionVb6.0 Introduction
Vb6.0 Introduction
 
tL19 awt
tL19 awttL19 awt
tL19 awt
 
LECTURE 12 WINDOWS FORMS PART 2.pptx
LECTURE 12 WINDOWS FORMS PART 2.pptxLECTURE 12 WINDOWS FORMS PART 2.pptx
LECTURE 12 WINDOWS FORMS PART 2.pptx
 

Plus de Peter Horsbøll Møller

Plus de Peter Horsbøll Møller (20)

MapInfo Pro v12.5 to v2021.1 Overview
MapInfo Pro v12.5 to v2021.1 OverviewMapInfo Pro v12.5 to v2021.1 Overview
MapInfo Pro v12.5 to v2021.1 Overview
 
MapInfo Pro Tips & Tricks med Geograf
MapInfo Pro Tips & Tricks med GeografMapInfo Pro Tips & Tricks med Geograf
MapInfo Pro Tips & Tricks med Geograf
 
Precisely MapInfo Pro v2019 and Roadmap
Precisely MapInfo Pro v2019 and RoadmapPrecisely MapInfo Pro v2019 and Roadmap
Precisely MapInfo Pro v2019 and Roadmap
 
Be Location Intelligent with MapInfo Pro v2019
Be Location Intelligent with MapInfo Pro v2019Be Location Intelligent with MapInfo Pro v2019
Be Location Intelligent with MapInfo Pro v2019
 
MapInfo Pro v2019: Improving the Way You Query
MapInfo Pro v2019: Improving the Way You QueryMapInfo Pro v2019: Improving the Way You Query
MapInfo Pro v2019: Improving the Way You Query
 
Eksklusivsmagning - 10 års jubilæum, Oksenvad Whiskylaug
Eksklusivsmagning - 10 års jubilæum, Oksenvad WhiskylaugEksklusivsmagning - 10 års jubilæum, Oksenvad Whiskylaug
Eksklusivsmagning - 10 års jubilæum, Oksenvad Whiskylaug
 
Llinking Spectrum dataflows to MapInfo Pro
Llinking Spectrum dataflows to MapInfo ProLlinking Spectrum dataflows to MapInfo Pro
Llinking Spectrum dataflows to MapInfo Pro
 
Clynelish - Oksenvad Whiskylaug
Clynelish - Oksenvad WhiskylaugClynelish - Oksenvad Whiskylaug
Clynelish - Oksenvad Whiskylaug
 
MapInfo Discover 3D: From 2D to 3D
MapInfo Discover 3D: From 2D to 3DMapInfo Discover 3D: From 2D to 3D
MapInfo Discover 3D: From 2D to 3D
 
Whiskysmagning: Samaroli
Whiskysmagning: SamaroliWhiskysmagning: Samaroli
Whiskysmagning: Samaroli
 
Using Spectrum on Demand from MapInfo Pro
Using Spectrum on Demand from MapInfo ProUsing Spectrum on Demand from MapInfo Pro
Using Spectrum on Demand from MapInfo Pro
 
Hvad sker der hos Pitney Bowes
Hvad sker der hos Pitney BowesHvad sker der hos Pitney Bowes
Hvad sker der hos Pitney Bowes
 
MapInfo Discover 2015.2 64 bit
MapInfo Discover 2015.2 64 bitMapInfo Discover 2015.2 64 bit
MapInfo Discover 2015.2 64 bit
 
MapInfo Pro 64 bit og MapInfo Pro Advanced 64 bit
MapInfo Pro 64 bit og MapInfo Pro Advanced 64 bitMapInfo Pro 64 bit og MapInfo Pro Advanced 64 bit
MapInfo Pro 64 bit og MapInfo Pro Advanced 64 bit
 
MapInfo Pro Raster og de danske højdedata
MapInfo Pro Raster og de danske højdedataMapInfo Pro Raster og de danske højdedata
MapInfo Pro Raster og de danske højdedata
 
64 bits of MapInfo Pro - Danish version
64 bits of MapInfo Pro - Danish version64 bits of MapInfo Pro - Danish version
64 bits of MapInfo Pro - Danish version
 
Blend, Single Grain og Single Malt Whisky
Blend, Single Grain og Single Malt WhiskyBlend, Single Grain og Single Malt Whisky
Blend, Single Grain og Single Malt Whisky
 
MapInfo Pro og SQL Server - Uden opgaver
MapInfo Pro og SQL Server - Uden opgaverMapInfo Pro og SQL Server - Uden opgaver
MapInfo Pro og SQL Server - Uden opgaver
 
Nyheder i MapInfo Pro 12.5 Dansk 32 bit
Nyheder i MapInfo Pro 12.5 Dansk 32 bitNyheder i MapInfo Pro 12.5 Dansk 32 bit
Nyheder i MapInfo Pro 12.5 Dansk 32 bit
 
The Macallan - Oksenvad Whiskylaug
The Macallan - Oksenvad WhiskylaugThe Macallan - Oksenvad Whiskylaug
The Macallan - Oksenvad Whiskylaug
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

Using MapBasic to modify your user interface

  • 1. Peter H. Møller Senior Systems Engineer Pitney Bowes Software
  • 2. Using MapBasic to modify your user interface Peter Horsbøll Møller Pitney Bowes Software 2
  • 3. What is MapBasic? • MapBasic is a scripting language that makes it easy to automate MapInfo Professional • MapBasic is also a freely available compiler (and editor) to compile MapBasic source code into MapBasic applications (MBX) • MapBasic is also the text that you see when you open a workspace in a text editor • MapBasic is all over within MapInfo Professional! 3
  • 4. What is C#? • C# is a Windows programming language developed by Microsoft. • C# does require a .NET Framework to be able to run • Since MapInfo Professional v9.5 you can call/access methods within C# (and other .NET language) assemblies 4
  • 5. What is the user interface? • The user interface is what you use to make MapInfo Professional do what you want it to do • The user interface is – – – – the toolbars and the buttons the menus and the menu items the Layer Control and the Table List windows the different dialogs that pops up within MapInfo Professional 5
  • 6. Using MapBasic to modify your user interface Rearranging and creating shortcut keys 1 Modifying the MapInfo menu file 2 Adding shortcut keys using a MapBasic application 3 Building your own dialogs 4 Using .NET languages to build good looking user interfaces 6
  • 7. What is the MapInfo menu file? • The menu file - mapinfow.mnu is used by MapInfo Professional to build the menus and toolbars • It contains a number of MapBasic statements for doing this • The menu file is plain ascii and can be edited in a text editor, like NotePad 7
  • 8. Create Menu statements Let’s look at the content • Defining a new menu • Defining a new menu item • Ending a menu defintion (no comma) • Defining a sub menu in a menu • Defining a separator 8
  • 9. Create ButtonPad statements Let’s look at the content • Defining a new buttonpad/toolbar • Defining a new button (push) • Defining a new button (toggle) • Defining a new button (tool) • Setting initial state and width • Defining a separator 9
  • 10. Some notes • Make a copy of your mapinfow.mnu before you start modifying it! • You mapinfow.mnu is normally found in the directory where you installed MapInfo Professional. I can however be read from other places. Use this statement in the MapBasic window to locate the correct file, see path in the message window afterwards: – Print LocateFile$(7) • Do remember the menu file i version specific, so you will need to modify the file for each new version of MapInfo Professional 10
  • 13. Using MapBasic to modify your user interface Static shortcut keys in an application 1 Modifying the MapInfo menu file 2 Adding shortcut keys using a MapBasic application 3 Building your own dialogs 4 Using .NET languages to build good looking user interfaces 13
  • 14. What is a shortcut key? • A shortcut key makes it possible to access a feature thru a key combination on your keyboard • Only menu items can have shortcut keys – buttons can not ... • ... but you can create menu items that ”call” the same handler as the button 14
  • 15. How do you define a shortcut key? • Create Menu statement: Create Menu newmenuname [ ID menu_id ] As menuitem [ ID menu_item_id ] [ HelpMsg help ] { Calling handler | As menuname } [ , menuitem ... ] • You specify the shortcut key as part of the menu item title: 15
  • 16. Examples • ”/W^N” is the shortcut for Ctrl + N • ”tCtrl+N” adds the text ”Ctrl+N” at the right side of the menu • That is not necessay after v10 – just create the shortcut and the matching text will appear by default 16
  • 17. Special keys • It’s easy to assign ”normal” keys like a, b and z to menu items using their character. • But you can also use special key like F1, F2 and Home by referring to their number • Here is list of virtual key codes: http://www.kbdedit.com/manual/low_level_vk_list.html • For example Home has the numeric value 0x24 (hex). You need to convert this to a decimal number. Use for instance: http://www.statman.info/conversions/hexadecimal.html • Now you can assign the value to a menu item like this: “Zoom entire layer.../W#%36" HelpMsg "Display an individual or all map layer(s)." calling 807 17
  • 18. Adding shortcut keys using a MapBasic application
  • 19. Demo • Defined in the Menu.def 19
  • 20. Using MapBasic to modify your user interface Custom made dialogs to make things easier 1 Modifying the MapInfo menu file 2 Adding shortcut keys using a MapBasic application 3 Building your own dialogs 4 Using .NET languages to build good looking user interfaces 20
  • 21. Custom dialogs • With MapBasic you can build applications containing custom dialogs designed for your specific need • These dialogs can be designed to access data, analyse data, update attribute information and a number of other use cases • MapBasic dialogs are modal (like the old Layer Control prior to MapInfo Pro 10.0). They can’t be floating (like the new Layer Control added in MapInfo Pro 10.0) 21
  • 24. Let’s look at some MapBasic code 24
  • 25. Handlers • A handler is a subprocedure, called from the dialog • A handler on the dialog itself is called when the dialog is created and is being loaded • You can use it to insert default values • A handler on a control is called when the user ”uses” the control • It can be used to react to the actions/choices of the user, like updating other control 25
  • 26. Handler on the dialog • Creates a list of map windows • Refreshes the control with the • list of windows Activates the handler for this control 26
  • 27. Handler on a control • Reads which windows is selected in the control • Creates a list of layers • Refreshes the control with the list of layers 27
  • 28. Building your own dialogs
  • 29. Using MapBasic to modify your user interface Fancy looking windows, not dialogs 1 Modifying the MapInfo menu file 2 Adding shortcut keys using a MapBasic application 3 Building your own dialogs 4 Using .NET languages to build good looking user interfaces 29
  • 30. Using .NET • From MapInfo Professional 9.5 you have been able to call .NET methods from your MapBasic applications • This has given a wide range of new possibilities when building applications to run inside MapInfo Professional 30
  • 31. How is this done? • Create a class with one or more static method • Compile it into an assembly (.dll) • Make the assembly accessible for your MapBasic app (copy it to the same folder as the app) • Run your app • Use the Declare Method statement to declare your .NET method to MapBasic • Call/use the method in your MapBasic app • Compile (and link) your application 31
  • 32. Create a new project in Visual Studio • Choose the type ”Class Library” • Name your project, here ”MapInfoDialog”
  • 33. Add a static method • Here we have added the method ShowDialog
  • 34. Compile your .NET assembly • Compiler your project thru Build > Build MapInfoDialog – Or hit Shift + F6 • Note if there were any compile errors
  • 35. Make the assembly accessible • Copy the assembly to the folder where your compiled MapBasic application will be located: – MapInfoDialog.dll: The assembly – MapInfoDialog.pdb: Debug information
  • 36. Build your MapBasic application • Declare Method – Class: including Namesspaces – Lib: without path but with ”.dll” • Declare Sub Main • Call ShowDialog(”some title”, ”some text to show in dialog”)
  • 37. Compile and run your MapBasic application • Compile – Check for errors • Run the application in MapInfo Pro
  • 39. Getting started with MapBasic? Use the MapBasic window Look at your workspaces  Open the MapBasic window.  Look at the statements MapInfo Pro write here when you do certain tasks  Try to open a workspace in a text editor  Look at the statements here Find tools with source code  Have a look at the tools site, like MapInfoTools.com. Some tools do come with source code.  Have a look at these and try to modify them to fit your needs Sign up for MapInfo-L  Signup for MapInfo-L on Google Groups: groups.google.com/group/mapinfo-l  Follow and learn from the conversation here and start asking questions 39
  • 40. Thank You Peter Horsbøll Møller peter.moller@pb.com