SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

Adobe photoshop cs6 tutorial
Adobe photoshop cs6 tutorialAdobe photoshop cs6 tutorial
Adobe photoshop cs6 tutorialAgung Yuwono
 
Android User Interface Tutorial: DatePicker, TimePicker & Spinner
Android User Interface Tutorial: DatePicker, TimePicker & SpinnerAndroid User Interface Tutorial: DatePicker, TimePicker & Spinner
Android User Interface Tutorial: DatePicker, TimePicker & SpinnerAhsanul Karim
 
Practicas de corel draw x6
Practicas de corel draw x6Practicas de corel draw x6
Practicas de corel draw x6Karen Ancco
 
Components of the word window
Components of the word windowComponents of the word window
Components of the word windowsusoav
 
Manual de actividades de PhotoShop
Manual de actividades de PhotoShopManual de actividades de PhotoShop
Manual de actividades de PhotoShopale_martinez_19
 
Object Oriented Programming In .Net
Object Oriented Programming In .NetObject Oriented Programming In .Net
Object Oriented Programming In .NetGreg Sohl
 
Inter threadcommunication.38
Inter threadcommunication.38Inter threadcommunication.38
Inter threadcommunication.38myrajendra
 
How To Break Down Complex Problems
How To Break Down Complex Problems How To Break Down Complex Problems
How To Break Down Complex Problems UXDXConf
 
InDesign Part 3
InDesign Part 3InDesign Part 3
InDesign Part 3Sam Georgi
 
What is turbo c and how it works
What is turbo c and how it worksWhat is turbo c and how it works
What is turbo c and how it worksMark John Lado, MIT
 
Using Adjustment Layers and Lighting in Photoshop
Using Adjustment Layers and Lighting in PhotoshopUsing Adjustment Layers and Lighting in Photoshop
Using Adjustment Layers and Lighting in Photoshopnombre thera
 

Was ist angesagt? (20)

Adobe photoshop cs6 tutorial
Adobe photoshop cs6 tutorialAdobe photoshop cs6 tutorial
Adobe photoshop cs6 tutorial
 
1.3manual xmind
1.3manual xmind1.3manual xmind
1.3manual xmind
 
VB PPT by ADI PART3.pdf
VB PPT by ADI PART3.pdfVB PPT by ADI PART3.pdf
VB PPT by ADI PART3.pdf
 
Xmind
XmindXmind
Xmind
 
Android User Interface Tutorial: DatePicker, TimePicker & Spinner
Android User Interface Tutorial: DatePicker, TimePicker & SpinnerAndroid User Interface Tutorial: DatePicker, TimePicker & Spinner
Android User Interface Tutorial: DatePicker, TimePicker & Spinner
 
Practicas de corel draw x6
Practicas de corel draw x6Practicas de corel draw x6
Practicas de corel draw x6
 
Components of the word window
Components of the word windowComponents of the word window
Components of the word window
 
Práctica CorelDraw
Práctica  CorelDrawPráctica  CorelDraw
Práctica CorelDraw
 
Manual de actividades de PhotoShop
Manual de actividades de PhotoShopManual de actividades de PhotoShop
Manual de actividades de PhotoShop
 
Object Oriented Programming In .Net
Object Oriented Programming In .NetObject Oriented Programming In .Net
Object Oriented Programming In .Net
 
Efecto Power clip en corel draw X3
Efecto Power clip en corel draw X3Efecto Power clip en corel draw X3
Efecto Power clip en corel draw X3
 
Animate cc ppt
Animate cc pptAnimate cc ppt
Animate cc ppt
 
Adobe Photoshop: Menu Bar
Adobe Photoshop: Menu BarAdobe Photoshop: Menu Bar
Adobe Photoshop: Menu Bar
 
Inter threadcommunication.38
Inter threadcommunication.38Inter threadcommunication.38
Inter threadcommunication.38
 
How To Break Down Complex Problems
How To Break Down Complex Problems How To Break Down Complex Problems
How To Break Down Complex Problems
 
Gimp 2
Gimp 2Gimp 2
Gimp 2
 
InDesign Part 3
InDesign Part 3InDesign Part 3
InDesign Part 3
 
What is turbo c and how it works
What is turbo c and how it worksWhat is turbo c and how it works
What is turbo c and how it works
 
Tux Paint
Tux PaintTux Paint
Tux Paint
 
Using Adjustment Layers and Lighting in Photoshop
Using Adjustment Layers and Lighting in PhotoshopUsing Adjustment Layers and Lighting in Photoshop
Using Adjustment Layers and Lighting in Photoshop
 

Ähnlich wie Using MapBasic to modify your user interface

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 2016Peter Horsbøll Møller
 
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 6Jeanie Arnoco
 
Automating Repetitive Tasks with MapBasic
Automating Repetitive Tasks with MapBasicAutomating Repetitive Tasks with MapBasic
Automating Repetitive Tasks with MapBasicPeter Horsbøll Møller
 
Csc153 chapter 03
Csc153 chapter 03Csc153 chapter 03
Csc153 chapter 03PCC
 
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
 
VB6_OBJECTS AND GRAPHICS.ppt
VB6_OBJECTS AND GRAPHICS.pptVB6_OBJECTS AND GRAPHICS.ppt
VB6_OBJECTS AND GRAPHICS.pptBhuvanaR13
 
Visual Basic IDE Introduction
Visual Basic IDE IntroductionVisual Basic IDE Introduction
Visual Basic IDE IntroductionAhllen Javier
 
Visual Basic IDE Intro.pdf
Visual Basic IDE Intro.pdfVisual Basic IDE Intro.pdf
Visual Basic IDE Intro.pdfsheenmarie0212
 
VB6_INTRODUCTION.ppt
VB6_INTRODUCTION.pptVB6_INTRODUCTION.ppt
VB6_INTRODUCTION.pptBhuvanaR13
 
Practicalfileofvb workshop
Practicalfileofvb workshopPracticalfileofvb workshop
Practicalfileofvb workshopdhi her
 
Vb6.0 Introduction
Vb6.0 IntroductionVb6.0 Introduction
Vb6.0 IntroductionTennyson
 
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.pptxAOmaAli
 

Ähnlich wie 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
 

Mehr von Peter Horsbøll Møller

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 v2019Peter Horsbøll Møller
 
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 QueryPeter Horsbøll Møller
 
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 WhiskylaugPeter Horsbøll Møller
 
Llinking Spectrum dataflows to MapInfo Pro
Llinking Spectrum dataflows to MapInfo ProLlinking Spectrum dataflows to MapInfo Pro
Llinking Spectrum dataflows to MapInfo ProPeter Horsbøll Møller
 
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 ProPeter Horsbøll Møller
 
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 bitPeter Horsbøll Møller
 
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øjdedataPeter Horsbøll Møller
 
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 WhiskyPeter Horsbøll Møller
 
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 opgaverPeter Horsbøll Møller
 

Mehr von 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
 

Kürzlich hochgeladen

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 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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...Neo4j
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
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 2024The Digital Insurer
 
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...Martijn de Jong
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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...apidays
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Kürzlich hochgeladen (20)

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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
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
 
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...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

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