Dagens program 10:00 10:30 10:45 11:30 12:00 13:00 13:20 13:50 14:30 15:00 16:00 Nyt i MapBasic 11.5 og 12.0 MapBasic IDE - kom i gang Analyse af gratis højdedata med MapBasic Ruteberegning med MapBasic og RW Net 4 Frokost Hente MapBasic-moduler i unfuddle Lav flydende dokbare vinduer via MapBasic og.net Workshop: Kom i gang med modulopbygget programmering med MapBasic Eftermiddagskaffe Workshop, fortsat Tak for i dag! 2
MapBasic Projekt filtyper.def: definitionsfil, ofte brugt til definition af funktioner og procedurer. Kan også indeholde konstanter. Anvendes via/inkluderes med Include kommandoen Include somefilename.def.mb: Dette er selve kildekoden som udgør programmet. Vil ofte inkludere en eller flere.def filer. Kompileres til enten en.mbx eller en.mbo.mbo: Et kompileret MapBasic modul (MapBasic Object). Denne fil opstår, hvis et modul ikke indeholder en Main procedure eller hvis modulet refererer til funktioner/procedurer i andre moduler..mbp: Dette er projektfilen. Angiver hvilket moduler (.mbo), der skal linkes til en samlet MapBasic applikation, en.mbx..mbx: Dette er den endelige MapBasic applikation (MapBasic Executable) som kan køres via MapInfo Professional eller MapInfo Professional Runtime
Definitionsfiler (.def) DEBUGlib.def Defaults.def ConfigFileLib.def
MapBasic moduler, kildekode (.mb)
MapBasic Projektfil (.mbp) NodesDisplayer.mbp WindowHelper.mbp
Kompilere enkeltstående MapBasic moduler Enkeltstående, simpel.mb compile.mbx Enkeltstående, avanceret.mb.def compile.mbx
Kompilere og linke MapBasic projekter Projektbaseret.mb.def compile.mbo.mb.def compile.mbo link.mbx
Kompilere og linke MapBasic projekter Projektbaseret, med fælles/delte moduler.def.mbo.mb.def compile.mbo link.mbx
Dagens program 10:00 10:30 10:45 11:30 12:00 13:00 13:20 13:50 14:30 15:00 16:00 Nyt i MapBasic 11.5 og 12.0 MapBasic IDE - kom i gang Analyse af gratis højdedata med MapBasic Ruteberegning med MapBasic og RW Net 4 Frokost Hente MapBasic-moduler i unfuddle Lav flydende dokbare vinduer via MapBasic og.net Workshop: Kom i gang med modulopbygget programmering med MapBasic Eftermiddagskaffe Workshop, fortsat Tak for i dag! 10
1: MapBasic projekter Lad os starte med at se lidt på strukturen i dette program 4 1 2 3
Opgave 1 I modulet WorkspaceHelperMENU.mb: Find OPGAVE og løs de beskrevne opgaver Der kan være flere opgaver Kompiler og link Kompiler og kontroller for evt. fejl Link MapBasic projektet Kør programmet og afprøv funktionaliteten
2: ProgramInfo modulet Information om applikationen samt en Om-dialogboks og evt. en hjælpefil
Opgave 2 I modulet WorkspaceHelper.mb: Find OPGAVE og løs de beskrevne opgaver Kompiler og link Kompiler og kontroller for evt. fejl Link MapBasic projektet Kør programmet og afprøv funktionaliteten Værktøj > WorkspaceHelper > About...
3: Debug Debug af MapBasic-programmer kan være svært. Derfor har jeg lavet et modul, der kan sætte programmet i debug-mode og informere via Meddelelsesvinduet og evt. små dialogbokse
Opgave 3 I modulet WorkspaceHelperMENU.mb: Find OPGAVE og løs de beskrevne opgaver Kompiler og link Kompiler og kontroller for evt. fejl Link MapBasic projektet Kør programmet og afprøv funktionaliteten
4: Indbyggede dialogbokse Der findes nogle indbyggede dialogbokse i MapBasic. Vi skal her se nærmere på to af disse: FileOpenDlg FileSaveAsDlg Begge lader brugeren udpege et filnavn. Den ene lader kun brugeren udpege eksisterende filnavn. Den anden lader også brugeren angive nye filnavn. Bemærk at retur-værdien fra begge funktioner er filnavnet. Funktionerne gør ellers intet, så det er op til en selv at programmere det, der skal ske med filnavnet, f.eks. at gemme sessionen som et arbejdsområde, at åbne et arbejdsområde, at skrive noget til den udpegede tekstfil og så videre
Standard Åbn dialogboks FileOpenDlg( path, filename, filetype, prompt) path is a string value, indicating the directory or folder to choose files from. filename is a string value, indicating the default file name for the user to choose. filetype is a string value, three or four characters long, indicating a file type (for example, "TAB" to specify tables). prompt is a string title that appears on the bar at the top of the dialog box. Husk at kontrollere returnværdien. Er den valgte brugeren ingen fil Husk det er op til dig rent faktisk at åbne tabellen/filen denne funktion giver dig blot et fil navn! sfile = FileOpenDlg("C:\", "min tabel", "tab", "Udpeg venligst tabel, som skal åbnes") If sfile = "" Then Note "Du udpegede ikke nogen fil! End If
Standard Gem som dialogboks FileSaveAsDlg( path, filename, filetype, prompt) path is a string value, indicating the default destination directory. filename is a string value, indicating the default file name. filetype is a string value, indicating the type of file that the dialog box lets the user choose. prompt is a string title that appears at the top of the dialog box. Husk at kontrollere returværdien. Er den angav brugeren ingen fil. Husk det er op til dig rent faktisk at gemme filen denne funktion giver dig blot et fil navn! sfile = FileSaveAsDlg("C:\", "min cxw fil", "cxw", "Udpeg venligst hvor du ønsker filen gemt") If sfile = "" Then End If Note "Du udpegede ikke nogen fil!
Opgave 4 I modulet WorkspaceHelper.mb: Find OPGAVE og løs de beskrevne opgaver Kompiler og link Kompiler og kontroller for evt. fejl Link MapBasic projektet Kør programmet og afprøv funktionaliteten Værktøj > WorkspaceHelper > Open Workspace... Værktøj > WorkspaceHelper > Save Workspace...
5: Filer og filtyper Modulet FILELib har en række funktioner og procedurer, der kan hjælpe med det at arbejde med filer, mapper og filnavne mm Der er bl.a. også funktioner, som kan gennemsøge en mappestruktur efter specifikke filer
Opgave 5 I modulet WorkspaceHelper.mb: Find OPGAVE og løs de beskrevne opgaver Hint: Left$() kan bruges til at læse x antal tegn fra venstre i en tekst Kompiler og link Kompiler og kontroller for evt. fejl Link MapBasic projektet Kør programmet og afprøv funktionaliteten Værktøj > WorkspaceHelper > Save workspace... Værktøj > WorkspaceHelper > Save current workspace with timestamp...
6: Dato og tid MapBasic håndtere dato og tid via en række indbyggede funktioner og funktionen Format$() kan hjælpe med at formatere disse på en ønsket måde. Alternativt kan man anvende nogle af funktionerne i DATETIMELib til at formatere dato og tid på en foruddefineret måde
Opgave 6 I modulet WorkspaceHelper.mb: Find OPGAVE og løs de beskrevne opgaver I MapBasic projektfilen WorkspaceHelper.mbp: Inkluder modulet DATETIMELib.mbo Kompiler og link Kompiler og kontroller for evt. fejl Link MapBasic projektet Kør programmet og afprøv funktionaliteten
7: Arrays/lister Et array er en liste af værdier af en given type. Her er et lille eksempel på deres anvendelse **Dimensionere Dim arrnames() As String Dim i As Integer **Tilpasse størrelsen ReDim arrnames(2) **Tildele værdier arrnames(1) = Peter arrnames(2) = Kurt **Gennemløbe For i = 1 To Ubound(arrNames) > 0 Then Print i & : & arrnames(i) Next For at gøre det nemmere at arbejde med disse har jeg laver modulet ARRAYLib
Modulet ARRAYLib
Opgave 7 I modulet WorkspaceHelper.mb tilpas proceduren WORAddToList: Find OPGAVE og løs de beskrevne opgaver I MapBasic projektfilen WorkspaceHelper.mbp: Inkluder modulet ARRAYLib.mbo Kompiler og link Kompiler og kontroller for evt. fejl Link MapBasic projektet Kør programmet og afprøv funktionaliteten Værktøj > WorksppaceHelper > Open Workspace... Værktøj > WorksppaceHelper > Save Workspace... Værktøj > WorksppaceHelper > Save Current Workspace...
8: Opsætningsfiler En opsætningsfil kan bruges til at gemme og genbruge indstillinger for et program. En standardiseret måde at gøre det på er via sektioner og nøgler: [sektion1] nøgle1=værdi nøgle2=enandenværdi [sektion2] nøgle1=entredjeværdi I modulet CONFIGFILELib findes en række funktioner og procedurer til at læse og skrive disse nøgler
Modulet CONFIGFILELib
Opgave 8 I modulet WorkspaceHelper.mb: Find OPGAVE og løs de beskrevne opgaver I MapBasic projektfilen WorkspaceHelper.mbp: Inkluder modulet CONFIGFILELib.mbo Kompiler og link Kompiler og kontroller for evt. fejl Link MapBasic projektet Kør programmet og afprøv funktionaliteten Værktøj > WorksppaceHelper > Open Workspace... Værktøj > WorksppaceHelper > Save Workspace... Værktøj > WorksppaceHelper > Save Current Workspace... Prøv at åbne opsætningsfilen efter at du har afsluttet programmet
9: Dialogboks med senest anvendte arbejdsområder OpenWorFileDlg.mb viser en dialogboks med en liste af arbejdsområder. Bruger kan vælge et af disse og brugeren kan også angive om de aktuelt åbne tabeller skal lukkes inden det vaægte arbejdsområde åbnes Bemærk modulet åbner ikke arbejdsområde det skal man selv gøre efter kald af funktionen
Opgave 9 I modulet OpenWorFileDlg.mb: Find **Opgave Løs opgaven beskrevet de enkelte steder I MapBasic projektfilen WorkspaceHelper.mbp: Inluder modulet OpenWorFileDlg.mbo Kompiler og link Kompiler og kontroller for evt. fejl Link MapBasic projektet Kør programmet og afprøv funktionaliteten Værktøj > WorksppaceHelper > Open Workspace... Værktøj > WorksppaceHelper > Save Workspace... Værktøj > WorksppaceHelper > Save Current Workspace... Prøv at åbne opsætningsfilen efter at du har afsluttet programmet
Ekstra opgaver I modulet OpenWorFileDlg tilpas OWFHandler_WorFilesClicked så man kan vælge et arbejdsområde ved at dobbeltklikke på den Opret en ny menupalette med knapper til de samme funktioner som findes som menupunkter i menuen WorkspaceHelper
Links Den danske PBSoftware blog: danmark.pbbiblogs.com The MapInfo Professional arkiv: web.pb.com/mapinfopro-apr-2013/mapinfo-archive/ MapInfo-L groups.google.com/group/mapinfo-l PB Ideas Portal MI Pro træningssvideoer: Download MapBasic: MI Pro prøveversion: ideas.pb.com www.pbinsight.com/support/training/video-tutorials www.pbinsight.com/support/product-downloads/for/mapbasic www.pbinsight.com/support/product-downloads/for/mapinfo-professional MI Pro dokumentation: Anden dokumentation: Anden download: www.pbinsight.com/support/product-documentation/details/mapinfo-professional www.pbinsight.com/support/product-documentation/ www.pbinsight.com/support/product-downloads/
Spørgsmål? Peter Horsbøll Møller peter.moller@pb.com www.pitneybowes.dk/software
Every connection is a new opportunity