MapBasic Référence V12
Transcription
MapBasic Référence V12
MapBasic Version 12.0 Référence Les informations contenues dans ce document pourront faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager le distributeur ou ses représentants. Aucune partie de ce manuel ne peut être reproduite ou transmise par quelque moyen que ce soit, électronique ou mécanique, y compris par photocopie, sans permission expresse et écrite de Pitney Bowes Software Inc., 29 quai Aulagnier, 92601 Asnières sur Seine Cedex. © 2013 Pitney Bowes Software Inc. Tous droits réservés. Pitney Bowes Software Inc. est une filiale en propriété exclusive de Pitney Bowes Inc. Pitney Bowes, le logo d'entreprise, MapInfo, Group 1 Software et MapBasic sont des marques commerciales de Pitney Bowes Software Inc. Toutes les autres marques et marques commerciales appartiennent à leurs détenteurs respectifs. Les coordonnées de tous les bureaux de Pitney Bowes Software Inc. sont disponibles à l'adresse suivante : http://www.pb.com/contact-us. © 2013 Adobe Systems Incorporated. Tous droits réservés. Adobe, le logo Adobe, Acrobat et le logo Adobe PDF sont soit des marques déposées, soit des marques commerciales d'Adobe Systems Incorporated aux États-Unis et/ou dans d'autres pays. © 2013 Contributeurs OpenStreetMap, CC-BY-SA; voir OpenStreetMap http://www.openstreetmap.org (licence disponible sur www.opendatacommons.org/licenses/odbl) et CC-BY-SA http://creativecommons.org/licenses/by-sa/2.0 libtiff © 1988-1997 Sam Leffler, © 2013 Silicon Graphics Inc. Tous droits réservés. libgeotiff © 2013 Niles D. Ritter. Amigo, Portions © 1999 Three D Graphics, Inc. Tous droits réservés. Halo Image Library © 1993 Media Cybernetics Inc. Tous droits réservés. Portions de LEAD Technologies, Inc. © 1991-2013. Tous droits réservés. Portions © 1993-2013 Ken Martin, Will Schroeder, Bill Lorensen. Tous droits réservés. ECW par ERDAS © 1993-2013 Intergraph Corporation, appartenant à Hexagon Group et/ou à ses fournisseurs. Tous droits réservés. Portions © 2013 Intergraph Corporation, appartenant à Hexagon Group. Tous droits réservés. MrSID, MrSID Decompressor et le logo MrSID sont des marques de LizardTech, une société Celartem. Utilisées sous licence. Des parties de ce logiciel sont sous copyright © 1995-1998 LizardTech, une société Celartem, et/ou de l'Université de Californie ou sont protégées par les brevets numéros 5 710 835 ou 5 467 110 déposés aux États-Unis et sont utilisées sous licence. Tous droits réservés. MrSID est protégé par des brevets et copyrights américains et internationaux. L'application des traités et brevets étrangers est en instance. La duplication et toute utilisation non autorisée sont interdites. Contient FME® Objects © 2005-2013 Safe Software Inc., Tous droits réservés. Crystal Reports © 2013 SAP AG. Tous droits réservés. Crystal Reports® et Business Objects™ sont une ou des marques commerciales ou déposées de SAP AG en Allemagne et dans plusieurs autres pays. Amyuni PDF Converter © 2000-2013, AMYUNI Consultants – AMYUNI Technologies. Tous droits réservés. Civic England – Public Sector Symbols Copyright © 2013 West London Alliance. Les symboles peuvent être utilisés gratuitement. Pour plus d'informations sur ces symboles, notamment sur la manière de les obtenir pour les utiliser dans d'autres applications, rendez-vous sur le site Web de West London Alliance à l'adresse suivante : http://www.westlondonalliance.org © 2006-2013 TomTom International BV. Tous droits réservés. Ce matériel est la propriété de TomTom. Il est protégé par les droits d'auteur et tout autre droit de propriété intellectuelle appartenant ou étant accordé sous licence à TomTom. L'utilisation que vous faites de ce matériel est soumise aux termes d'un contrat de licence. Vous serez tenu pour responsable en cas de reproduction ou de divulgation non autorisée de ce matériel. Microsoft Bing : Le contenu de tout service Bing est Copyright © 2013 Microsoft Corporation et/ou ses fournisseurs, One Microsoft Way, Redmond, WA 98052, États-Unis. Tous droits réservés. Microsoft ou ses fournisseurs détiennent le titre, copyright et tout autre droit de propriété intellectuelle du service Bing et de son contenu. Microsoft, Windows, Windows Live, le logo Windows, MSN, le logo MSN (papillon), Bing et d'autres produits et services de Microsoft peuvent être des marques déposées ou des marques commerciales de Microsoft aux États-Unis et/ou dans d'autres pays. Ce produit contient l'application 7-Zip, qui est sous licence publique générale limitée (LGPL) de GNU, version 3, 29 juin 2007, avec restriction unRAR. La licence est téléchargeable sur http://www.7-zip.org/license.txt. La licence GNU est téléchargeable sur http://www.gnu.org/licenses/lgpl.html. Le code source est disponible sur http://www.7-zip.org. Les produits nommés dans ce document peuvent être des marques de leurs constructeurs respectifs et sont reconnus comme tels. Les noms de marque sont utilisés dans cette documentation au profit du propriétaire de la marque, sans intention de lui porter atteinte. juillet 18, 2013 Sommaire Chapitre 1: Introduction à MapBasic.......................................................................23 Conventions.......................................................................................................................24 Présentation du langage...................................................................................................24 Principes essentiels de MapBasic...................................................................................25 Variables........................................................................................................................25 Boucles et branches.......................................................................................................25 Sortie et impression.......................................................................................................25 Procédures (Main et Sub)..............................................................................................25 Gestion des erreurs........................................................................................................26 Fonctions...........................................................................................................................26 Fonctions personnalisées..............................................................................................26 Fonctions de conversion de données............................................................................26 Fonctions de date et d'heure..........................................................................................27 Fonctions mathématiques..............................................................................................27 Fonctions chaîne............................................................................................................28 Utilisation de tables...........................................................................................................28 Création et modification des tables................................................................................28 Requêtes dans les tables...............................................................................................29 Utilisation de données distantes....................................................................................29 Utilisation de fichiers (autres que des tables) ...............................................................30 Entrée/sortie de fichier...................................................................................................30 Noms de fichiers et de répertoires.................................................................................31 Utilisation de cartes et d'objets graphiques...................................................................31 Création d'objets carte...................................................................................................31 Modification des objets carte.........................................................................................32 Requête dans des objets carte......................................................................................32 Utilisation de styles des objets.......................................................................................33 Utilisation de fenêtres Carte...........................................................................................33 Utilisation de fenêtres de conception de légende..........................................................34 Utilisation de fenêtres Légende cartographique............................................................34 Création de l'interface utilisateur.....................................................................................34 ButtonPads (barres d'outils)...........................................................................................34 Boîtes de dialogue.........................................................................................................35 Menus............................................................................................................................35 Fenêtres.........................................................................................................................35 Gestionnaires d'événements système...........................................................................36 Communication avec d'autres applications ..................................................................36 DDE (Dynamic Data Exchange, Windows uniquement) ...............................................36 Cartographie intégrée ...................................................................................................37 Instructions et fonctions spéciales.................................................................................37 Obtention d'un support technique...................................................................................37 Contacter le support technique .....................................................................................38 Défaillances du logiciel..................................................................................................39 Autres ressources..........................................................................................................39 Chapitre 2: Nouveautés et améliorations des fonctions et instructions de MapBasic.41 Nouvelles fonctions et instructions de MapBasic.........................................................42 Ajouts aux fonctions et instructions existantes............................................................42 Chapitre 3: Référence du langage MapBasic de A à Z..........................................49 Conventions d'instruction et de fonction.......................................................................50 Descriptions d'instruction et de fonction.......................................................................50 Fonction Abs( ) ..............................................................................................................50 Fonction Acos( ) ............................................................................................................51 Instruction Add Cartographic Frame..............................................................................52 Instruction Add Column..................................................................................................54 Instruction Add Designer Frame....................................................................................60 Instruction Add Designer Text........................................................................................63 Instruction Add Map.......................................................................................................64 Fonction AdornmentInfo( ).............................................................................................67 Instruction Alter Button...................................................................................................69 Instruction Alter ButtonPad............................................................................................70 Instruction Alter Cartographic Frame.............................................................................75 Instruction Alter Control..................................................................................................76 Instruction Alter Designer Frame...................................................................................78 Instruction Alter Designer Text.......................................................................................82 Instruction Alter MapInfoDialog......................................................................................84 6 MapBasic 12.0 Instruction Alter Menu....................................................................................................86 Instruction Alter Menu Bar.............................................................................................90 Instruction Alter Menu Item............................................................................................92 Instruction Alter Object...................................................................................................94 Instruction Alter Table...................................................................................................100 Fonction ApplicationDirectory$( ).................................................................................101 Fonction ApplicationName$( )......................................................................................102 Fonction Area( )...........................................................................................................103 Fonction AreaOverlap( )...............................................................................................104 Fonction Asc( ).............................................................................................................104 Fonction Asin( )............................................................................................................105 Fonction Ask( ).............................................................................................................106 Fonction Atn( )..............................................................................................................107 Instruction AutoLabel...................................................................................................108 Instruction Beep...........................................................................................................109 Instruction Browse........................................................................................................109 Fonction BrowserInfo( )................................................................................................111 Clause Brush................................................................................................................112 Fonction Buffer( ).........................................................................................................114 Fonction ButtonPadInfo( )............................................................................................115 Instruction Call.............................................................................................................117 Fonction CartesianArea( )............................................................................................119 Fonction CartesianBuffer( )..........................................................................................120 Fonction CartesianConnectObjects( )..........................................................................121 Fonction CartesianDistance( ).....................................................................................121 Fonction CartesianObjectDistance( )...........................................................................122 Fonction CartesianObjectLen( )...................................................................................123 Fonction CartesianOffset( )..........................................................................................124 Fonction CartesianOffsetXY( ).....................................................................................125 Fonction CartesianPerimeter( )....................................................................................126 Fonction Centroid( ).....................................................................................................127 Fonction CentroidX( )...................................................................................................128 Fonction CentroidY( )...................................................................................................129 Clause CharSet............................................................................................................129 Fonction ChooseProjection$( )....................................................................................132 Fonction Chr$( )...........................................................................................................133 Instruction Close All.....................................................................................................134 Instruction Close Connection.......................................................................................134 Référence 7 Instruction Close File....................................................................................................135 Instruction Close Table.................................................................................................135 Instruction Close Window............................................................................................136 Fonction ColumnInfo( )................................................................................................138 Fonction Combine( ).....................................................................................................140 Fonction CommandInfo( )............................................................................................141 Instruction Commit Table ............................................................................................146 Fonction ConnectObjects( ).........................................................................................151 Instruction Continue ....................................................................................................152 Clause Control Button / OKButton / CancelButton ......................................................152 Clause Control CheckBox............................................................................................153 Clause Control DocumentWindow...............................................................................154 Clause Control EditText...............................................................................................155 Clause Control GroupBox............................................................................................157 Clause Control ListBox / MultiListBox..........................................................................157 Clause Control PenPicker/BrushPicker/SymbolPicker/FontPicker..............................160 Fonction ControlPointInfo( ).........................................................................................161 Clause Control PopupMenu.........................................................................................162 Clause Control RadioGroup.........................................................................................163 Clause Control StaticText.............................................................................................164 Fonction ConvertToPline( )..........................................................................................165 Fonction ConvertToRegion( ).......................................................................................166 Fonction ConvexHull( )................................................................................................167 Clause CoordSys.........................................................................................................167 Fonction CoordSysName$( ) ......................................................................................171 Fonction CoordSysStringToEPSG( )............................................................................172 Fonction CoordSysStringToPRJ$( ) ............................................................................173 Fonction CoordSysStringToWKT$( )............................................................................174 Fonction Cos( ) ............................................................................................................174 Instruction Create Adornment......................................................................................175 Instruction Create Arc..................................................................................................179 Instruction Create ButtonPad.......................................................................................180 Instruction Create ButtonPad As Default.....................................................................184 Instruction Create ButtonPads As Default ..................................................................185 Instruction Create Cartographic Legend......................................................................185 Fonction CreateCircle( )...............................................................................................189 Instruction Create Collection........................................................................................191 Instruction Create Cutter..............................................................................................192 8 MapBasic 12.0 Instruction Create Designer Legend............................................................................193 Instruction Create Ellipse.............................................................................................200 Instruction Create Frame.............................................................................................201 Instruction Create Grid.................................................................................................203 Instruction Create Index...............................................................................................211 Instruction Create Legend............................................................................................211 Fonction CreateLine( ).................................................................................................212 Instruction Create Line.................................................................................................213 Instruction Create Map.................................................................................................214 Instruction Create Map3D............................................................................................215 Instruction Create Menu...............................................................................................217 Instruction Create Menu Bar........................................................................................222 Instruction Create Multipoint........................................................................................224 Instruction Create Object.............................................................................................225 Instruction Create Pline................................................................................................230 Fonction CreatePoint( )................................................................................................231 Instruction Create Point...............................................................................................233 Instruction Create PrismMap.......................................................................................234 Instruction Create Query..............................................................................................236 Instruction Create Ranges...........................................................................................236 Instruction Create Rect................................................................................................239 Instruction Create Redistricter.....................................................................................240 Instruction Create Region............................................................................................241 Instruction Create Report From Table..........................................................................243 Instruction Create RoundRect......................................................................................243 Instruction Create Styles..............................................................................................245 Instruction Create Table...............................................................................................246 Fonction CreateText( )..................................................................................................252 Instruction Create Text.................................................................................................253 Fonction CurDate( )......................................................................................................255 Fonction CurDateTime( )..............................................................................................255 Fonction CurrentBorderPen( ) .....................................................................................256 Fonction CurrentBrush( ).............................................................................................256 Fonction CurrentFont( )................................................................................................257 Fonction CurrentLinePen( )..........................................................................................258 Fonction CurrentPen( )................................................................................................259 Fonction CurrentSymbol( ) ..........................................................................................259 Fonction CurTime( ) ....................................................................................................260 Référence 9 Fonction DateWindow( )..............................................................................................261 Fonction Day( ) ............................................................................................................261 Instruction DDEExecute...............................................................................................262 Fonction DDEInitiate( ).................................................................................................263 Instruction DDEPoke....................................................................................................266 Fonction DDERequest$( )............................................................................................267 Instruction DDETerminate............................................................................................269 Instruction DDETerminateAll........................................................................................270 Instruction Declare Function........................................................................................270 Instruction Declare Method..........................................................................................272 Instruction Declare Sub................................................................................................274 Instruction Define.........................................................................................................276 Fonction DeformatNumber$( ).....................................................................................277 Instruction Delete.........................................................................................................278 Instruction Dialog.........................................................................................................279 Instruction Dialog Preserve..........................................................................................285 Instruction Dialog Remove...........................................................................................286 Instruction Dim.............................................................................................................287 Fonction Distance( ).....................................................................................................292 Instruction Do Case...End Case...................................................................................293 Instruction Do...Loop....................................................................................................294 Instruction Drop Index..................................................................................................296 Instruction Drop Map....................................................................................................297 Instruction Drop Table..................................................................................................298 Instruction End MapInfo...............................................................................................299 Instruction End Program..............................................................................................299 Procédure EndHandler................................................................................................300 Fonction EOF( )............................................................................................................301 Fonction EOT( )............................................................................................................301 Fonction EPSGToCoordSysString$( )..........................................................................302 Fonction Erase( )..........................................................................................................303 Fonction Err( )..............................................................................................................304 Instruction Error............................................................................................................305 Fonction Error$( ).........................................................................................................305 Instruction Exit Do........................................................................................................306 Instruction Exit For.......................................................................................................306 Instruction Exit Function...............................................................................................307 Instruction Exit Sub......................................................................................................308 10 MapBasic 12.0 Fonction Exp( ).............................................................................................................308 Instruction Export.........................................................................................................309 Fonction ExtractNodes( ).............................................................................................312 Instruction Farthest......................................................................................................313 Instruction Fetch...........................................................................................................315 Fonction FileAttr( )........................................................................................................317 Fonction FileExists( )....................................................................................................318 Fonction FileOpenDlg( )...............................................................................................319 Fonction FileSaveAsDlg( )...........................................................................................321 Instruction Find.............................................................................................................322 Instruction Find Using..................................................................................................326 Fonction Fix( )..............................................................................................................327 Clause Font..................................................................................................................328 Instruction For...Next....................................................................................................330 Procédure ForegroundTaskSwitchHandler..................................................................331 Fonction Format$( )......................................................................................................332 Fonction FormatDate$( )..............................................................................................335 Fonction FormatNumber$( ).........................................................................................336 Fonction FormatTime$( )..............................................................................................337 Instruction FME Refresh Table.....................................................................................338 Fonction FrontWindow( )..............................................................................................338 Instruction Function...End Function.............................................................................339 Instruction Geocode.....................................................................................................342 Fonction GeocodeInfo( )..............................................................................................346 Instruction Get..............................................................................................................349 Fonction GetCurrentPath$( )........................................................................................351 Fonction GetDate( ) .....................................................................................................352 Fonction GetFolderPath$( ) ........................................................................................352 Fonction GetGridCellValue( ).......................................................................................353 Fonction GetMetadata$( )............................................................................................354 Fonction GetPreferencePath$( ) .................................................................................355 Fonction GetSeamlessSheet( ) ...................................................................................356 Fonction GetTime() .....................................................................................................357 Instruction Global.........................................................................................................357 Instruction Goto............................................................................................................358 Instruction Graph..........................................................................................................359 Fonction GridTableInfo( ).............................................................................................360 Fonction GroupLayerInfo.............................................................................................361 Référence 11 Fonction HomeDirectory$( ) ........................................................................................362 Fonction HotlinkInfo( ) .................................................................................................363 Fonction Hour( )...........................................................................................................364 Instruction If...Then......................................................................................................365 Instruction Import.........................................................................................................366 Instruction Include........................................................................................................371 Instruction Input #.........................................................................................................372 Instruction Insert...........................................................................................................373 Fonction InStr( )...........................................................................................................374 Fonction Int( )...............................................................................................................375 Fonction IntersectNodes( )...........................................................................................376 Fonction IsGridCellNull( ).............................................................................................377 Fonction IsogramInfo( )................................................................................................377 Fonction IsPenWidthPixels( ).......................................................................................380 Instruction Kill...............................................................................................................381 Fonction LabelFindByID( )...........................................................................................381 Fonction LabelFindFirst( )............................................................................................383 Fonction LabelFindNext( )............................................................................................384 Fonction LabelInfo( )....................................................................................................384 Fonction LabelOverrideInfo( )......................................................................................387 Fonction LayerControlInfo( )........................................................................................392 Fonction LayerControlSelectionInfo( ).........................................................................393 Fonction LayerInfo( )....................................................................................................394 Fonction LayerListInfo( )..............................................................................................403 Fonction LayerStyleInfo( )............................................................................................404 Instruction Layout.........................................................................................................406 Fonction LCase$( ).......................................................................................................407 Fonction Left$( )...........................................................................................................408 Fonction LegendFrameInfo( )......................................................................................408 Fonction LegendInfo( ).................................................................................................411 Fonction LegendStyleInfo( ).........................................................................................412 Fonction LegendTextFrameInfo( )................................................................................414 Fonction Len( ).............................................................................................................415 Fonction LibraryServiceInfo( )......................................................................................416 Fonction Like( )............................................................................................................417 Instruction Line Input....................................................................................................418 Fonction LocateFile$( )................................................................................................419 Fonction LOF( )............................................................................................................420 12 MapBasic 12.0 Fonction Log( ).............................................................................................................421 Fonction LTrim$( )........................................................................................................422 Procédure Main............................................................................................................422 Fonction MakeBrush( ).................................................................................................424 Fonction MakeCustomSymbol( )..................................................................................424 Fonction MakeDateTime( )...........................................................................................426 Fonction MakeFont( ) ..................................................................................................426 Fonction MakeFontSymbol( ).......................................................................................427 Fonction MakePen( )....................................................................................................428 Fonction MakeSymbol( )..............................................................................................429 Instruction Map.............................................................................................................430 Fonction Map3DInfo( ).................................................................................................433 Fonction MapperInfo( ).................................................................................................436 Fonction Maximum( )...................................................................................................441 Fonction MBR( )...........................................................................................................442 InstructionMenu Bar.....................................................................................................443 Fonction MenuItemInfoByHandler( )............................................................................443 Fonction MenuItemInfoByID( ).....................................................................................445 Instruction Metadata.....................................................................................................445 Fonction MGRSToPoint( )............................................................................................448 Fonction Mid$( )...........................................................................................................449 Fonction MidByte$( )....................................................................................................450 Fonction Minimum( )....................................................................................................451 Fonction Minute( ) .......................................................................................................451 Fonction Month( ) ........................................................................................................452 Instruction Nearest.......................................................................................................453 Instruction Note............................................................................................................456 Fonction NumAllWindows( ).........................................................................................457 Fonction NumberToDate( ) ..........................................................................................457 Fonction NumberToDateTime( ) ..................................................................................458 Fonction NumberToTime( )..........................................................................................459 Fonction NumCols( )....................................................................................................459 Fonction NumTables( ).................................................................................................460 Fonction NumWindows( ).............................................................................................461 Fonction ObjectDistance( ) .........................................................................................461 Fonction ObjectGeography( ).......................................................................................462 Fonction ObjectInfo( )...................................................................................................464 Fonction ObjectLen( )...................................................................................................468 Référence 13 Fonction ObjectNodeHasM( )......................................................................................469 Fonction ObjectNodeHasZ( ).......................................................................................470 Fonction ObjectNodeM( ).............................................................................................472 Fonction ObjectNodeX( ).............................................................................................473 Fonction ObjectNodeY( ).............................................................................................474 Fonction ObjectNodeZ( )..............................................................................................475 Instruction Objects Check............................................................................................476 Instruction Objects Clean.............................................................................................477 Instruction Objects Combine........................................................................................479 Instruction Objects Disaggregate.................................................................................480 Instruction Objects Enclose.........................................................................................482 Instruction Objects Erase.............................................................................................483 Instruction Objects Intersect........................................................................................485 Instruction Objects Move.............................................................................................486 Instruction Objects Offset.............................................................................................488 Instruction Objects Overlay..........................................................................................489 Instruction Objects Pline..............................................................................................489 Instruction Objects Snap..............................................................................................491 Instruction Objects Split...............................................................................................493 Fonction Offset( ).........................................................................................................495 Fonction OffsetXY( ).....................................................................................................496 Instruction OnError.......................................................................................................497 Instruction Open Connection.......................................................................................498 Instruction Open File....................................................................................................500 Instruction Open Report...............................................................................................502 Instruction Open Table.................................................................................................502 Instruction Open Window.............................................................................................505 Fonction Overlap( )......................................................................................................506 Fonction OverlayNodes( )............................................................................................506 Instruction Pack Table..................................................................................................507 Fonction PathToDirectory$( ).......................................................................................508 Fonction PathToFileName$( )......................................................................................509 Fonction PathToTableName$( )...................................................................................510 Clause Pen...................................................................................................................511 Fonction PenWidthToPoints( ).....................................................................................513 Fonction Perimeter( )...................................................................................................514 Fonction PointsToPenWidth( ).....................................................................................515 Fonction PointToMGRS$( )..........................................................................................516 14 MapBasic 12.0 Fonction PointToUSNG$( )..........................................................................................517 Instruction Print............................................................................................................519 Instruction Print #.........................................................................................................520 Instruction PrintWin......................................................................................................520 Fonction PrismMapInfo( ).............................................................................................521 Fonction ProgramDirectory$( ).....................................................................................524 Instruction ProgressBar...............................................................................................525 Fonction Proper$( )......................................................................................................527 Fonction ProportionOverlap( )......................................................................................528 Instruction Put..............................................................................................................528 Instruction Randomize.................................................................................................529 Fonction RasterTableInfo( )..........................................................................................530 Fonction RegionInfo( ).................................................................................................532 Fonction ReadControlValue( )......................................................................................533 Instruction ReDim.........................................................................................................535 Instruction Register Table............................................................................................536 Instruction Relief Shade...............................................................................................544 Instruction Reload Symbols.........................................................................................544 Procédure RemoteMapGenHandler............................................................................545 Procédure RemoteMsgHandler...................................................................................546 Fonction RemoteQueryHandler( )................................................................................547 Instruction Remove Cartographic Frame.....................................................................548 Instruction Remove Designer Frame...........................................................................548 Instruction Remove Designer Text...............................................................................549 Instruction Remove Map..............................................................................................549 Instruction Rename File...............................................................................................551 Instruction Rename Table............................................................................................551 Instruction Reproject....................................................................................................552 Instruction Resume......................................................................................................552 Fonction RVB( )............................................................................................................553 Fonction Right$( ).........................................................................................................554 Fonction Rnd( )............................................................................................................555 Instruction Rollback......................................................................................................556 Fonction Rotate( )........................................................................................................557 Fonction RotateAtPoint( ).............................................................................................557 Fonction Round( )........................................................................................................558 Fonction RTrim$( ).......................................................................................................559 Instruction Run Application..........................................................................................560 Référence 15 Instruction Run Command...........................................................................................561 Instruction Run Menu Command.................................................................................562 Instruction Run Program..............................................................................................565 Instruction Save File.....................................................................................................566 Instruction Save MWS..................................................................................................567 Instruction Save Window.............................................................................................569 Instruction Save Workspace........................................................................................571 Fonction SearchInfo( )..................................................................................................571 Fonction SearchPoint( )...............................................................................................574 Fonction SearchRect( ) ...............................................................................................575 Fonction Second( ) ......................................................................................................576 Fonction Seek()............................................................................................................576 Instruction Seek...........................................................................................................577 Procédure SelChangedHandler...................................................................................577 Instruction Select..........................................................................................................579 Fonction SelectionInfo( )..............................................................................................588 Instruction Server Begin Transaction...........................................................................589 Instruction Server Bind Column...................................................................................590 Instruction Server Close...............................................................................................591 Fonction Server_ColumnInfo( )....................................................................................592 Instruction Server Commit...........................................................................................594 Fonction Server_Connect( ).........................................................................................594 Fonction Server_ConnectInfo( )...................................................................................602 Instruction Server Create Map.....................................................................................603 Instruction Server Create Table...................................................................................606 Instruction Server Create Workspace..........................................................................609 Instruction Server Disconnect......................................................................................610 Fonction Server_DriverInfo( ).......................................................................................610 Fonction Server_EOT( )...............................................................................................611 Fonction Server_Execute( ).........................................................................................612 Instruction Server Fetch...............................................................................................613 Fonction Server_GetODBCHConn( )...........................................................................615 Fonction Server_GetODBCHStmt( )............................................................................616 Instruction Server Link Table........................................................................................616 Fonction Server_NumCols( ).......................................................................................619 Fonction Server_NumDrivers( )...................................................................................620 Instruction Server Refresh...........................................................................................620 Instruction Server Remove Workspace.......................................................................621 16 MapBasic 12.0 Instruction Server Rollback..........................................................................................622 Instruction Server Set Map..........................................................................................622 Instruction Server Versioning.......................................................................................623 Instruction Server Workspace Merge...........................................................................625 Instruction Server Workspace Refresh........................................................................627 Fonction SessionInfo( )................................................................................................628 Instruction Set Adornment...........................................................................................629 Instruction Set Application Window..............................................................................633 Instruction Set Area Units............................................................................................633 Instruction Set Browse.................................................................................................635 Instruction Set Buffer Version.......................................................................................637 Instruction Set Cartographic Legend...........................................................................638 Instruction Set Combine Version..................................................................................639 Instruction Set Command Info.....................................................................................640 Instruction Set Connection Geocode...........................................................................641 Instruction Set Connection Isogram.............................................................................644 Instruction Set CoordSys.............................................................................................646 Instruction Set Date Window( )....................................................................................647 Instruction Set Datum Transform Version ...................................................................648 Instruction Set Designer Legend..................................................................................649 Instruction Set Digitizer................................................................................................650 Instruction Set Distance Units......................................................................................652 Instruction Set Drag Threshold....................................................................................653 Instruction Set Event Processing.................................................................................653 Instruction Set File Timeout.........................................................................................654 Instruction Set Format..................................................................................................655 Instruction Set Graph...................................................................................................656 Instruction Set Handler................................................................................................660 Instruction Set Layout..................................................................................................661 Instruction Set Legend.................................................................................................664 Instruction Set LibraryServiceInfo................................................................................667 Instruction Set Map......................................................................................................668 Instruction Set Map3D..................................................................................................710 Instruction Set Next Document....................................................................................712 Instruction Set Paper Units..........................................................................................713 Instruction Set Path......................................................................................................714 Instruction Set PrismMap.............................................................................................715 Instruction Set ProgressBars.......................................................................................716 Référence 17 Instruction Set Redistricter...........................................................................................717 Instruction Set Resolution............................................................................................719 Instruction Set Shade...................................................................................................720 Instruction Set Style.....................................................................................................721 Instruction Set Table.....................................................................................................722 Instruction Set Target...................................................................................................725 Instruction Set Window................................................................................................725 Fonction Sgn( ).............................................................................................................735 Instruction Shade.........................................................................................................736 Fonction Sin( )..............................................................................................................749 Fonction Space$( ).......................................................................................................749 Fonction SphericalArea( )............................................................................................750 Fonction SphericalConnectObjects( )..........................................................................751 Fonction SphericalDistance( )......................................................................................752 Fonction SphericalObjectDistance( )...........................................................................753 Fonction SphericalObjectLen( )...................................................................................753 Fonction SphericalOffset( )..........................................................................................754 Fonction SphericalOffsetXY( )......................................................................................755 Fonction SphericalPerimeter( )....................................................................................756 Fonction Sqr( ).............................................................................................................757 Instruction StatusBar....................................................................................................758 Instruction Stop............................................................................................................759 Fonction Str$( )............................................................................................................760 Fonction String$( )........................................................................................................761 Fonction StringCompare( )...........................................................................................762 Fonction StringCompareIntl( )......................................................................................763 Fonction StringToDate( )..............................................................................................763 Fonction StringToDateTime( ) .....................................................................................765 Fonction StringToTime( ) .............................................................................................765 Fonction StyleAttr( ) ....................................................................................................766 Fonction StyleOverrideInfo( ).......................................................................................769 Instruction Sub...End Sub............................................................................................771 Clause Symbol.............................................................................................................773 Fonction SystemInfo( ).................................................................................................776 Fonction TableInfo( )....................................................................................................779 Fonction TableListInfo( )...............................................................................................784 Fonction TableListSelectionInfo( )................................................................................785 Fonction/Tan( ).............................................................................................................786 18 MapBasic 12.0 Fonction TempFileName$( ).........................................................................................787 Instruction Terminate Application.................................................................................787 Fonction TextSize( ).....................................................................................................788 Fonction Time( )...........................................................................................................789 Fonction Timer( )..........................................................................................................789 Procédure ToolHandler................................................................................................790 Fonction TriggerControl( )............................................................................................792 Fonction TrueFileName$( )..........................................................................................792 Instruction Type............................................................................................................793 Fonction UBound( )......................................................................................................794 Fonction UCase$( )......................................................................................................795 Instruction UnDim.........................................................................................................796 Fonction UnitAbbr$( )...................................................................................................796 Fonction UnitName$( ).................................................................................................797 Instruction Unlink..........................................................................................................798 Instruction Update........................................................................................................799 Instruction Update Window..........................................................................................800 Clause URL..................................................................................................................800 Fonction USNGToPoint( )............................................................................................801 Fonction Val( )..............................................................................................................802 Fonction Weekday( )....................................................................................................803 Instruction WFS Refresh Table....................................................................................804 Fonction WKTToCoordSysString$( )............................................................................805 Instruction While...Wend..............................................................................................806 Procédure WinChangedHandler..................................................................................807 Procédure WinClosedHandler.....................................................................................808 Fonction WindowID( )...................................................................................................809 Fonction WindowInfo( )................................................................................................810 Procédure WinFocusChangedHandler........................................................................816 Instruction Write #........................................................................................................817 Fonction Year( )............................................................................................................818 Annexe A: Bibliothèques HTTP et FTP.................................................................821 Procédure Procédure Procédure Procédure Procédure Référence MICloseContent( ).........................................................................................823 MICloseFtpConnection( ).............................................................................823 MICloseFtpFileFind( )...................................................................................824 MICloseHttpConnection( )...........................................................................824 MICloseHttpFile( ).........................................................................................825 19 Procédure MICloseSession( ).........................................................................................825 Fonction MICreateSession( )..........................................................................................826 Fonction MICreateSessionFull( )....................................................................................826 Fonction MIErrorDlg( )....................................................................................................828 Fonction MIFindFtpFile( )................................................................................................830 Fonction MIFindNextFtpFile( )........................................................................................830 Fonction MIGetContent( )...............................................................................................831 Fonction MIGetContentBuffer( ).....................................................................................832 Fonction MIGetContentLen( ).........................................................................................832 Fonction MIGetContentString( ).....................................................................................833 Fonction MIGetContentToFile( ).....................................................................................833 Fonction MIGetContentType( ).......................................................................................834 Fonction MIGetCurrentFtpDirectory( )..........................................................................835 Fonction MIGetErrorCode( )...........................................................................................836 Fonction MIGetErrorMessage( ).....................................................................................836 Fonction MIGetFileURL( )...............................................................................................837 Fonction MIGetFtpConnection( )....................................................................................837 Fonction MIGetFtpFile( ).................................................................................................838 Fonction MIGetFtpFileFind( )..........................................................................................840 Procédure MIGetFtpFileName( ).....................................................................................841 Fonction MIGetHttpConnection( )..................................................................................841 Fonction MIIsFtpDirectory( )...........................................................................................842 Fonction MIIsFtpDots( )..................................................................................................843 Fonction MIOpenRequest( )............................................................................................843 Fonction MIOpenRequestFull( ).....................................................................................844 Fonction MIParseURL( )..................................................................................................846 Fonction MIPutFtpFile( ).................................................................................................847 Fonction MIQueryInfo( )..................................................................................................848 Fonction MIQueryInfoStatusCode( )..............................................................................849 Fonction MISaveContent( ).............................................................................................850 Fonction MISendRequest( )............................................................................................851 Fonction MISendSimpleRequest( )................................................................................852 Fonction MISetCurrentFtpDirectory( )...........................................................................852 Fonction MISetSessionTimeout( )..................................................................................853 Annexe B: Bibliothèque XML.................................................................................855 Procédure MIXmlAttributeListDestroy( ).......................................................................857 Fonction MIXmlDocumentCreate( )...............................................................................857 20 MapBasic 12.0 Procédure MIXmlDocumentDestroy( )...........................................................................858 Fonction MIXmlDocumentGetNamespaces( )...............................................................858 Fonction MIXmlDocumentGetRootNode( )...................................................................859 Fonction MIXmlDocumentLoad( )..................................................................................859 Fonction MIXmlDocumentLoadXML( )..........................................................................860 Fonction MIXmlDocumentLoadXMLString( )................................................................861 Fonction MIXmlDocumentSetProperty( )......................................................................862 Fonction MIXmlGetAttributeList( ).................................................................................863 Fonction MIXmlGetChildList( ).......................................................................................864 Fonction MIXmlGetNextAttribute( )...............................................................................864 Fonction MIXmlGetNextNode( )......................................................................................865 Procédure MIXmlNodeDestroy( )...................................................................................866 Fonction MIXmlNodeGetAttributeValue( ).....................................................................866 Fonction MIXmlNodeGetFirstChild( ).............................................................................867 Fonction MIXmlNodeGetName( )...................................................................................867 Fonction MIXmlNodeGetParent( )..................................................................................868 Fonction MIXmlNodeGetText( )......................................................................................869 Fonction MIXmlNodeGetValue( )....................................................................................869 Procédure MIXmlNodeListDestroy( ).............................................................................870 Procédure MIXmlSCDestroy( ).......................................................................................871 Fonction MIXmlSCGetLength( ).....................................................................................871 Fonction MIXmlSCGetNamespace( ).............................................................................872 Fonction MIXmlSelectNodes( ).......................................................................................872 Fonction MIXmlSelectSingleNode( )..............................................................................873 Annexe C: Tableau des codes de caractères.......................................................875 Tableau des codes de caractères - Définitions............................................................876 Annexe D: Résumé des Opérateurs......................................................................877 Opérateurs numériques..................................................................................................878 Opérateurs de comparaison...........................................................................................878 Opérateurs logiques........................................................................................................879 Opérateurs géographiques.............................................................................................879 Priorité .........................................................................................................................880 Conversions de type automatique.................................................................................881 Caractères génériques....................................................................................................882 Référence 21 Annexe E: Fichier de définitions MapBasic..........................................................883 Fichier MAPBASIC.DEF..................................................................................................884 22 MapBasic 12.0 Introduction à MapBasic Ce manuel décrit toutes les instructions et fonctions du langage de programmation de l'environnement de développement MapBasic. Pour connaître les concepts sur lesquels repose la programmation MapBasic ou sur la manière d'utiliser l'environnement de développement MapBasic, consultez le Guide de l'utilisateur MapBasic. Cette section aborde les rubriques suivantes : • • • • • • • • • • • Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 Présentation du langage . . . . . . . . . . . . . . . . . . . . . . . . . .24 Principes essentiels de MapBasic . . . . . . . . . . . . . . . . . .25 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 Utilisation de tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 Utilisation de fichiers (autres que des tables) . . . . . . . .30 Utilisation de cartes et d'objets graphiques . . . . . . . . . .31 Création de l'interface utilisateur . . . . . . . . . . . . . . . . . . .34 Communication avec d'autres applications . . . . . . . . . .36 Instructions et fonctions spéciales . . . . . . . . . . . . . . . . . .37 Obtention d'un support technique . . . . . . . . . . . . . . . . . .37 1 Conventions Conventions Ce guide utilise les conventions suivantes pour désigner des éléments spécifiques dans le texte : Convention If, Call, Map, Browse, Area Signification Les mots en gras dont la première lettre est en majuscule sont des mots-clés MapBasic. Dans ce guide, la première lettre de chaque mot-clé est en majuscule ; toutefois, lorsque vous écrivez des programmes MapBasic, vous pouvez entrer des mots-clés en majuscule, en minuscule ou les deux. Main, Pen, Object Les mots qui ne sont pas en gras et dont la première lettre est en majuscule sont généralement des noms de procédures spéciales ou des types de variable. table, handler, window_id Les mots en italique représentent les paramètres des instructions MapBasic. Lorsque vous créez une instruction MapBasic, vous devez fournir une expression adéquate pour chaque paramètre. [ window_id ], [ Interactive ] Les mots-clés ou les paramètres qui apparaissent entre crochets sont facultatifs. { On | Off } Lorsqu'une expression syntaxique apparaît entre accolades, ces dernières contiennent une liste de mots-clés ou de paramètres, séparés par une barre verticale ( | ). Vous devez choisir l'une des options répertoriées. Ainsi, dans l'exemple présenté à gauche ({ On | Off }), vous devez choisir On ou Off. "Note "Hello,world!" Des exemples de programmes réels sont présentés dans la police Courier. Présentation du langage Les pages suivantes offrent une présentation du langage MapBasic. Des descriptions de tâches apparaissent à gauche ; les noms d'instruction et de fonction correspondants apparaissent en gras à droite. Les noms de fonction sont suivis de parenthèses ( ). 24 MapBasic 12.0 Chapitre 1: Introduction à MapBasic Principes essentiels de MapBasic Variables Déclarer des variables locales ou globales Dim,Global Redimensionner des variables de tableau ReDim, UBound( ), UnDim Déclarer une structure de données personnalisée Type Boucles et branches Boucles For...Next, Exit For, Do...Loop, Exit Do, While...Wend Branches If...Then, Do Case, GoTo Autre contrôle de flux End Program, Terminate Application, End MapInfo Sortie et impression Imprimer le contenu d'une fenêtre PrintWin Imprimer du texte dans une fenêtre Message Print Paramétrer une fenêtre Mise en page Layout, Create Frame, Set Window Exporter une fenêtre dans un fichier Save Window Contrôler l'imprimante Set Window, Window Info( ) Procédures (Main et Sub) Définir une procédure Declare Sub, Sub...End Sub Appeler une procédure Call Fermer une procédure Exit Sub Procédure principale Main Référence 25 Gestion des erreurs Gestion des erreurs Paramétrer un gestionnaire d'erreurs OnError Renvoyer des informations sur l'erreur actuelle Err( ), Error$( ) Renvoyer à partir du gestionnaire d'erreurs Resume Simuler une erreur Error Fonctions Fonctions personnalisées Définir une fonction personnalisée Declare Function, Function...End Function Fermer une fonction Exit Function Fonctions de conversion de données Convertir des chaînes en codes Asc( ) Convertir des codes en chaînes Chr$( ) Convertir des chaînes en nombres Val( ) Convertir des nombres en chaînes Str$( ), Format$( ) Convertir un nombre ou une chaîne en date NumberToDate( ), StringToDate( ) Convertir en une année à 2 chiffres Set Date Window, DateWindow( ) Convertir des types d'objet ConvertToRegion( ), ConvertToPline( ) Convertir des étiquettes en texte LabelInfo( ) Convertir un objet point en coordonnée du système PointToMGRS$( ) de référence de carroyage militaire Convertir une coordonnée du système de référence MGRSToPoint( ) de carroyage militaire en objet point Convertir un objet point en coordonnée de la grille PointToUSNG$(obj, datumid) nationale US (USNG) Convertir une coordonnée de la grille nationale US USNGToPoint(string) (USNG) en objet point 26 MapBasic 12.0 Chapitre 1: Introduction à MapBasic Fonctions de date et d'heure Obtenir la date du jour CurDate( ) Extraire une partie d'une valeur Date Day( ), Month( ), Weekday( ), Year( ) Obtenir l'heure en cours sous forme de chaîne formatée Time( ) Créer une date à partir d'un nombre ou d'une chaîne NumberToDate( ), StringToDate( ) Obtenir la valeur Time ou DateTime en cours CurTime( ), CurDateTime( ) Obtenir la valeur Date ou Time d'une valeur DateTime GetDate( ), GetTime( ) Créer une valeur DateTime ou Time à partir d'un nombre NumberToDateTime( ), NumberToTime( ) Créer une valeur DateTime à partir de deux valeurs MakeDateTime( ) Date et Time individuelles Créer une valeur DateTime ou Time à partir d'une StringToDateTime( ), StringToTime( ) chaîne Créer la représentation sous forme de chaîne d'une FormatDate$( ), FormatTime$( ) valeur Date ou Time Extraire une partie d'une valeur Time Hour( ), Minute( ), Second( ) Définir et obtenir la règle d'une entrée d'année à deux chiffres Set Date Window( ), DateWindow( ) Fonctions mathématiques Fonctions trigonométriques Cos( ), Sin( ), Tan( ), Acos( ), Asin( ), Atn( ) Fonctions géographiques Area( ), Perimeter( ), Distance( ), ObjectLen( ), CartesianArea( ), CartesianPerimeter( ), CartesianDistance( ), CartesianObjectLen( ), SphericalArea( ), SphericalPerimeter( ), SphericalDistance( ), SphericalObjectLen( ) Nombres aléatoires Randomize, Rnd( ) Fonctions liées aux signes Abs( ), Sgn( ) Fractions de troncature Fix( ), Int( ), Round( ) Autres fonctions mathématiques Exp( ), Log( ), Minimum( ), Maximum( ), Sqr( ) Référence 27 Fonctions chaîne Fonctions chaîne Majuscule/minuscule UCase$( ), LCase$( ), Proper$( ) Trouver une sous-chaîne InStr( ) Extraire une partie d'une chaîne Left$( ), Right$( ), Mid$( ), MidByte$( ) Supprimer les espaces d'une chaîne LTrim$( ), RTrim$( ) Formater les nombres en chaînes Format$( ), Str$( ), Set Format, FormatNumber$( ), DeformatNumber$( ) Déterminer la longueur d'une chaîne Len( ) Convertir les codes de caractères Chr$( ), Asc( ) Comparer des chaînes Like( ), StringCompare( ), StringCompareIntl( ) Répéter une séquence de chaîne Space$( ), String$( ) Renvoyer un nom d'unité UnitAbbr$( ), UnitName$( ) Convertir un objet point en coordonnée du système PointToMGRS$( ) de référence de carroyage militaire Convertir une coordonnée du système de référence MGRSToPoint( ) de carroyage militaire en objet point Convertir une chaîne EPSG en clause CoordSys EPSGToCoordSysString$( ) Convertir un objet point en coordonnée de la grille PointToUSNG$(obj, datumid) nationale US (USNG) Convertir une coordonnée de la grille nationale US USNGToPoint(string) (USNG) en objet point Utilisation de tables Création et modification des tables 28 Ouvrir une table existante Open Table Fermer au moins une table Close Table, Close All Créer une table vide Create Table Transformer un fichier en table Register Table Importer/exporter des tables/fichiers Import, Export MapBasic 12.0 Chapitre 1: Introduction à MapBasic Modifier la structure d'une table Alter Table, Add Column, Create Index, Drop Index, Create Map, Drop Map Créer un fichier Crystal Reports Create Report From Table Charger un fichier Crystal Reports Open Report Ajouter, modifier, supprimer des lignes Insert, Update, Delete Compacter une table Pack table Contrôler les paramètres d'une table Set Table Enregistrer les modifications récentes Commit Table Supprimer les modifications récentes Rollback Renommer une table Rename Table Supprimer une table Drop Table Requêtes dans les tables Positionner le curseur sur une ligne Fetch, EOT( ) Sélectionner des données (en utilisant Selection) Select, SelectionInfo( ) Trouver des objets carte par adresse Find, Find Using, CommandInfo( ) Trouver des objets carte à un emplacement SearchPoint( ), SearchRect( ), SearchInfo( ) Obtenir des informations de table NumTables( ), TableInfo( ) Obtenir des informations de colonne NumCols( ), ColumnInfo( ) Créer une table de requête dans la fenêtre Données Create Query Interroger les métadonnées d'une table GetMetadata$( ), Metadata Interroger des tables logiques TableInfo( ), GetSeamlessSheet( ) Tables de requête raster ou grille : fonction RasterTableInfo( ), GridTableInfo( ), fonction GetGridCellValue( ), fonction IsGridCellNull( ), fonction getcurrentpathfunction( ) Utilisation de données distantes Créer une table Server Create Table Communiquer avec le serveur de données Server_Connect( ), Server_ConnectInfo( ) Référence 29 Utilisation de fichiers (autres que des tables) Commencer l'utilisation d'un serveur distant Server Begin Transaction Affecter un stockage local Server Bind Column Obtenir des informations de colonne Server_ColumnInfo( ), Server_NumCols( ) Envoyer une instruction SQL Server_Execute( ) Positionner le curseur sur une ligne Server Fetch, Server_EOT( ) Enregistrer des modifications Server Commit Annuler des changements Server Rollback Libérer les ressources distantes Server Close Rendre des données distantes cartographiables Server Create Map Modifier les styles d'objet Server Set Map Synchroniser une table liée Server Refresh Créer une table liée Server Link Table Rapatrier une table liée Unlink Se déconnecter d'un serveur Server Disconnect Récupérer des informations sur le pilote Server_DriverInfo( ), Server_NumDrivers( ) Obtenir le handle de connexion ODBC Server_GetODBCHConn( ) Obtenir le handle d'instruction ODBC Server_GetODBCHStmt( ) Définir les styles des objets Server Create Style Utilisation de fichiers (autres que des tables) Entrée/sortie de fichier 30 Ouvrir ou créer un fichier Open File Fermer un fichier Close File Supprimer un fichier Kill Renommer un fichier Rename File Copier un fichier Save File Lire dans un fichier Get, Seek, Input #, Line Input Écrire dans un fichier Put, Print #, Write # MapBasic 12.0 Chapitre 1: Introduction à MapBasic Déterminer le statut d'un fichier EOF( ), LOF( ), Seek( ), FileAttr( ), FileExists( ) Transformer un fichier en table Register Table Essayer à nouveau lors d'une erreur de partage Set File Timeout Noms de fichiers et de répertoires Renvoyer les répertoires système ProgramDirectory$( ), HomeDirectory$( ), ApplicationDirectory$( ) Extraire une partie d'un nom de fichier PathToTableName$( ), PathToDirectory$( ), PathToFileName$( ) Renvoyer un nom de fichier complet TrueFileName$( ) Laisser l'utilisateur choisir un fichier FileOpenDlg( ), FileSaveAsDlg( ) Renvoyer un nom de fichier temporaire TempFileName$( ) Localiser des fichiers LocateFile$( ), GetFolderPath$( ) Utilisation de cartes et d'objets graphiques Création d'objets carte Instructions de création Create Arc, Create Ellipse, Create Frame, Create Line, Create Object, Create PLine, Create Point, Create Rect, Create Region, Create RoundRect, Create Text, AutoLabel, Create Multipoint, Create Collection Fonctions de création CreateCircle( ), CreateLine( ), CreatePoint( ), CreateText( ) Opérations avancées Create Object, Buffer( ), CartesianBuffer( ), CartesianOffset( ), CartesianOffsetXY( ), ConvexHull( ), Offset( ), OffsetXY( ), SphericalOffset( ), SphericalOffsetXY( ) Stocker un objet dans une table Insert, Update Créer des régions Objects Enclose Référence 31 Modification des objets carte Modification des objets carte Modifier un attribut d'objet Alter Object Modifier le type d'objet ConvertToRegion( ), ConvertToPLine( ) Décaler des objets Objects Offset, Objects Move Définir la cible de modification Set target Supprimer une partie d'un objet CreateCutter, Objects Erase, Erase( ), Objects Intersect, Overlap( ) Fusionner des objets Objects Combine, Combine( ), Create Object Pivoter des objets Rotate( ), RotateAtPoint( ) Découper des objets Objects Pline, Objects Split Ajouter des nœuds aux intersections Objects Overlay, OverlayNodes( ) Contrôler la résolution d'un objet Set Resolution Stocker un objet dans une table Insert, Update Rechercher des données incorrectes dans des objets Objects Check Traitement d'objet Objects Disaggregate, Objects Snap, Objects Clean Requête dans des objets carte 32 Renvoyer des valeurs calculées Area( ), Perimeter( ), Distance( ), ObjectLen( ), Overlap( ), AreaOverlap( ), ProportionOverlap( ) Renvoyer des valeurs de coordonnées ObjectGeography( ), MBR( ), ObjectNodeX( ), ObjectNodeY( ), ObjectNodeZ( ), Centroid( ), CentroidX( ), CentroidY( ), ExtractNodes( ), IntersectNodes( ) Renvoyer des paramètres pour les unités de coordonnées, de distance, de surface et papier SessionInfo( ) Configurer des unités de mesure Set Area Units, Set Distance Units, Set Paper Units, UnitAbbr$( ), UnitName$( ) Configurer un système de coordonnées Set CoordSys Renvoyer des paramètres de style ObjectInfo( ) MapBasic 12.0 Chapitre 1: Introduction à MapBasic Interroger les étiquettes d'une couche de carte LabelFindByID( ), LabelFindFirst( ), LabelFindNext( ), Labelinfo( ) Utilisation de styles des objets Renvoyer les styles actuels CurrentPen( ), CurrentBorderPen( ), CurrentBrush( ), CurrentFont( ), CurrentLinePen( ), CurrentSymbol( ), Set Style, TextSize( ) Renvoyer un style en partie Fonction LayerStyleInfo( ), StyleAttr( ) Créer des valeurs de style MakePen( ), MakeBrush( ), MakeFont( ), MakeSymbol( ), MakeCustomSymbol( ), MakeFontSymbol( ), Set Style, RGB( ) Interroger le style d'un objet ObjectInfo( ) Modifier le style d'un objet Alter Object Recharger des styles de symboles Reload Symbols Clauses de style Pen clause, Brush clause, Symbol clause, Font clause Utilisation de fenêtres Carte Ouvrir une fenêtre Carte Map Créer/modifier des vues 3D Create Map3D, Set Map3D, Map3DInfo( ), Create PrismMap, Set PrismMap, PrismMapInfo( ) Ajouter une couche à une carte Add Map Supprimer une couche de carte Remove Map Étiqueter les objets d'une couche AutoLabel Interroger les paramètres d'une carte MapperInfo( ), Fonction LabelOverrideInfo( ), LayerInfo( ), Fonction StyleOverrideInfo( ) Modifier les paramètres d'une carte Set Map Créer ou modifier des couches thématiques Shade, Set Shade, Create Ranges, Create Styles, Create Grid, Relief Shade Interroger les étiquettes d'une couche de carte LabelFindByID( ), LabelFindFirst( ), LabelFindNext( ), Labelinfo( ), LabelOverrideInfo( ) Référence 33 Utilisation de fenêtres de conception de légende Utilisation de fenêtres de conception de légende Créer une légende cartographique Create Designer Legend Actualiser et définir l'orientation d'une fenêtre Set Designer Legend Créer, modifier et supprimer un cadre de légende Add Designer Frame, Alter Designer Frame, Remove Designer Frame Utilisation de fenêtres Légende cartographique La fenêtre Légende cartographique est antérieure la fenêtre de conception de légende créée dans la version 11.5. La fenêtre Légende cartographique permet aux utilisateurs qui ont créé des cartes et des légendes dans la version MapInfo Professional 11.5 précédente de conserver l'aspect et l'apparence de ces légendes. Pour les nouveaux projets, nous vous recommandons vivement d'utiliser la fenêtre de conception de légende pour garantir la compatibilité de vos légendes de carte avec les versions futures de MapInfo Professional. Créer une légende de carte et une légende de carte Create Cartographic Legend, Create Legend thématique Actualiser et définir les propriétés d'une fenêtre Set Cartographic Legend Créer, modifier et supprimer un cadre de légende Add Cartographic Frame, Alter Cartographic Frame, Remove Cartographic Frame Création de l'interface utilisateur ButtonPads (barres d'outils) 34 Créer un ButtonPad Create ButtonPad Modifier un ButtonPad Alter ButtonPad Modifier un bouton Alter Button Interroger le statut d'une barre ButtonPadInfo( ) Réagir à l'utilisation d'un bouton CommandInfo( ) Restaurer les barres standard Create ButtonPad As Default, Create ButtonPads As Default MapBasic 12.0 Chapitre 1: Introduction à MapBasic Boîtes de dialogue Afficher une boîte de dialogue standard Ask( ), Note, ProgressBar, FileOpenDlg( ), FileSaveAsDlg( ), GetSeamlessSheet( ) Afficher une boîte de dialogue personnalisée Dialog Opérations de gestionnaire de boîtes de dialogue Alter Control, TriggerControl( ), ReadControlValue( ), Dialog Preserve, Dialog Remove Déterminer si l'utilisateur a cliqué sur OK CommandInfo(CMD_INFO_DLG_OK) Désactiver les barres de progression Set ProgressBars Modifier une boîte de dialogue standard MapInfo Professional Alter MapInfoDialog Menus Définir un nouveau menu Create Menu Redéfinir la barre de menus Create Menu Bar Modifier un menu Alter Menu, Alter Menu Item Modifier la barre de menus Alter Menu Bar, Menu Bar Appeler une commande de menu Run Menu Command Interroger l'état d'une option de menu MenuItemInfoByHandler( ), MenuItemInfoByID( ) Fenêtres Afficher ou masquer une fenêtre Open Window, Close Window, Set Window Ouvrir une nouvelle fenêtre Map, Browse, Graph, Layout, Create Redistricter, Create Legend, Create Cartographic Legend, LegendFrameInfo Déterminer l'identifiant d'une fenêtre FrontWindow( ), WindowID( ) Modifier une fenêtre existante Set Map, Shade, Add Map, Remove Map, Set Browse, Set Graph, Set Layout, Create Frame, Set Legend, Set Cartographic Legend, Set Redistricter, StatusBar, Alter Cartographic Frame, Add Cartographic Frame, Remove Cartographic Frame Référence 35 Gestionnaires d'événements système Renvoyer les paramètres d'une fenêtre WindowInfo( ), MapperInfo( ), LayerInfo( ) Imprimer le contenu d'une fenêtre PrintWin Contrôler la mise à jour d'une fenêtre Set Event Processing, Update Window, Control DocumentWindow clause Nombre total de fenêtres NumWindows( ), NumAllWindows( ) Gestionnaires d'événements système Réagir à une sélection SelChangedHandler Réagir à la fermeture d'une fenêtre WinClosedHandler Réagir aux modifications apportées à une carte WinChangedHandler Réagir à la mise au point d'une fenêtre WinFocusChangedHandler Réagir à une requête DDE RemoteMsgHandler, RemoteQueryHandler( ) Réagir à la méthode OLE Automation RemoteMapGenHandler Fournir un outil personnalisé ToolHandler Réagir à la fermeture d'une application EndHandler Réagir à l'obtention ou la perte de ciblage MapInfo ForegroundTaskSwitchHandler Professional Désactiver les gestionnaires d'événements Set Handler Communication avec d'autres applications DDE (Dynamic Data Exchange, Windows uniquement) 36 Démarrer une conversation DDE DDEInitiate( ) Envoyer une commande DDE DDEExecute Envoyer une valeur via DDE DDEPoke Récupérer une valeur via DDE DDERequest$( ) Fermer une conversation DDE DDETerminate, DDETerminateAll Répondre à une requête RemoteMsgHandler, RemoteQueryHandler( ), CommandInfo(CMD_INFO_MSG) MapBasic 12.0 Chapitre 1: Introduction à MapBasic Cartographie intégrée Définir une fenêtre parent de MapInfo Professional Set Application Window Définir un parent de fenêtre Carte Set Next Document Créer une fenêtre Légende Create Legend Instructions et fonctions spéciales Définir le nom et la liste d'arguments d'une méthode/fonction dans un assemblage .Net Declare Method( ) Lancer un autre programme Run Program Renvoyer des informations concernant le système SystemInfo( ) Exécuter une chaîne en tant que commande interprétée Run Command Enregistrer un fichier de document Save Workspace Lancer un fichier de document ou un fichier MBX Run Application Configurer une tablette à numériser Set Digitizer Envoyer un son dans le haut-parleur Beep Définir les données devant être lues par CommandInfo Set Command Info Définir la durée du délai pour faire glisser un objet Set Drag Threshold Obtention d'un support technique Pitney Bowes Software Inc. offre une période de support technique gratuite pour tout achat et toute mise à niveau de logiciels, afin de vous permettre d'être productif dès le début. À l'issue de la période gratuite, Pitney Bowes Software Inc. offre une grande variété de services de support technique étendu pour les particuliers, les entreprises et les utilisateurs professionnels. Le support technique est là pour vous aider et votre appel est important. Cette section répertorie les informations que vous devez fournir lorsque vous contactez votre centre de support technique local. Elle explique également certaines procédures de support technique de sorte que vous sachiez à quoi vous attendre quant au traitement et à la résolution de votre problème spécifique. Lorsque vous contactez le support technique, n'oubliez pas de fournir votre numéro de série, de partenaire ou de contrat. Référence 37 Contacter le support technique Contacter le support technique Pour bénéficier du support technique, vous devez enregistrer votre produit. Vous pouvez le faire très facilement au cours de l'installation ou à tout moment pendant les heures de bureau, en contactant directement le service à la clientèle. Le support technique complet de MapBasic est fourni pour la version en cours, ainsi que pour les deux versions précédentes. Coordonnées du support technique Des options de support technique étendu sont disponibles auprès de chacun de nos centres de support technique dans les régions États-Unis, Europe/Moyen-Orient/Afrique et Asie-Pacifique. Pour contacter le centre le plus proche, reportez-vous à la section de contact du support technique sur notre site Web : www.mapinfo.com/support Système de gestion en ligne des cas du support technique Le système de gestion en ligne des cas du support technique offre un autre moyen de consigner et de gérer les cas auprès de notre centre de support technique. Si vous n'avez pas d'ID utilisateur, vous devez vous enregistrer lorsque vous accédez pour la première fois au site. http://go.pbinsight.com/online-case-management Avant d'appeler Avant de contacter le support technique, préparez les informations suivantes : 1. Numéro de série : pour bénéficier du support technique, vous devez disposer d'un numéro de série enregistré. 2. Nom et entreprise : la personne qui appelle doit être le contact mentionné sur le contrat de support technique. 3. Version du produit pour lequel vous demandez de l'aide. 4. Nom du système d'exploitation et version. 5. Brève explication du problème. Les détails qui peuvent s'avérer utiles sont les suivants : • Les messages d'erreur • La nature du problème et le contexte dans lequel il se produit • La fréquence : le problème revient-il régulièrement ou de façon imprévisible ? Temps de réponse attendu La plupart des problèmes peuvent être résolus lors de votre premier appel. Si ce n'est pas possible, le support technique vous fera parvenir une réponse avant la fin de la journée ouvrable. Un représentant transmettra un état de l'avancement chaque jour ouvrable jusqu'à ce que le problème soit résolu. 38 MapBasic 12.0 Chapitre 1: Introduction à MapBasic Les demandes de support technique transmises par e-mail ou via le système de suivi en ligne sont traitées de la même façon que les demandes téléphoniques. Toutefois, il faut compter inévitablement un délai de quelques heures, le temps que le message soit transmis et pris en compte. Défaillances du logiciel S'il s'avère que le problème provient d'un défaut du logiciel, votre représentant le consignera dans la base de données des bugs de Pitney Bowes Software Inc. et vous fournira un numéro d'incident que vous pourrez utiliser pour suivre l'avancement de sa résolution. Les futurs correctifs et mises à niveau résolvent bon nombre des bugs consignés du produit. Autres ressources Base de données des archives MapInfo-L Pitney Bowes Software Inc. Corporation, en association avec Bill Thoen, fournit une base de données des articles de MapInfo-L, consultable sur le Web. Ces articles sont actuellement organisés par fils de discussion et par date. Avis de non-responsabilité : bien que Corporation fournisse cette base de données en tant que service auprès de sa communauté d'utilisateurs, l'administration de la liste de diffusion MapInfo-L est assurée par Bill Thoen. Pour plus d'informations sur MapInfo-L, consultez la page Web disponible à l'adresse http://groups.google.com/group/mapinfo-l?hl=en. Référence 39 Nouveautés et améliorations des fonctions et instructions de MapBasic Voici plusieurs nouvelles instructions et fonctions ajoutées à l'API MapBasic qui vous aident à travailler avec le positionnement des étiquettes et l'habillage de la barre d'échelle. Cette section aborde les rubriques suivantes : • Nouvelles fonctions et instructions de MapBasic . . . . . .42 • Ajouts aux fonctions et instructions existantes . . . . . . .42 2 Nouvelles fonctions et instructions de MapBasic Nouvelles fonctions et instructions de MapBasic Ce qui suit est une nouvelle fonction de cette version : • Instruction Add Designer Text - ajoute des cadres de texte à une fenêtre de conception de légende existante. • Fonction AdornmentInfo( ) - renvoie des informations sur les habillages comme les barres d'échelle. • Instruction Alter Designer Text - modifie le texte dans un cadre de texte et la position de celui-ci dans une fenêtre de conception de légende. • Fonction LegendTextFrameInfo( ) - renvoie des informations sur un cadre de texte dans une fenêtre de conception de légende. • Instruction Remove Designer Text - supprime les cadres de texte d'une fenêtre de conception de légende. Ajouts aux fonctions et instructions existantes Cette version de MapBasic ajoute des fonctionnalités aux fonctions et instructions suivantes : Instruction Create Adornment et instruction Set Adornment Les instructions Create Adornment et Set Adornment disposent de deux nouvelles clauses, Background Brush et Background Pen, qui indiquent la trame et la bordure de remplissage de l'arrière-plan lors de la création ou modification d'une barre d'échelle. [ Background [ Brush ... ] [Pen ... ] ] En outre, la clause de barre d'échelle possède un nouveau jeton facultatif de contrôle de mise à l'échelle automatique : [ Auto [ { On | Off } ] ] Instruction Create Designer Legend L'instruction Create Designer Legend comporte une nouvelle clause, Legend Text Frame, qui crée un cadre de texte dans la fenêtre de conception de légende. Vous pouvez créer un cadre de texte pour ajouter un titre de légende, un sous-titre ou un texte descriptif (des informations sur le copyright par exemple). [ Legend Text Frame [ Text { frame_text [ Font... ] } [ Position ( x, y ) [ Units paper_units ] ] ] ] Fonction LabelInfo( ) La fonction LabelInfo( ) dispose d'un code attribute mis à jour. 42 MapBasic 12.0 Chapitre 2: Nouveautés et améliorations des fonctions et instructions de MapBasic Code attribute ID Valeur renvoyée par Labelinfo( ) LABEL_INFO_POSITION 2 Valeur entière comprise entre 0 et 8, indiquant la position de l'étiquette par rapport à son emplacement d'ancrage. La valeur renvoyée correspond à l'un des codes suivants : • • • • • • • • • • LAYER_INFO_LBL_POS_AUTO (-1), LAYER_INFO_LBL_POS_CC (0), LAYER_INFO_LBL_POS_TL (1), LAYER_INFO_LBL_POS_TC (2), LAYER_INFO_LBL_POS_TR (3), LAYER_INFO_LBL_POS_CL (4), LAYER_INFO_LBL_POS_CR (5), LAYER_INFO_LBL_POS_BL (6), LAYER_INFO_LBL_POS_BC (7), LAYER_INFO_LBL_POS_BR (8). Par exemple, si l'étiquette est située dans la zone inférieure droite du point d'ancrage, sa position est de 8. Si l'étiquette est centrée horizontalement et verticalement au-dessus de son point d'ancrage, sa position est de 0. Si l'étiquette est positionnée automatiquement, sa position est -1. Fonction LabelOverrideInfo( ) La fonction LabelOverrideInfo( ) inclut désormais de nouveaux codes attribute. Code attribute ID Valeur renvoyée par LabelOverrideInfo( ) LBL_OVR_INFO_AUTO_POSITION 21 Valeur logique : TRUE si l'option d'étiquetage de région avancé de remplacement des paramètres d'étiquetage est activée ou désactivée. LBL_OVR_INFO_AUTO_SIZES 22 Valeur entière : indique le nombre de tailles de police qui peuvent être utilisées lorsque vous tentez d'insérer les étiquettes dans des régions lors du remplacement des paramètres d'étiquetage. Le nombre de polices peut varier de 1 à 10. Une valeur 0 (zéro) indique que la valeur par défaut est choisie, pour que MapInfo Professional définisse le nombre de polices à utiliser. LBL_OVR_INFO_SUPPRESS_IF_NO_FIT 23 Valeur logique : TRUE si l'option d'étiquetage est On. Si, après l'application d'incréments descendants de la taille de police facultative, l'étiquette est encore plus grande que la région, alors l'étiquette n'est pas dessinée. Référence 43 Ajouts aux fonctions et instructions existantes Code attribute ID Valeur renvoyée par LabelOverrideInfo( ) LBL_OVR_INFO_AUTO_SIZE_STEP 24 Valeur entière : définit le pourcentage global de l'incrément de taille de police utilisé pour redimensionner automatiquement la police des étiquettes pour adapter une étiquette lors du remplacement des paramètres d'étiquetage. Si la taille de la police originale est de 24 pts et que l'incrément correspond à 66, la police la plus petite sera donc 66 % plus petite que 24 pts (la plus petite police est de 8 pts). LBL_OVR_INFO_CURVED_BEST_POSITION 25 Valeur logique : indique si le positionnement automatique des étiquettes alignées est activé ou désactivé. LBL_OVR_INFO_CURVED_FALLBACK 26 Valeur logique : indique si l'option de tolérance de création d'une étiquette pivotée est activée ou désactivée. LBL_OVR_INFO_USE_ABBREVIATION 27 Valeur logique : indique si l'utilisation des abréviations est activée ou désactivée. LBL_OVR_INFO_ABBREVIATION_EXPR 28 Renvoie l'expression de champ utilisée pour les étiquettes abrégées. LBL_OVR_INFO_AUTO_CALLOUT Valeur logique : TRUE si l'option d'étiquetage de région avancé du rendu de renvoi du remplacement des paramètres d'étiquetage est activée. 29 Fonction LayerInfo( ) La fonction LayerInfo( ) inclut désormais de nouveaux codes attribute. Code attribute 44 ID Valeur renvoyée par LayerInfo( ) : LAYER_INFO_LBL_AUTO_POSITION 54 Valeur logique : indique si l'option d'étiquetage de région avancé de la couche est activée ou désactivée. LAYER_INFO_LBL_AUTO_SIZES 55 Valeur logique : définit le nombre de tailles de polices qui peuvent être utilisées lors d'une tentative d'ajustement des étiquettes dans les régions. Le nombre de polices peut varier de 1 à 10. Une valeur 0 (zéro) indique que la valeur par défaut est choisie, pour que MapInfo Professional définisse le nombre de polices à utiliser. LAYER_INFO_LBL_SUPPRESS_IF_NO_FIT 56 Valeur logique : indique si cette option d'étiquetage est Activée ou Désactivée. Si, après l'application d'incréments descendants de la taille de police facultative, l'étiquette est encore plus grande que la région, alors l'étiquette n'est pas dessinée. LAYER_INFO_LBL_AUTO_SIZE_STEP 57 Valeur d'entier court : définit le pourcentage global de l'incrément de taille de police utilisé pour redimensionner automatiquement la police de l'étiquette en vue de son MapBasic 12.0 Chapitre 2: Nouveautés et améliorations des fonctions et instructions de MapBasic Code attribute ID Valeur renvoyée par LayerInfo( ) : ajustement. Si la taille de la police originale est de 24 pts et que l'incrément correspond à 66, la police la plus petite sera donc 66 % plus petite que 24 pts (la plus petite police est de 8 pts). LAYER_INFO_LBL_CURVED_BEST_POSITION 58 Valeur logique : indique si le positionnement automatique des étiquettes alignées est activé ou désactivé. LAYER_INFO_LBL_CURVED_FALLBACK 59 Valeur logique : indique si l'option de tolérance de création d'une étiquette pivotée est activée ou désactivée. LAYER_INFO_LBL_USE_ABBREVIATION 60 Valeur logique : indique si l'utilisation des abréviations est activée ou désactivée. LAYER_INFO_ABBREVIATION_EXPR 61 Renvoie l'expression de champ utilisée pour les étiquettes abrégées. LAYER_INFO_LBL_AUTO_CALLOUT 62 Valeur logique : indique si l'option d'étiquetage de région avancé du rendu de renvoi de la couche est activée ou désactivée. LAYER_INFO_LBL_ORDER Valeur d'entier court : ordre d'étiquetage de la couche. 63 Fonction LegendFrameInfo( ) La fonction LegendFrameInfo( ) inclut désormais de nouveaux codes attribute. Code attribute ID Valeur renvoyée par LegendFrameInfo( ) : FRAME_INFO_LINE_SAMPLE_WIDTH 19 Renvoie la largeur d'un exemple de ligne en unités papier MapBasic. Renvoie -1 pour la fenêtre Légende cartographique. FRAME_INFO_REGION_SAMPLE_WIDTH 20 Renvoie la largeur d'un exemple de région en unités papier MapBasic. Renvoie -1 pour la fenêtre Légende cartographique. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. FRAME_INFO_REGION_SAMPLE_HEIGHT 21 Renvoie la hauteur d'un exemple de région en unités papier MapBasic. Renvoie -1 pour la fenêtre Légende cartographique. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Fonction LegendInfo( ) La fonction LegendInfo( ) inclut désormais un nouveau code attribute. Référence 45 Ajouts aux fonctions et instructions existantes Code attribute ID LEGEND_INFO_NUM_TEXTFRAMES 8 Valeur renvoyée par LegendInfo( ) : Renvoie le nombre de cadres de texte dans la fenêtre de conception de légende en cours. Fonction MapperInfo( ) La fonction MapperInfo( ) inclut désormais de nouveaux codes et attributes. Paramètre attribute ID Valeur renvoyée par MapperInfo( ) MAPPER_INFO_DISPLAY 15 Entier court indiquant l'aspect de la carte affiché dans la barre d'état. Correspond à l'instruction class="- topic/xref ">Set Map Display. La valeur renvoyée est l'une des suivantes : • • • • MAPPER_INFO_LABELS_SELECTABLE 30 MAPPER_INFO_DISPLAY_SCALE (0) MAPPER_INFO_DISPLAY_ZOOM (1) MAPPER_INFO_DISPLAY_POSITION (2) MAPPER_INFO_DISPLAY_CARTOGRAPHIC_SCALE (3) Valeur logique indiquant si les étiquettes peuvent être sélectionnées dans la fenêtre Carte. Instruction Run Menu Command L'instruction Run Menu Command inclut désormais une nouvelle syntaxe pour lancer une page web contenant un référentiel des applications MapBasic développées par les membres de la communauté MapInfo Professional. RUN MENU COMMAND M_MBTOOL_GET_MB_UTILITIES ou RUN MENU COMMAND 1811 ' if running from MapBasic window Instruction Set Map L'instruction Set Map inclut désormais une nouvelle syntaxe pour prendre en charge les améliorations apportées aux étiquettes alignées, qui est décrite sous Gestion des propriétés de chaque étiquette et sous Ajout de remplacements pour les étiquettes d'une couche. Set Map [ Layer layer_id [ Label . . . [ AutoPosition { On | Off } ] [ AutoSizes { number_font_sizes | Default } ] [ AutoSizeStep percentage_value ] [ SuppressIfNoFit { On | Off } ] [ AutoCallout { On | Off } ] ] ] 46 MapBasic 12.0 Chapitre 2: Nouveautés et améliorations des fonctions et instructions de MapBasic Les clauses Follow Path et Percent Over ont été introduites dans la version 11.5.3 pour mieux contrôler les étiquettes alignées. La clause Fallback a été ajoutée dans cette version, elle permet de créer une étiquette droite qui peut pivoter lorsqu'une étiquette alignée ne peut pas être créée. Pour plus d'informations, reportez-vous aux sections Gestion des propriétés de chaque étiquette, Ajout de remplacements pour les étiquettes d'une couche et Modification des remplacements des paramètres d'étiquetage d'une couche. Set Map [ Window window_id ] [Layer layer_id [ Label [ Follow Path [ BestPosition { On | Off } ] [Percent Over percent ] [ Fallback { On | Off } ] ] ] ] Si vos étiquettes chevauchent d'autres étiquettes ou n'entrent pas dans une région et par conséquent ne peuvent être dessinées, vous pouvez choisir d'utiliser une autre expression de champ d'abréviation. Votre table de données doit comporter une colonne des abréviations pour utiliser cette fonction. Pour plus d'informations, reportez-vous aux sections Gestion des propriétés de chaque étiquette, Ajout de remplacements pour les étiquettes d'une couche et Modification des remplacements des paramètres d'étiquetage d'une couche. Set Map [ Window window_id ] [Layer layer_id [ Label [ Abbreviation { On | Off } Abbreviate with { field_expression } ] ] L'instruction Set Map comporte une nouvelle clause Label pour spécifier qu'une couche dispose d'une priorité élevée lors de l'affichage de ses étiquettes sur la carte. Vous pouvez inclure une clé Selection qui active ou désactive la sélection d'étiquette pour l'ensemble de la carte. Pour plus d'informations, reportez-vous à la section Gestion du comportement des étiquettes. Set Map [ Label [ Selection { On | Off } ] [ Priority layer_id [, layer_id2... ] ] ] L'instruction Set Map dispose d'une nouvelle clause Cartographic pour afficher l'échelle de la carte. Pour plus d'informations, reportez-vous à la section Modification du comportement de la carte entière. Set Map [ Window window_id ] [ Display { [ Cartographic ] | Position | Zoom } ] Modifier les tailles des pavés Vous pouvez désormais modifier les tailles des pavés après la création d'une légende à l'aide des instructions Alter Designer Frame, Set Legend et Create Designer Legend. Chaque cadre peut posséder ses propres paramètres de taille de pavé. Les nouvelles clauses suivantes contrôlent le dimensionnement du pavé : [ Region [ Height region_height [ Units paper_units ] ] ] [ Region [ Width region_width [ Units paper_units ] ] ] [ Line [ Width line_width [ Units paper_units ] ] ] Référence 47 Ajouts aux fonctions et instructions existantes Les nouvelles clauses suivantes activent ou désactivent le redimensionnement automatique du pavé de légende en fonction de la taille de la police : [ Auto Font Size { On | Off } ] 48 MapBasic 12.0 Référence du langage MapBasic de A à Z Cette section décrit le langage MapBasic en détail. Les instructions et descriptions de fonctions y sont triées par ordre alphabétique. Cette section aborde les rubriques suivantes : • Conventions d'instruction et de fonction . . . . . . . . . . . . .50 • Descriptions d'instruction et de fonction . . . . . . . . . . . . .50 3 Conventions d'instruction et de fonction Conventions d'instruction et de fonction Chaque fonction et instruction est décrite dans le format suivant : Objectif Brève description de la fonction, de la clause ou de l'instruction. Restrictions Informations sur les limitations (par exemple, « La fonction DDEInitiate n'est disponible que sous Microsoft Windows. » ou « Vous ne pouvez pas émettre d'instruction For…Next dans la fenêtre MapBasic »). Syntaxe Forme sous laquelle vous devez utiliser la fonction ou l'instruction et explication du ou des arguments. Valeur renvoyée Type de valeur renvoyée par la fonction. Description Explication détaillée du rôle de la fonction ou de l'instruction et toute autre information pertinente. Exemple Court exemple. Une description se termine par une liste de liens vers des fonctions ou instructions associées. La plupart des instructions MapBasic peuvent être entrées directement dans MapInfo Professional, par l'intermédiaire de la fenêtre MapBasic. Si une instruction ne peut pas être entrée par l'intermédiaire de la fenêtre MapBasic, la section Restrictions identifie la limitation. Généralement, les instructions de contrôle du flux (telles que les instructions de boucle ou de branche) ne peuvent pas être entrées par l'intermédiaire de la fenêtreMapBasic. Descriptions d'instruction et de fonction Les rubriques suivantes décrivent les fonctions, les instructions et les clauses. Certaines rubriques fournissent plus de détails sur la façon d'appliquer une fonction ou une instruction. Fonction Abs( ) Objectif Renvoie la valeur absolue d'un nombre. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Abs ( num_expr ) 50 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z num_expr représente une expression numérique. Valeur renvoyée Nombre à virgule flottante Description La fonction Abs( ) renvoie la valeur absolue de l'expression spécifiée par num_expr. Si la valeur de num_expr est supérieure ou égale à zéro, Abs( ) renvoie une valeur égale à num_expr. Si la valeur de num_expr est négative, Abs( ) renvoie une valeur égale à la valeur de num_expr multipliée par moins un (-1). Exemple Dim f_x, f_y As Float f_x = -2.5 f_y = Abs(f_x) ' f_y now equals 2.5 Voir également Fonction Sgn( ) Fonction Acos( ) Objectif Renvoie l'arc cosinus d'un nombre. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Acos ( num_expr ) num_expr est une expression numérique comprise entre un et moins un inclus. Valeur renvoyée Nombre à virgule flottante Description La fonction Acos( ) renvoie l'arc cosinus de la valeur numérique de num_expr. En d'autres termes, Acos( ) renvoie l'angle dont le cosinus est égal à num_expr. Le résultat renvoyé par Acos( ) représente un angle exprimé en radians. Cet angle se situera entre zéro et Pi radians (en supposant que Pi soit égal à environ 3,141593 et que Pi/2 radians représente 90 degrés). Référence 51 Instruction Add Cartographic Frame Pour convertir une valeur exprimée en degrés en radians, multipliez cette valeur par DEG_2_RAD. Pour convertir une valeur exprimée en radians en degrés, multipliez cette valeur par RAD_2_DEG. Votre programme doit inclure le fichier MAPBASIC.DEF pour référencer DEG_2_RAD ou RAD_2_DEG. Comme les valeurs des cosinus sont comprises entre un et moins un, la valeur de l'expression num_expr ne doit pas être supérieure à un ni être inférieure à moins un. Exemple Include "MAPBASIC.DEF" Dim x, y As Float x = 0.5 y = Acos(x) * RAD_2_DEG ' y will now be equal to 60, ' since the cosine of 60 degrees is 0.5 Voir également Fonction Asin( ), Fonction Atn( ), Fonction Cos( ), Fonction Sin( ), Fonction Tan( ) Instruction Add Cartographic Frame L'instruction Add Cartographic Framepermet d'ajouter des cadres cartographiques à une légende cartographique existante créée à l'aide de l'instruction Create Cartographic Legend. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Add Cartographic Frame [ Window legend_window_id ] [ Custom ] [ Default Frame Title { def_frame_title } [ Font... ] ] [ Default Frame Subtitle { def_frame_subtitle } [ Font... ] ] [ Default Frame Style { def_frame_style } [ Font... ] ] [ Default Frame Border Pen... pen_expr ] Frame From Layer { map_layer_id | map_layer_name } [ Position ( x , y ) [ Units paper_units ] ] [ Using [ Column { column | object [ FromMapCatalog { On | Off }]} ] [ Label { expression | default } ] [ Title [ frame_title ] [ Font... ] ] [ SubTitle [ frame_subtitle ] [ Font... ] ] [ Border Pen... ] [ Style [Font...] [ NoRefresh ] [ Text { style_name } { Line Pen... | Region Pen... Brush... | Symbol Symbol... } ] [ , ... ] ] [ , ... ] legend_window_id est un identifiant de fenêtre entier que vous pouvez obtenir en appelant la fonction FrontWindow( ) et la fonction WindowID( ). def_frame_title est une chaîne qui définit un titre de cadre par défaut. Elle peut inclure le caractère spécial « # » qui sera remplacé par le nom de la couche active. 52 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z def_frame_subtitle est une chaîne qui définit un sous-titre de cadre par défaut. Elle peut inclure le caractère spécial « # » qui sera remplacé par le nom de la couche active. def_frame_style est une chaîne qui s'affiche en regard des symboles dans chaque cadre. Le caractère « # » sera remplacé par le nom de la couche. Le caractère « % » sera remplacé par le texte « Ligne », « Point » ou « Région », selon le symbole. Par exemple, "% of #" deviendra "Region of States" pour la couche STATES.TAB. pen_expr est une expression Pen (MakePen( width, pattern, color ), par exemple). Si une bordure par défaut est définie, elle devient alors la valeur par défaut du cadre. S'il existe une clause de bordure au niveau du cadre, elle est utilisée à la place de la valeur par défaut. map_layer_id ou map_layer_name identifie une couche de la carte. Il peut s'agir d'un entier court (par exemple, utilisez 1 pour spécifier la couche de carte supérieure, différente de la couche Dessin) ou d'une chaîne représentant le nom d'une table figurant dans la carte. Pour une couche thématique, vous devez spécifier l'expression map_layer_id. paper_units est une chaîne qui représente le nom d'une unité papier (par exemple, « cm » pour centimètres). frame_title est une chaîne qui définit un titre de cadre. Si une clause Title est définie ici pour un cadre, elle sera utilisée à la place de l'expression def_frame_title. frame_subtitle est une chaîne qui définit un sous-titre de cadre. Si une clause SubTitle est définie ici pour un cadre, elle est alors utilisée à la place de def_frame_subtitle. column est le nom d'une colonne d'attributs de la table de couches du cadre ou la colonne objet (ce qui signifie que les styles de légende sont basés sur les styles uniques du fichier de carte). La valeur par défaut est « objet ». style_name est une chaîne qui s'affiche près de chaque symbole, ligne ou région dans un cadre personnalisé. Description Si le mot-clé Custom est inclus, chaque section du cadre doit inclure une clause Position. Si le mot-clé Custom est omis et que la légende est mise en page au format portrait ou paysage, les cadres seront ajoutés à la fin. La clause Position contrôle la position du cadre dans la fenêtre Légende. La position du coin supérieur gauche de la fenêtre Légende correspond à 0, 0. Les valeurs de Position utilisent les paramètres des unités papier, tels que « in » pour inches (pouces) ou « cm » pour centimètres. (Reportez-vous à la section Instruction Set Paper Units). Le paramètre d'unités papier actuelles de MapBasic est défini par défaut en pouces. Un programme MapBasic peut modifier ce paramètre au moyen de l'instruction Set Paper Units. Vous pouvez remplacer les unités papier actuelles en incluant la sous-clause facultative Units dans la clause Position. Les valeurs par défaut de cette instruction s'appliquent uniquement aux cadres créés dans cette instruction. Elles n'affectent en rien les cadres existants. es valeurs par défaut des cadres utilisées dans l'instruction Create Cartographic Legend n'ont aucun effet sur les cadres créés dans cette instruction. Lorsque vous effectuez un enregistrement dans un document, la clause FromMapCatalog OFF est écrite dans le document si elle est spécifiée. Pour ce faire, il faut agrandir la version de document à 800. Référence 53 Instruction Add Column Si la clause FromMapCatalog ON est spécifiée, nous ne l'écrivons pas dans le document, car il s'agit du comportement par défaut. Cela évite d'avoir à agrandir la version de document. FromMapCatalog ON récupère les styles de MapCatalog pour une table en accès direct. Si la table n'est pas en accès direct, MapBasic revient au comportement par défaut d'une table sans accès direct plutôt que de générer une erreur. Le comportement par défaut d'une table sans accès direct est FromMapCatalog Off (styles de la carte, par exemple). FromMapCatalog OFF récupère les styles uniques d'une carte pour la table en accès direct du serveur. Pour que cela fonctionne, il doit s'agir d'une table en accès direct qui prend en charge les styles par enregistrement. Si la table en accès direct ne prend pas en charge les styles par enregistrement, le système revient au comportement par défaut des tables en accès direct, qui consiste à obtenir les styles par défaut de MapCatalog (FromMapCatalog ON). Label est une expression ou valeur par défaut valide (ce qui signifie que la trame de style du cadre par défaut est utilisée lors de la création de chaque texte de style, à moins que la clause Style ne contienne du texte). La valeur par défaut est default. La clause Style et le mot-clé NoRefresh permettent de créer un cadre personnalisé qui ne sera pas remplacé lors du rafraîchissement de la légende. Si le mot-clé NoRefresh est utilisé dans la clause Style, les styles de la table ne sont pas analysés. Dans ce cas, la clause Style doit contenir votre liste de définitions personnalisée pour les styles qui figurent dans le cadre. Pour ce faire, utilisez la clause Text et la clause Line, Region ou Symbol appropriée. Voir également Instruction Create Cartographic Legend, Instruction Set Cartographic Legend, Instruction Alter Cartographic Frame, Instruction Remove Cartographic Frame Instruction Add Column Objectif Ajoute une nouvelle colonne temporaire dans une table ouverte ou met à jour une colonne existante avec les données d'une autre table. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Add Column table ( column [ datatype ] ) { Values const [ , const ... ] | From source_table Set To expression [ Where { dest_column = source_column | Within | Contains | Intersects } ] [ Dynamic ] } table est le nom de la table à laquelle la colonne va être ajoutée. column est le nom d'une nouvelle colonne à ajouter à cette table. datatype est le type de données de la colonne, défini par Char(width), Float, Integer, SmallInt, Decimal(width, decimal_places), DateTime, Date ou Logical. Si le type n'est pas spécifié, Float est défini par défaut. Une valeur DateTime est une valeur entière stockée sur 9 octets : 4 octets pour la date et 5 54 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z octets pour l'heure. Les 5 octets pour l'heure comprennent 2 octets pour les millisecondes, 1 octet pour les secondes, 1 octet pour les minutes et 1 octet pour les heures. source_table est le nom d'une deuxième table ouverte. expression est l'expression utilisée pour calculer les valeurs à stocker dans la nouvelle colonne. Cette expression extrait généralement les données de source_table et elle peut comporter des fonctions d'agrégation. dest_column est le nom d'une colonne de la table de destination (table). source_column est le nom d'une colonne de source_table. Dynamic désigne une colonne calculée dynamiquement pouvant être automatiquement mise à jour. Si vous incluez ce mot-clé, les modifications qui seront apportées par la suite à la table source seront automatiquement appliquées à la table de destination. Description L'instruction Add Column crée une nouvelle colonne temporaire pour une table MapInfo Professional existante. La nouvelle colonne ne sera pas enregistrée de façon permanente sur le disque. Toutefois, si la colonne temporaire est basée sur des tables de base et si vous enregistrez un document alors que la colonne temporaire est utilisée, le document inclura les informations relatives à la colonne temporaire de façon à reconstruire la colonne temporaire si le document est rechargé. Pour ajouter une colonne permanente à une table, utilisez l'instruction Alter Table et l'instruction Update. Voir également Instruction Alter Table, Instruction Update Remplissage de la nouvelle colonne avec des valeurs explicites La clause Values permet de spécifier une liste de valeurs explicites séparées par des virgules à stocker dans la nouvelle colonne. Dans l'exemple ci-dessous, une colonne temporaire est ajoutée à une table de régions « ward ». Les valeurs de la nouvelle colonne sont explicitement spécifiées grâce à la clause Value. Open Table "wards" Add Column wards(percent_dem) Values 31,17,22,24,47,41,66,35,32,88 Remplissage de la nouvelle colonne avec des valeurs d'une autre table Si vous spécifiez une clause From au lieu d'une clause Values, MapBasic dérive les valeurs de la nouvelle colonne à partir d'une table séparée (source_table). Les deux tables doivent déjà être ouvertes. Lorsque vous utilisez une clause From, MapInfo Professional joint les deux tables. Pour spécifier le mode de jointure des deux tables, incluez la clause facultative Where. Si vous omettez la clause Where, MapInfo Professional tente automatiquement de joindre les deux tables en suivant la méthode la plus appropriée. Une clause Where se présentant sous la forme Where column = column joint les deux tables en établissant une correspondance entre les valeurs de leurs colonnes. Cette méthode est appropriée si une colonne de l'une de vos tables comprend des valeurs qui correspondent à une colonne de l'autre Référence 55 Instruction Add Column table (lorsque, par exemple, vous ajoutez une colonne à la table States et que votre autre table comprend également une colonne contenant des noms d'États). Si les deux tables contiennent des objets carte, la clause Where peut spécifier une jointure géographique. Par exemple, si vous spécifiez la clause Where Contains, MapInfo Professional construit une jointure en vérifiant si les objets de source_table contiennent des objets de la table en cours de modification. Dans l'exemple suivant, une colonne « Comté » est ajoutée à une table « Stores ». La nouvelle colonne contiendra des noms de comtés extraits d'une table de régions des comtés séparée : Add Column stores(county char(20) 'add "county" column From counties 'derive data from counties table... Set to cname 'using the counties table's "cname" column Where Contains 'join: where a county contains a store site La méthode Where Contains est appropriée lorsque vous ajoutez une colonne à une table d'objets point et que la table secondaire représente les objets qui contiennent les points. Dans l'exemple suivant, une colonne temporaire est ajoutée à la table States. Les valeurs de la nouvelle colonne sont dérivées d'une deuxième table (City_1K, une table des grandes villes américaines). Une fois l'instruction Add Column exécutée, chaque ligne de la table States contient le nombre de grandes villes présentes dans l'État en question. Open Table "states" Interactive Open Table "city_1k" Interactive Add Column states(num_cities) From city_1k 'derive values from other table Set To Count(*) 'count cities in each state Where Within 'join: where cities fall within state Dans cet exemple, la clause Set To spécifie une fonction d'agrégation : Count(*). Les fonctions d'agrégation sont décrites ci-dessous. Remplissage d'une colonne existante avec des valeurs d'une autre table Pour mettre à jour une colonne existante au lieu d'en ajouter une nouvelle, omettez le paramètre de type de données et spécifiez la clause From au lieu de la clause Values. Lors de la mise à jour d'une colonne existante, MapBasic ignore la clause Dynamic. Remplissage de la nouvelle colonne avec des données d'agrégation Si vous spécifiez une clause From, vous pouvez calculer les valeurs de la nouvelle colonne en agrégeant les données de la deuxième table. Pour agréger les données, spécifiez une clause Set To qui comporte une fonction d'agrégation. Le tableau suivant répertorie toutes les fonctions d'agrégation disponibles. 56 Function Valeur stockée dans la nouvelle colonne Avg( col ) Moyenne des valeurs des lignes de la table source. Count( * ) Nombre de lignes de la table source qui correspondent à la ligne de la table mise à jour. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Function Valeur stockée dans la nouvelle colonne Max( col ) La plus grande des valeurs des lignes de la table source. Min( col ) La plus petite des valeurs des lignes de la table source. Sum( col ) Somme des valeurs des lignes de la table source. WtAvg( col, weight_col ) Moyenne pondérée des valeurs de la table source. Le calcul de la moyenne est pondéré de telle sorte que les lignes qui contiennent une valeur weight_col élevée aient plus d'impact que les lignes qui contiennent une valeur weight_col peu élevée. Proportion Avg( col ) Calcul de la moyenne qui effectue des réglages en se basant sur la proportion d'un objet contenue dans un autre objet. Proportion Sum( col ) Calcul de la somme qui effectue des réglages en se basant sur la proportion d'un objet contenue dans un autre objet. Proportion WtAvg( col , weight_col ) Calcul de la moyenne pondérée qui effectue des réglages en se basant sur la proportion d'un objet contenue dans un autre objet. Remarque: Count renvoie une valeur entière. Toutes les autres fonctions renvoient une valeur à virgule flottante. (Aucune fonction MapBasic, d'agrégation ou autre, ne renvoie de valeur décimale. Les champs décimaux servent uniquement à stocker les données. L'opération arithmétique s'effectue à l'aide de nombres à virgule flottante.) La plupart des fonctions d'agrégation agissent sur les valeurs de données uniquement. Les trois dernières fonctions (Proportion Sum, Proportion Avg, Proportion WtAvg) effectuent des calculs qui prennent en compte les relations géographiques. Cela est mieux illustré par un exemple. Supposons que vous disposiez d'une table Counties qui contient aussi bien les limites que des informations démographiques (telles que la population) de chaque comté. Vous disposez également d'une table Risk qui contient un objet région. L'objet région de la table Risk représente une zone à risque. Il peut par exemple s'agir d'une zone inondable du fait de la proximité d'une rivière. Référence 57 Instruction Add Column 1 Frontières des comtés 2 Tampon de la zone à risques Disposant de ces deux tables, vous souhaiterez peut-être calculer la population qui vit dans la région à risque. Si la moitié de la zone d'un comté est comprise dans cette région à risque, vous en conclurez que la moitié de la population de ce comté court un risque. Si un tiers de la zone d'un comté est comprise dans cette région à risque, vous en conclurez que le tiers de la population de ce comté court un risque, etc. L'exemple ci-dessous calcule la population courant un risque à l'aide de la fonction d'agrégation Proportion Sum, puis insère le résultat du calcul dans une nouvelle colonne (population_concernée) : Add Column Risk(population_at_risk Integer) From counties Set To Proportion Sum(county_pop) Where Intersects Pour chaque comté se situant, au moins en partie, dans une région à risque, MapInfo Professional ajoute une partie ou l'ensemble de la valeur pop_comté des comtés dans le calcul du total. Pour générer des résultats, la fonction Proportion Sum part du principe que le nombre totalisé est réparti uniformément sur toute la région. Si vous utilisez Proportion Sum pour calculer les statistiques de population d'une région dont la moitié est comprise dans une autre région, MapInfo Professional ajoute la moitié de la population de cette région au total. Toutefois, en réalité, une zone représentant la moitié d'une région ne contient pas nécessairement la moitié de sa population. La population de l'État de New York, par exemple, n'est pas répartie uniformément car un large pourcentage de la population vit dans la ville de New York. Si vous utilisez la fonction Proportion Sum dans des cas où les valeurs de données ne sont pas réparties uniformément, les résultats risquent de ne pas être réalistes. Pour obtenir des résultats précis, utilisez des objets région plus petits (par exemple, travaillez au niveau des comtés plutôt que des États). 58 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z La fonction d'agrégation Proportion Avg calcule la moyenne en tenant compte du pourcentage d'un objet couvert par un autre objet. Pour reprendre l'exemple précédent, supposons que la table County contienne une colonne (âge_moyen) qui indique l'âge moyen dans chaque comté. L'instruction suivante calcule l'âge moyen au sein de la zone à risque : Add Column Risk(age Float) From Counties Set To Proportion Avg(median_age) Where Intersects Pour chaque ligne de la table County, MapInfo Professional calcule le pourcentage de la zone à risque couverte par le comté. Ce calcul génère un nombre compris entre zéro et un, inclus. MapInfo Professional multiplie ce nombre par la valeur âge_moyen du comté et ajoute le résultat au calcul du total. Ainsi, si la valeur âge_moyen d'un comté est de 50 et si le comté couvre 10 % de la zone à risque, MapInfo Professional ajoute 5 (cinq) au calcul du total car 10 % de 50 est égal à 5. Les fonctions Proportion Sum et Proportion Avg conservent des calculs de totaux. Par exemple : Si la moitié du comté se trouve dans la zone à risque, vous ajoutez la moitié de la valeur au calcul du total. Si elle est égale à 10 %, vous ajoutez 10 % de la valeur au calcul du total. Toutefois, la fonction Proportion Avg doit représenter une moyenne, donc si 4 comtés se trouvent dans la zone à risque, vous devez diviser le calcul du total par 4. Si 50 % du comté 1 sont dans la zone à risque et que la population de ce comté est de 66, vous ajoutez 33 au calcul du total. Si 30 % du comté 2 croisent la zone à risque et que la population est de 100, vous ajoutez 30 au calcul du total. Si 20 % du comté 3 sont dans la zone à risque et que la population est de 50, vous ajoutez 10 au calcul du total. Si 10 % du comté 4 sont dans la zone à risque et que la population est de 60, vous ajoutez 6 au calcul du total. La fonction Proportion Sum est égale à : 33+30+10+6 = 82 La fonction Proportion Avg est égale à : (33+30+10+6)/4 = 20 (ou 21 selon l'arrondi, mais plutôt 20). La fonction Proportion WtAvg est semblable à la fonction Proportion Avg, mais elle vous permet en plus de spécifier une colonne de données pour pondérer le calcul de la moyenne. La pondération est aussi proportionnelle. Par exemple : La moyenne pondérée doit prendre une valeur pondérée d'une autre colonne (pour l'exemple précédent, il y a une colonne intitulée « Pourcentage rural » dans la table County. Si le risque concerne les inondations et que les zones rurales se trouvent dans des régions inondables, vous voudrez uniquement inclure la population des zones rurales pour le risque. Si 50 % du comté 1 se trouvent dans la zone à risque et que la population de ce comté est de 66, avec un pourcentage rural de 0,8, vous ajoutez (0,5 * 66 * 0,8) = 26. Si les comtés 3, 4 et 5 sont ruraux à 50 % : comté 3 : 0,3 * 100 * 0,5 = 15 comté 4 : 0,2 * 50 * 0,5 = 5 comté 5 : 0,1 * 60 * 0,5 = 3 Référence 59 Instruction Add Designer Frame La moyenne pondérée de la proportion est donc : (26 + 15 + 5 + 3)/4 = 12 Utilisation des fonctions Proportion... sur des objets non régionaux Lorsque vous utilisez les fonctions Proportion et que la table source contient des objets région, MapInfo Professional calcule les pourcentages en se basant sur le chevauchement des régions. Toutefois, lorsque la table source contient des objets non régionaux, MapInfo Professional traite chaque objet comme s'il se trouvait complètement à l'intérieur ou complètement à l'extérieur de la région de destination (selon que le centroïde de l'objet non régional se trouve à l'intérieur ou à l'extérieur de la région de destination). Colonnes dynamiques Si vous incluez le mot-clé facultatif Dynamic, la nouvelle colonne devient une colonne calculée dynamiquement, ce qui signifie que les modifications qui seront apportées par la suite à la table source seront automatiquement appliquées à la table de destination. Si vous créez une colonne dynamique et que vous fermez la table source utilisée pour la calculer, les valeurs de la colonne sont figées (la colonne n'est plus mise à jour de façon dynamique). De même, si vous fermez l'une des cartes utilisées pour une jointure géographique alors que celle-ci est utilisée pour créer une colonne dynamique, les valeurs de la colonne sont figées. Instruction Add Designer Frame L'instruction Add Designer Frame ajoute des cadres de légende à une fenêtre de conception de légende existante créée à l'aide de l'instruction Create Designer Legend. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Add Designer Frame [ Window legend_window_id ] [ Custom ] Frame From Layer { map_layer_id | map_layer_name } [ Position ( x , y ) [ Units paper_units ] ] [ Using [ Column { column | object [ FromMapCatalog { On | Off } ] } ] [ Label { expression | default } ] [ Title [ frame_title ] ] [ SubTitle [ frame_subtitle ] ] [ Columns number_of_columns ] | [ Height frame_height [ Units paper_units ] ] [ Style [ NoRefresh ] [ Text { style_name } { Line Pen... | Region Pen... Brush... | Symbol Symbol... } ] [ , ... ] ] ] legend_window_id est un identifiant de fenêtre entier que vous pouvez obtenir en appelant la fonction FrontWindow( ) et la fonction WindowID( ). map_layer_id ou map_layer_name identifie une couche de la carte. Il peut s'agir d'un entier court (par exemple, utilisez 1 pour spécifier la couche de carte supérieure, différente de la couche Dessin) ou d'une 60 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z chaîne représentant le nom d'une table figurant dans la carte. Pour une couche thématique, vous devez spécifier l'expression map_layer_id. paper_units est une chaîne qui représente le nom d'une unité papier : cm (centimètres), mm (millimètres), in (pouces), pt (points), et pica. win_height est une chaîne spécifiant la hauteur du cadre de légende en unités papier. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. frame_title est une chaîne qui définit un titre de cadre. Si une clause Title est définie ici pour un cadre, elle sera utilisée à la place de l'expression def_frame_title. frame_subtitle est une chaîne qui définit un sous-titre de cadre. Si une clause SubTitle est définie ici pour un cadre, elle est alors utilisée à la place de def_frame_subtitle. column est le nom d'une colonne d'attributs de la table de couches du cadre ou la colonne objet (ce qui signifie que les styles de légende sont basés sur les styles uniques du fichier de carte). La valeur par défaut est « objet ». number_of_columns est le nombre de colonnes à afficher dans un cadre. frame_height remplace la clause Columns lorsque l'utilisateur redimensionne un cadre de légende. Hauteur du cadre en unités papier. Valeur écrite dans le document WOR lorsque le cadre a été manuellement redimensionné. style_name est une chaîne qui s'affiche près de chaque symbole, ligne ou région dans un cadre personnalisé. Description Les propriétés par défaut définies dans l'instruction Create Designer Legend sont utilisées lors de l'ajout de nouveaux cadres. Vous écrasez ces propriétés par défaut lorsque vous définissez des propriétés de manière explicite pour les cadres que vous ajoutez. Contrairement à l'instruction Add Cartographic Frame, l'instruction Add Designer Frame prend en charge une clause Columns qui vous permet de spécifier le nombre de colonnes à utiliser dans un cadre de légende. Si le mot-clé Custom est inclus, chaque section du cadre doit inclure une clause Position. Si le mot-clé Custom est omis et que la légende est mise en page au format portrait ou paysage, les cadres seront ajoutés à la fin. Frame From Layer peut être une valeur (un entier court) comme 1 permettant de spécifier la couche de carte supérieure autre que la couche Dessin ou une chaîne représentant le nom de couche d'une carte existante. Pour une couche thématique, vous devez spécifier l'expression map_layer_id. La clause Position contrôle la position du cadre dans la fenêtre de conception de légende. La position au coin supérieur gauche de la fenêtre de conception de légende correspond à 0, 0.Les valeurs de Position utilisent les paramètres des unités papier, tels que « in » pour inches (pouces) ou « cm » pour centimètres. Le paramètre d'unités papier actuelles de MapBasic est défini par défaut en pouces. Un programme MapBasic peut modifier ce paramètre au moyen de l'instruction Set Paper Units. Vous pouvez remplacer les unités papier actuelles en incluant la sous-clause facultative Units dans la clause Position. Les valeurs par défaut de cette instruction s'appliquent uniquement aux cadres créés dans cette instruction. Elles n'affectent en rien les cadres existants. es valeurs par défaut des cadres utilisées dans l'instruction Create Cartographic Legend n'ont aucun effet sur les cadres créés dans cette instruction. Référence 61 Instruction Add Designer Frame Column est le nom d'une colonne d'attributs de la table de couches du cadre ou la colonne objet (ce qui signifie que les styles de légende sont basés sur les styles uniques du fichier de carte). La valeur par défaut est object. Lorsque vous effectuez un enregistrement dans un document, la clause FromMapCatalog OFF est écrite dans le document si elle est spécifiée. La taille du document doit être agrandie à 800. Si la clause FromMapCatalog ON est spécifiée, nous ne l'écrivons pas dans le document, car il s'agit du comportement par défaut. Dans ce cas, nous n'avons pas à agrandir la version du document. FromMapCatalog ON récupère les styles de MapCatalog pour une table en accès direct. Si la table n'est pas en accès direct, MapBasic revient au comportement par défaut d'une table sans accès direct plutôt que de générer une erreur. Le comportement par défaut d'une table sans accès direct est FromMapCatalog Off (styles de la carte, par exemple). FromMapCatalog OFF récupère les styles uniques d'une carte pour la table en accès direct du serveur. Pour que cela fonctionne, il doit s'agir d'une table en accès direct qui prend en charge les styles par enregistrement. Si la table en accès direct ne prend pas en charge les styles par enregistrement, le système revient au comportement par défaut des tables en accès direct, qui consiste à obtenir les styles par défaut de MapCatalog (FromMapCatalog ON). Label est une expression ou valeur par défaut valide (ce qui signifie que la trame de style du cadre par défaut est utilisée lors de la création de chaque texte de style, à moins que la clause Style ne contienne du texte). La valeur par défaut est default. La clause Title est une chaîne qui définit un titre de cadre. Si une clause Title est définie pour un cadre, elle remplace def_frame_title. La clause SubTitle est une chaîne qui définit un sous-titre de cadre. Si une clause SubTitle est définie pour un cadre, elle remplace def_frame_subtitle. La clause Columns est le nombre de colonnes à afficher dans un cadre. paper_units est une chaîne qui représente le nom d'une unité papier. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. La clause Style et le mot-clé NoRefresh permettent de créer un cadre personnalisé qui ne sera pas remplacé lors du rafraîchissement de la légende. Si le mot-clé NoRefresh est utilisé dans la clause Style, les styles de la table ne sont pas analysés. Dans ce cas, la clause Style doit contenir votre liste de définitions personnalisée pour les styles qui figurent dans le cadre. Pour ce faire, utilisez la clause Text et la clause Line, Region ou Symbol appropriée. Exemple Vous pouvez ouvrir un certain nombre de fenêtres de documents à l'aide de la fonction NumAllWindows( ), puis basculer de l'une à l'autre à l'aide de la fonction WindowID( ) ou de la fonction WindowInfo( ) pour trouver une fenêtre de légende par type et identifiant à utiliser dans l'instruction Add Legend Designer. Dim i, wndLegend as integer for i = 1 to NumWindows() If WindowInfo(WindowID(i), WIN_INFO_TYPE) = WIN_LEGEND_DESIGNER then wndLegend = WindowInfo(WindowID(i), WIN_INFO_WINDOWID) end if next 62 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Cet exemple ajoute des cadres. Add Designer Frame Window wndLegend Frame From Layer 2 Columns 2 Voir également Instruction Create Designer Legend, Instruction Set Designer Legend, Instruction Alter Designer Frame, Instruction Remove Designer Frame Instruction Add Designer Text L'instruction Add Designer Text ajoute des cadres de texte à une fenêtre de conception de légende existante créée à l'aide de l'instruction Create Designer Legend. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Add Designer Text [ Window legend_window_id ] [ Legend Text Frame [ Text { frame_text [ Font... ] } [ Position ( x, y ) [ Units paper_units ] ] ] ] legend_window_id est un identifiant de fenêtre entier que vous pouvez obtenir en appelant la fonction FrontWindow( ) et la fonction WindowID( ). frame_text est un texte pour un titre de légende, un sous-titre ou un texte descriptif (des informations sur le copyright par exemple). x indique la distance souhaitée entre la partie supérieure du document et celle de la fenêtre. y indique la distance souhaitée entre la partie gauche du document et celle de la fenêtre. Remarque: Le document désigne ici l'espace client (la barre de titre, la barre d'outils et la barre d'état sont donc exclues). paper_units est une chaîne qui représente le nom d'une unité papier : cm (centimètres), mm (millimètres), in (pouces), pt (points), et pica. • • • • • 1 pouce (in) = 2,54 centimètres, 254 millimètres, 6 picas, 72 points 1 point (pt) = 0,01389 pouce, 0,03528 centimètre, 0,35278 millimètre, 0,08333 pica 1 pica = 0,16667 pouce, 0,42333 centimètre, 4,23333 millimètres, 12 points 1 centimètre (cm) = 0,39370 pouce, 10 millimètres, 2,36220 picas, 28,34646 points 1 millimètre (mm) = 0,1 centimètre, 0,03937 pouce, 0,23622 pica, 2,83465 points Description Legend Text Frame crée un cadre de texte dans la fenêtre de conception de légende. Si Text n'indique pas la clause Font, la police par défaut est utilisée. La clause Position contrôle la position du cadre dans la fenêtre de conception de légende. La position au coin supérieur gauche de la fenêtre de conception de légende correspond à 0, 0. Les valeurs de Position utilisent les paramètres des unités papier, tels que « in » pour inches (pouces) ou « cm » pour centimètres. (Reportez-vous à l'Instruction Set Paper Units). Le paramètre d'unités papier actuelles de MapBasic est défini par défaut en pouces. Un programme MapBasic peut modifier ce paramètre au Référence 63 Instruction Add Map moyen de l'instruction Set Paper Units. Vous pouvez remplacer les unités papier actuelles en incluant la sous-clause facultative Units dans la clause Position. Exemple Add Designer Text Window frontwindow() Legend Text Frame Text "This is My title" Font("Batang", 3, 12, 16711680) Voir également instruction Create Designer Legend, instruction Alter Designer Text, instruction Remove Designer Text Instruction Add Map Objectif Ajoute une ou plusieurs couches graphiques, ou un groupe de couches, dans une fenêtre Carte. Vous pouvez également sélectionner un groupe de couches de destination et/ou une position dans lesquels les nouvelles couches seront insérées. Syntaxe 1 Add Map [ Window window_id ] [ Auto ] Layer table [ , table [ Animate ] ... ] [ [ DestGroupLayer group_id ] Position position ] window_id est l'identifiant de fenêtre d'une fenêtre Carte. table est le nom d'une table ouverte cartographiable à ajouter à une fenêtre Carte. group_id est l'identifiant d'un groupe de couches, soit sous forme de valeur entière (numéro du groupe), soit sous forme de chaîne (nom du groupe). position est l'index à base 1 du groupe de destination dans lequel la nouvelle liste de couches sera insérée. Syntaxe 2 Add Map [ Window window_id ] [ Auto ] GroupLayer ( "friendly_name" [ , item ... ] ) [ [ DestGroupLayer group_id ] Position position ] où : item = table | [ GroupLayer ( "friendly_name" [ , item ... ]) Description L'instruction Add Map ajoute une ou plusieurs tables ouvertes, ou un groupe de couches, à une fenêtre Carte. Il est cependant impossible de procéder à ces deux opérations simultanément dans une même instruction. Le groupe de couches peut contenir plusieurs groupes de couches imbriqués. MapInfo Professional rafraîchit ensuite automatiquement la fenêtre Carte, sauf si vous avez désactivé cette 64 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z fonction à l'aide d'une instruction Set Event Processing Off ou d'une instruction Set Map Redraw Off. Le paramètre window_id est un identifiant de fenêtre entier qui représente une fenêtre Carte ouverte. Pour obtenir un identifiant de fenêtre, appelez la fonction FrontWindow( ) et la fonction WindowID( ). Si l'instruction Add Map ne spécifie pas de valeur window_id, l'instruction affecte la fenêtre Carte supérieure. Si vous incluez le mot-clé facultatif Auto, MapInfo Professional tente de positionner automatiquement la couche de carte, ou le groupe de couches, à un endroit approprié dans le jeu de couches. Une table raster ou une carte d'objets région est placée plus près des couches inférieures de la fenêtre Carte, alors qu'une carte d'objets point est placée au-dessus. Si vous omettez le mot-clé Auto, la table indiquée devient la couche supérieure de la fenêtre. En d'autres termes, la nouvelle couche de la table est rafraîchie en dernier lors du rafraîchissement de la carte. Vous pouvez utiliser l'instruction Set Map pour modifier l'ordre des couches dans la fenêtre Carte. Si DestGroupLayer est indiqué, le mot-clé Auto ne sera pas pris en compte et la liste ou le groupe de couches sera inséré(e) dans la liste de couches, dans le groupe indiqué et à la position spécifiée. L'ID de groupe 0 désigne la liste de niveau supérieur. Si DestGroupLayer n'est pas indiqué, l'ID de groupe est défini par défaut sur 0. Position est l'index à base 1 du groupe de destination dans lequel la nouvelle liste de couches sera insérée. Si celui-ci n'est pas indiqué, c'est la première position dans le groupe qui est utilisée (position = 1). Si la position indiquée dépasse le nombre d'éléments autorisés dans le groupe de destination, les nouvelles couches et/ou groupes de couches seront insérés à la fin du groupe de destination. Les ID de couche et de groupe peuvent être des numéros ou des noms. Les ID de groupe sont compris entre 0 et le nombre total de groupes dans la liste. Remarque: Il est impossible d'insérer les couches et/ou les groupes de couches au milieu d'un ensemble de couches thématiques. Celles-ci sont en effet insérées selon un ordre spécifique au fur et à mesure de leur création et cet ordre doit être conservé. Si, en raison de la position de destination choisie, les nouvelles couches sont insérées dans un ensemble de couches thématiques, leur positionnement final fera l'objet d'un ajustement pour éviter ce cas de figure. Ajout de couches de projections différentes Si la couche ajoutée est une table raster et que la carte ne contient pas encore de couches raster, la carte adopte le système de coordonnées et la projection de l'image raster. Si une fenêtre Carte contient plusieurs couches raster, elle adopte de façon dynamique la projection de l'image qui occupe la plus grande partie de la fenêtre à cet instant. Si la fonction de reprojection d'images raster est activée, MapInfo Professional conserve le système de coordonnées de la carte, même si vous y ajoutez une table raster. Si la couche ajoutée n'est pas une table raster, MapInfo Professional continue d'afficher la fenêtre Carte à l'aide du système de coordonnées et de la projection qui étaient utilisés avant l'instruction Add Map, même si la table spécifiée est stockée avec une projection et/ou un système de coordonnées d'origine différents. Lorsque la projection d'origine d'une table diffère de la projection de la fenêtre Carte, MapInfo Professional convertit les coordonnées de la table « à la volée » afin que la totalité de la fenêtre Carte soit affichée avec la même projection. Référence 65 Instruction Add Map Remarque: Lorsque MapInfo Professional convertit les couches d'une carte de cette façon, la mise à jour de la carte prend plus de temps car MapInfo Professional doit effectuer des transformations mathématiques tout en dessinant la carte. Utilisation de couches d'animation pour accélérer le rafraîchissement des cartes Si l'instruction Add Map inclut le mot-clé Animate, la couche ajoutée devient une couche spéciale dite d'animation. Lorsqu'un objet de la couche d'animation est déplacé, la fenêtre Carte est mise à jour très rapidement car MapInfo Professional ne met à jour que la couche d'animation. Pour obtenir un exemple de couches d'animation, reportez-vous à l'exemple de programme ANIMATOR.MB. La couche d'animation est utile dans les applications en temps réel, dans lesquelles les caractéristiques des cartes sont fréquemment mises à jour. Vous pouvez, par exemple, développer une application de gestion de parc automobile dans laquelle chaque véhicule est représenté comme un objet point. Vous pouvez recevoir les coordonnées actuelles des véhicules à l'aide de la technologie GPS (Global Positioning System) et mettre à jour les objets point pour afficher l'emplacement actuel des véhicules sur la carte. Dans les types d'applications où les objets de la carte sont constamment en mouvement, la carte est mise à jour beaucoup plus rapidement si les objets mis à jour sont enregistrés dans la couche d'animation plutôt que dans une couche classique. Dans l'exemple ci-dessous, une table (Vehicles) est ouverte et convertie en une couche d'animation : Open Table "vehicles" Interactive Add Map Layer vehicles Animate En règle générale, la dernière table suivie du mot-clé Animate correspond à la couche d'animation. Celle-ci doit être unique. Pour terminer le traitement de la couche d'animation, émettez une instruction Remove Map Layer Animate. Les couches d'animation sont soumises à des restrictions spéciales. Par exemple, les utilisateurs ne peuvent pas cliquer sur les objets d'une couche d'animation à l'aide de l'outil Informations. Par ailleurs, chaque fenêtre Carte ne peut contenir qu'une seule couche d'animation. Pour plus d'informations sur les couches d'animations, reportez-vous au Guide de l'utilisateur de MapBasic. Exemple Open Table "world" Map From world Open Table "cust1992" As customers Open Table "lead1992" As leads Add Map Auto Layer customers, leads Exemple d'ajout d'un groupe de couches : Open Table world Open Table worldcap Add Map Auto GroupLayer("new group", worldcap, world) Open Table ocean Add Map Layer ocean DestGrouplayer "new group" position 3 Voir également Instruction Map, Instruction Remove Map, Instruction Set Map 66 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction AdornmentInfo( ) Objectif Renvoie des informations sur les habillages comme les barres d'échelle. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe AdornmentInfo( window_id, attribute ) window_id est un identifiant de fenêtre entier. La fenêtre doit être un habillage. attribute est un code entier qui indique le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous pour les valeurs : Valeur renvoyée Nombre à virgule flottante, entier court, entier, valeur logique, pen (ligne), brush (trame), font (police) ou chaîne, en fonction du paramètre attribute. Description La fonction AdornmentInfo( ) peut renvoyer plusieurs attributs. Les codes sont définis dans le fichier MAPBASIC.DEF. Paramètre attribute ID Valeur renvoyée par AdornmentInfo( ) ADORNMENT_INFO_TYPE 1 Entier. Type d'habillage : 0 (zéro) pour la barre d'échelle. ADORNMENT_INFO_MAP_WINDOWID 2 Entier. WindowID de la fenêtre carte parent. ADORNMENT_INFO_IS_FIXED_POSITION 3 Logique. True pour position fixe, false pour position d'ancrage. ADORNMENT_INFO_FIXED_POSITION_X 4 Nombre à virgule flottante. Valeur X de la position fixe. ADORNMENT_INFO_FIXED_POSITION_Y 5 Nombre à virgule flottante. Valeur Y de la position fixe. ADORNMENT_INFO_FIXED_POSITION_UNITS 6 Char. Unités des valeurs de décalage X et Y de la position d'ancrage. ADORNMENT_INFO_DOCKED_POSITION 7 Entier court. Renvoie la position d'ancrage. ADORNMENT_INFO_DOCKED_OFFSET_X 8 Nombre à virgule flottante. Valeur X du décalage par rapport à la position d'ancrage. ADORNMENT_INFO_DOCKED_OFFSET_Y 9 Nombre à virgule flottante. Valeur Y du décalage par rapport à la position d'ancrage. ADORNMENT_INFO_DOCKED_OFFSET_UNITS 10 Char. Unités des valeurs de décalage X et Y de la position d'ancrage. Référence 67 Fonction AdornmentInfo( ) Paramètre attribute 68 ID Valeur renvoyée par AdornmentInfo( ) ADORNMENT_INFO_BACKGROUND_PEN 11 Pen (ligne). Style de bordure de l'arrière-plan de l'habillage. ADORNMENT_INFO_BACKGROUND_BRUSH 12 Brush (trame). Style de trame de remplissage de l'arrière-plan de l'habillage. ADORNMENT_INFO_SCALEBAR_TYPE 20 Entier court. Type de la barre d'échelle. ADORNMENT_INFO_SCALEBAR_MAP_UNITS 21 Char. Unités de la distance de la carte sur la barre d'échelle. ADORNMENT_INFO_SCALEBAR_PAPER_UNITS 22 Char. Unités de papier dans la barre d'échelle. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. ADORNMENT_INFO_SCALEBAR_BAR_LENGTH 23 Nombre à virgule flottante. Taille d'origine de la barre d'échelle. ADORNMENT_INFO_SCALEBAR_BAR_DISPLAY_LENGTH 24 Nombre à virgule flottante. Taille du tracé de la barre d'échelle. ADORNMENT_INFO_SCALEBAR_BAR_HEIGHT 25 Nombre à virgule flottante. Hauteur de la barre d'échelle. ADORNMENT_INFO_SCALEBAR_AUTO_SCALING 26 Logique. Pour marquer l'activation ou désactivation de la mise à l'échelle automatique. ADORNMENT_INFO_SCALEBAR_SHOW_CARTO_SCALE 27 Logique. Pour afficher l'échelle cartographique dans la barre d'outils. ADORNMENT_INFO_SCALEBAR_BAR_PEN 28 Pen (ligne). Style de ligne utilisé pour dessiner la barre d'échelle. ADORNMENT_INFO_SCALEBAR_BAR_BRUSH 29 Brush (trame). Trame, remplissage utilisé pour dessiner la barre d'échelle. ADORNMENT_INFO_SCALEBAR_BAR_FONT 30 Font (police) Police utilisée pour afficher le texte dans la barre d'échelle. ADORNMENT_INFO_SCALEBAR_BAR_DISPLAY_SCALE 31 Nombre à virgule flottante. Valeur numérique de l'échelle qui s'affiche dans la barre d'échelle. ADORNMENT_INFO_SB_AUTOOFF_SCALE 32 Nombre à virgule flottante. Valeur d'échelle non arrondie utilisée si la mise à l'échelle automatique est désactivée. ADORNMENT_INFO_SB_AUTOON_SCALE 33 Nombre à virgule flottante. Valeur d'échelle arrondie utilisée si la mise à l'échelle automatique est activée. ADORNMENT_INFO_SB_SCALE_STRING 34 Char. Valeur de l'échelle affichée, mais sous la forme d'une chaîne formatée (tels que des points décimaux et des séparateurs de milliers). MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Paramètre attribute ID Valeur renvoyée par AdornmentInfo( ) ADORNMENT_INFO_SB_CARTO_VALUE 35 Nombre à virgule flottante. Valeur de l'échelle cartographique sous forme de valeur numérique, sans arrondi. ADORNMENT_INFO_SB_CARTO_STRING 36 Char. Échelle cartographique sous forme de chaîne formatée. Exemple print AdornmentInfo(MapperInfo(FrontWindow(), 201), 1) Instruction Alter Button Objectif Active, désactive, sélectionne ou désélectionne un bouton à partir d'un ButtonPad (barre d'outils). Syntaxe Alter Button { handler | ID button_id } [ { Enable | Disable } ] [ { Check | Uncheck } ] handler est le gestionnaire qui est déjà affecté à un bouton existant. Le handler peut porter le nom d'une procédure MapBasic ou d'un code de commande standard (M_TOOLS_RULER ou M_WINDOW_LEGEND, par exemple) provenant de MENU.DEF. button_id est un numéro d'identification entier unique du bouton. Description Si l'instruction Alter Button spécifie un gestionnaire (nom d'une procédure, par exemple), MapInfo Professional modifie tous les boutons qui appellent ce gestionnaire. Si l'instruction spécifie un numéro button_id, MapInfo Professional ne modifie que le bouton qui correspond à cet ID. Le mot-clé Disable change l'état du bouton en grisé, de sorte que l'utilisateur ne puisse pas sélectionner le bouton. Le mot-clé Enable réactive un bouton qui était désactivé. Le mot-clé Check sélectionne et le mot-clé Uncheck désélectionne les boutons de type ToggleButton (bouton Afficher statistiques, par exemple). Le mot-clé Check a pour effet « d'enfoncer » un contrôle ToggleButton, tandis que le mot-clé Uncheck a pour effet de « relâcher » le bouton. Par exemple, l'instruction suivante sélectionne le bouton Afficher statistiques : Alter Button M_WINDOW_STATISTICS Check Remarque: L'activation ou la désactivation d'un bouton MapInfo Professional standard n'appelle pas automatiquement l'action de ce bouton. Dans la pratique, l'activation du bouton Afficher/Cacher statistiques n'affiche pas la fenêtre Statistiques, mais influe uniquement sur l'apparence du bouton. Pour appeler une action comme si l'utilisateur avait activé ou Référence 69 Instruction Alter ButtonPad désactivé le bouton, il convient d'émettre l'instruction appropriée. Dans cet exemple, l'instruction appropriée est l'instruction Open Window Statistics. De la même manière, vous pouvez utiliser le mot-clé Check pour modifier l'apparence d'un ToolButton. Dans la pratique, l'activation d'un ToolButton ne sélectionne toutefois pas l'outil en question, mais ne fait que changer l'apparence de ce bouton. Pour qu'un outil standard devienne l'outil actif, il convient d'émettre une instruction Run Menu Command, comme dans l'exemple ci-dessous : Run Menu Command M_TOOLS_RULER Pour qu'un outil personnalisé devienne l'outil actif, utilisez la syntaxe Run Menu Command ID IDnum. Voir également Instruction Alter ButtonPad, Instruction Create ButtonPad, Instruction Run Menu Command Instruction Alter ButtonPad Objectif Affiche/masque un ButtonPad (barre d'outils) ou ajoute/supprime des boutons. Syntaxe Alter ButtonPad { current_title | ID pad_num } [ Add button_definition [ button_definition ... ] ] [ Remove { handler_num | ID button_id } [ , ... ] ] [ Title new_title ] [ Width width ] [ Position ( x, y ) [ Units unit_name ] ] [ ToolbarPosition ( row, column ) ] [ { Show | Hide } ] [ { Fixed | Float | Top | Left | Right | Bottom } ] [ Destroy ] current_title est la chaîne de titre de la barre d'outils (« Général », par exemple). pad_num est le numéro d'identification d'une barre d'outils standard : • • • • • • • 1 pour la barre d'outils Général 2 pour la barre d'outils Dessin 3 pour la barre d'outils Outils 4 pour la barre d'outils Standard 5 pour la barre d'outils Système de gestion de base de données (DBMS) 6 pour les services Web 7 Réservé handler_numest un code de gestionnaire entier (M_TOOLS_RULER (1710), par exemple) provenant de MENU.DEF. button_id est le numéro d'identification unique d'un bouton personnalisé. new_title est une chaîne qui devient le nouveau titre de la barre d'outils. Elle est visible lorsque la barre d'outils est flottante. 70 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z width correspond à la largeur de la barre en termes de boutons inclus. x, y spécifient la position de la barre d'outils lorsqu'elle est flottante, exprimée en unités papier. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. unit_name est une chaîne qui représente le nom d'une unité papier (« cm » pour centimètres, par exemple). row, column spécifient la position de la barre d'outils lorsqu'elle est ancrée (par exemple, 0, 0 place la barre à gauche de la ligne supérieure des barres d'outils et 0, 1 représente la deuxième barre d'outils sur la ligne supérieure). • La position row démarre au niveau supérieur et sa valeur augmente au fur et à mesure qu'elle descend vers le niveau inférieur. Il s'agit d'une valeur relative aux lignes qui se trouvent à cette position (supérieure ou inférieure). Lorsqu'une barre de menus se trouve à la même position, les nombres deviennent alors relatifs à cette barre. Si une barre d'outils est située juste en dessous de la barre de menus, sa valeur row est 0. Si elle est située directement au-dessus de la barre de menus, sa valeur row est -1. • La position column démarre à gauche et sa valeur augmente au fur et à mesure qu'elle se déplace vers la droite. Il s'agit d'une valeur relative aux colonnes qui se trouvent à cette position (à gauche ou à droite). Par exemple, si une barre d'outils est ancrée à gauche et que la barre de menus est ancrée sur la position gauche, le numéro de la colonne à gauche de la barre de menus est -1. Le numéro de la colonne à droite de la barre de menus est 0. Chaque clause button_definition peut être composée du mot-clé Separator ou disposer de la syntaxe suivante : { PushButton | ToggleButton | ToolButton } Calling { procedure | menu_code | OLE methodname | DDE server, topic } [ ID button_id ] [ Icon icon_code [ File file_spec ] ] [ Cursor cursor_code [ File file_spec ] ] [ DrawMode dm_code ] [ HelpMsg msg ] [ ModifierKeys { On | Off } ] [ { Enable | Disable } ] [ { Check | Uncheck } ] procedure correspond à la procédure de gestionnaire qui doit être appelée lors de l'utilisation d'un bouton. menu_code est un code de menu standard de MapInfo Professional, issu du fichier MENU.DEF, (M_FILE_OPEN (102), par exemple). MapInfo Professional exécute la commande de menu lorsque l'utilisateur clique sur le bouton. methodname est une chaîne définissant un nom de méthode OLE. Pour plus d'informations sur la syntaxe de la clause Calling OLE reportez-vous à la section Instruction Create ButtonPad. server et topic sont des chaînes qui spécifient un serveur DDE et un nom de rubrique. Pour plus d'informations sur la syntaxe de la clause Calling DDE, reportez-vous à la section Instruction Create ButtonPad. button_id spécifie le numéro d'identification unique du bouton. Ce numéro peut être utilisé en tant que balise dans l'aide, en tant que paramètre permettant au gestionnaire d'identifier le bouton utilisé (dans les cas où un même gestionnaire pourrait être appelé par différents boutons) ou en tant que paramètre à utiliser avec l'instruction Alter Button. Référence 71 Instruction Alter ButtonPad Icon icon_code spécifie l'icône devant s'afficher sur le bouton icon_code peut correspondre à l'un des codes d'icône MapInfo standard répertoriés dans ICONS.DEF, (MI_ICON_RULER (11), par exemple). Si la sous-clause File spécifie le nom d'un fichier qui contient des ressources d'icône, icon_code est un identifiant de ressource entier indiquant une ressource dans le fichier. Il est possible de définir la taille des boutons avec un identifiant de fichier de ressources de icon_code pour les boutons de petite taille et icon_code+1 pour les boutons de grande taille (avec des identifiants de fichier de ressources de icon_code et icon_code+1 respectivement). Cursor cursor_code spécifie la forme du pointeur de la souris lorsque l'utilisateur se sert de l'outil ToolButton. cursor_codeest un code (MI_CURSOR_ARROW (0), par exemple) provenant d'ICONS.DEF. Cette clause s'applique uniquement aux boutons d'outils. Si la sous-clause File définit le nom d'un fichier contenant des ressources de type icône, cursor_code est un identifiant entier correspondant à une ressource du fichier. dm_code indique si l'utilisateur peut effectuer un clic et un glisser ou uniquement un clic avec l'outil. dm_code est un code (DM_CUSTOM_LINE (33), par exemple) provenant d'ICONS.DEF. S'applique uniquement aux ToolButtons. msg est une chaîne qui donne des indications sur la barre d'état du bouton et spécifie, le cas échéant, une info-bulle. La première partie de msg est le message d'aide de la barre d'état. Si la chaîne msg inclut les caractères \n, le texte qui suit apparaîtra comme message d'aide dans l'info-bulle. La clause ModifierKeys ne s'applique qu'aux ToolButtons. Elle indique si les touches Maj et Ctrl influent sur le tracé du « ruban élastique » lorsque l'utilisateur fait glisser la souris tout en utilisant un ToolButton. La valeur définie par défaut est Off (les touches de modification restent sans effet). Description Utilisez l'instruction Alter ButtonPad pour afficher, masquer, modifier ou supprimer un ButtonPad existant. Pour plus d'informations sur les ButtonPads, reportez-vous au Guide de l'utilisateur MapBasic. Pour afficher ou masquer un ButtonPad, incluez le mot-clé Show ou Hide (reportez-vous aux exemples ci-après). L'utilisateur peut également afficher et masquer des ButtonPads en sélectionnant Options > Barre d'outils. Pour indiquer si la barre est fixée en haut de l'écran (« ancrage ») ou est flottante comme une fenêtre, incluez respectivement le mot-clé Fixed ou le mot-clé Float. L'utilisateur peut également indiquer si la barre peut être ancrée ou non en la faisant glisser vers le sommet de l'écran ou à partir de celui-ci. Pour un plus grand contrôle de l'endroit de l'écran où la barre est ancrée, servez-vous des mots-clés Top (équivalent de Fixed), Left, Right ou Bottom. Lorsqu'une barre est flottante, sa position est contrôlée par la clause Position. Lorsqu'une barre est ancrée, sa position est contrôlée par la clause ToolbarPosition. Pour supprimer un ButtonPad, incluez le mot-clé Destroy. Une fois un ButtonPad supprimé, il n'apparaît plus dans la boîte de dialogue accessible en sélectionnant Options > Barres d'outils. L'instruction Alter ButtonPad peut ajouter des boutons à des ButtonPads existants (Général et Dessin, par exemple). Vous pouvez ajouter trois types de contrôles de boutons : les contrôles PushButton (sur lesquels l'utilisateur peut cliquer pour afficher, par exemple, une boîte de dialogue), les contrôles ToggleButton (que l'utilisateur peut sélectionner en cliquant dessus, puis désélectionner en recliquant dessus) et les contrôles ToolButton (que l'utilisateur peut sélectionner, puis utiliser pour cliquer sur une fenêtre Carte ou Mise en page). 72 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Si vous incluez le mot-clé facultatif Disable lorsque vous ajoutez un bouton, le bouton est désactivé (il apparaît en grisé) lorsqu'il s'affiche. Les instructions Alter Button peuvent activer le bouton. Si toutefois le gestionnaire du bouton est une commande MapInfo Professional standard, MapInfo Professional active ou désactive automatiquement le bouton selon que la commande est actuellement activée ou non. Si vous incluez le mot-clé facultatif Check lorsque vous ajoutez un ToggleButton ou un ToolButton, le bouton est automatiquement sélectionné (« activé ») lorsqu'il s'affiche pour la première fois. Si l'utilisateur effectue un clic pendant qu'il utilise un outil ToolButton personnalisé, MapInfo Professional appelle automatiquement le gestionnaire de l'outil, sauf si l'utilisateur annule l'opération (en appuyant sur la touche Echap pendant qu'il fait glisser la souris, par exemple). Une procédure de gestionnaire peut appeler CommandInfo( ) pour déterminer si l'utilisateur a effectué un clic. Lorsque plusieurs outils appellent la même procédure de gestionnaire, la procédure peut appeler CommandInfo( ) pour déterminer l'ID du bouton en cours d'utilisation. Icônes et curseurs personnalisés La clause Icon spécifie l'icône qui s'affiche sur le bouton. Si vous omettez la clause File, le paramètre n doit se référer à l'un des codes d'icône répertoriés dans ICONS.DEF (MI_ICON_RULER (11), par exemple). Remarque: MapInfo Professional intègre de nombreuses icônes qui ne font pas partie de l'interface utilisateur courante. Pour voir une démonstration de ces icônes, exécutez l'exemple de programme ICONDEMO.MBX. Cet exemple de programme présente des icônes et vous permet de copier un code de définition d'icône dans le Presse-papiers (pour que vous puissiez le coller dans votre programme par la suite). La sous-clause File file_spec se réfère à un fichier DLL qui contient des ressources bitmap. Le paramètre n se réfère à l'ID d'une ressource bitmap. Pour plus d'informations sur la création d'icônes Windows, reportez-vous au Guide de l'utilisateur MapBasic. La définition d'un ToolButton peut également inclure une clause Cursor, qui contrôle l'apparence du pointeur de la souris pendant que l'utilisateur utilise l'outil personnalisé. Les codes de curseur disponibles, tels que MI_CURSOR_CROSSHAIR (138) ou MI_CURSOR_ARROW (0), sont répertoriés dans le fichierICONS.DEF. La procédure de spécification d'un curseur personnalisé est semblable à celle d'une icône personnalisée. Pour connaître les spécifications concernant la taille des icônes personnalisées selon les différentes versions de MapInfo Professional, reportez-vous à la section Instruction Create ButtonPad À propos de la taille des icônes. Modes de dessin personnalisés Une définition ToolButton peut inclure une clause DrawMode, qui indique si l'utilisateur peut effectuer un glisser avec l'outil (pour tracer une ligne, par exemple) ou seulement effectuer un clic (pour dessiner un point, par exemple). Les modes de dessin disponibles sont répertoriés dans le tableau ci-dessous. Les codes figurant dans la colonne de gauche sont définis dans ICONS.DEF. Référence 73 Instruction Alter ButtonPad Paramètre DrawMode ID Description DM_CUSTOM_POINT 34 L'utilisateur ne peut pas effectuer de glisser pendant qu'il utilise l'outil personnalisé. DM_CUSTOM_LINE 33 Pendant que l'utilisateur effectue un glisser, une ligne relie le curseur à l'emplacement où l'utilisateur a cliqué. DM_CUSTOM_RECT 32 Pendant que l'utilisateur effectue un glisser, une zone rectangulaire apparaît. DM_CUSTOM_CIRCLE 30 Pendant que l'utilisateur effectue un glisser, une zone circulaire apparaît. DM_CUSTOM_ELLIPSE 31 Pendant que l'utilisateur effectue un glisser, une zone elliptique apparaît. Si vous incluez la clause ModifierKeys, l'utilisateur peut forcer la zone à prendre une forme circulaire en maintenant la touche Maj enfoncée. DM_CUSTOM_POLYGON 35 L'utilisateur peut dessiner un polygone. Pour récupérer l'objet dessiné par l'utilisateur, utilisez l'appel de fonction : fonction CommandInfo( ) (CMD_INFO_CUSTOM_OBJ). DM_CUSTOM_POLYLINE 36 L'utilisateur peut dessiner une polyligne. Pour récupérer l'objet dessiné par l'utilisateur, utilisez l'appel de fonction : fonction CommandInfo( ) (CMD_INFO_CUSTOM_OBJ). Tous les modes de dessin, à l'exception de DM_CUSTOM_POINT (34), prennent en charge la fonction Autoscroll, qui permet à l'utilisateur de faire défiler une carte ou une mise en page en cliquant sur le bord de la fenêtre et en le faisant glisser. Pour désactiver la fonction Autoscroll, reportez-vous à la section Instruction Set Window. Remarque: MapBasic prend en charge un autre mode de dessin dont les utilisateurs de MapInfo Professional ne disposent pas. Si un ToolButton personnalisé comporte la clause Calling suivante : Calling M_TOOLS_SEARCH_POLYGON (1733), l'outil autorise alors l'utilisateur à dessiner un polygone. Lorsque l'utilisateur effectue un double-clic pour fermer le polygone, MapInfo Professional sélectionne tous les objets (dans les couches sélectionnables de la carte) figurant dans ce polygone. Le polygone n'est pas enregistré. Exemples L'exemple suivant affiche le ButtonPad Général et masque le ButtonPad Dessin : Alter ButtonPad "Main" Show Alter ButtonPad "Drawing" Hide L'exemple suivant ancre le ButtonPad Général et définit sa position d'ancrage sur 0,0 (en haut à gauche) : Alter ButtonPad "Main" Fixed ToolbarPosition(0,0) 74 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z L'exemple suivant déplace le ButtonPad Général de telle sorte qu'il devienne flottant au lieu d'être ancré et définit sa position de flottement sur la moitié d'un pouce à l'intérieur de l'angle supérieur gauche de l'écran. Alter ButtonPad "Main" Float Position(0.5,0.5) Units "in" L'exemple de programme ScaleBar contient l'instruction Alter ButtonPad qui ajoute un ToolButton personnalisé au ButtonPad Outils. (Notez que « ID 3 » identifie le ButtonPad Outils.) Alter ButtonPad ID 3 Add Separator ToolButton Icon MI_ICON_CROSSHAIR HelpMsg "Draw a distance scale on a map\nScale Bar" Cursor MI_CURSOR_CROSSHAIR DrawMode DM_CUSTOM_POINT Calling custom_tool_routine Show Remarque: Le mot-clé Separator insère un espace entre le dernier bouton du ButtonPad Outils et le nouveau bouton MI_CURSOR_CROSSHAIR (138). Voir également Instruction Alter Button, Fonction ButtonPadInfo( ), Instruction Create ButtonPad, Instruction Set Window Instruction Alter Cartographic Frame Objectif L'instruction Alter Cartographic Frame modifie la position, le titre, le sous-titre, la bordure et le style des cadres d'une légende cartographique existante créée à l'aide de l'instruction Create Cartographic Legend. (Pour modifier la taille, la position ou le titre de la fenêtre Légende, utilisez l'instruction Set Window.) Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Cette instruction ne peut pas modifier le titre, le sous-titre ou les polices d'un cadre thématique dans la fenêtre de conception de légende. Pour effectuer ces modifications, utilisez l'instruction Set Legend. Syntaxe Alter Cartographic Frame [ Window legend_window_id ] Id { frame_id } [ Position ( x, y ) [ Units paper_units ] ] [ Title [ frame_title ] [ Font... ] ] [ SubTitle [ frame_subtitle ] [ Font... ] ] [ Border Pen... ] [ Style [ Font... ] [ ID { id } Text { style_name } ] [Line Pen... | Region Pen... Brush... | Symbol Symbol... ] ] [ , ... ] legend_window_id est un identifiant de fenêtre entier que vous pouvez obtenir en appelant la fonction FrontWindow( ) et la fonction WindowID( ). Référence 75 Instruction Alter Control frame_id est l'identifiant du cadre de la légende. Vous ne pouvez pas utiliser un nom de couche. Par exemple, trois cadres sur une légende doivent porter les identifiants 1, 2 et 3 consécutifs. frame_title est une chaîne qui définit un titre de cadre. frame_subtitle est une chaîne qui définit un sous-titre de cadre. id est la position de ce cadre dans la liste de styles. Pour obtenir des informations sur le nombre de styles d'un cadre, utilisez la fonction LegendFrameInfo( ) avec l'attribut FRAME_NUM_STYLES (13). style_name est une chaîne qui s'affiche à côté de chaque symbole du cadre spécifié dans ID. Le caractère « # » sera remplacé par le nom de la couche. Le caractère « % » sera remplacé par le texte « Ligne », « Point » ou « Région », selon le symbole. Par exemple, "% of #" deviendra "Region of States" pour la couche STATES.TAB. Description Si aucune clause Window n'est spécifiée, MapInfo Professional utilise la fenêtre Légende supérieure. La clause Position contrôle la position du cadre dans la fenêtre Légende. La position du coin supérieur gauche de la fenêtre Légende correspond à 0, 0. Les valeurs de Position utilisent les paramètres des unités papier, tels que « in » pour inches (pouces) ou « cm » pour centimètres. (Reportez-vous à la section Instruction Set Paper Units). Le paramètre d'unités papier actuelles de MapBasic est défini par défaut en pouces. Un programme MapBasic peut modifier ce paramètre au moyen de l'instruction Set Paper Units. Une instruction Alter Cartographic Frame peut remplacer les unités papier actuelles en incluant la sous-clause facultative Units dans la clause Position. Les clauses Title et SubTitle acceptent du nouveau texte, une nouvelle police ou les deux. La clause Style doit contenir la liste de définitions des styles figurant dans le cadre. Vous pouvez uniquement mettre à jour le type Style d'un style personnalisé. Vous pouvez mettre à jour le type Text de tous les styles. Il est impossible d'ajouter ou de supprimer des styles dans un type de cadre. Voir également Instruction Create Cartographic Legend, Instruction Set Cartographic Legend, Instruction Add Cartographic Frame, Instruction Remove Cartographic Frame Instruction Alter Control Objectif Change l'état d'un contrôle dans la boîte de dialogue personnalisée active. Syntaxe Alter Control id_num [ Title { title | From Variable array_name } ] [ Value value ] [ { Enable | Disable } ] [ { Show | Hide } ] [ Active ] id_num est un entier qui identifie l'un des contrôles de la boîte de dialogue active. 76 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z title est une chaîne qui représente le nouveau titre à affecter au contrôle. array_name est le nom d'une variable de tableau. Il permet de réinitialiser le contenu des contrôles ListBox, MultiListBox et PopupMenu. value est la nouvelle valeur à associer au contrôle spécifié. Restrictions Vous ne pouvez pas exécuter cette instruction via la fenêtre MapBasic. Description L'instruction Alter Control modifie un ou plusieurs attributs d'un contrôle de la boîte de dialogue active. L'instruction Alter Control ne doit de ce fait être émise que lorsque la boîte de dialogue est active (à partir d'une procédure de gestionnaire qui est appelée par l'un des contrôles de la boîte de dialogue, par exemple). Si plusieurs boîtes de dialogue sont imbriquées à l'écran, l'instruction Alter Control influe uniquement sur les contrôles de la boîte de dialogue qui se trouve au premier plan. The id_num spécifie le contrôle de la boîte de dialogue à modifier. Il correspond au paramètre id_num indiqué dans la clause ID de l'instruction Dialog. Chacune des clauses facultatives (Title, Value, Enable/Disable, Hide/Show, Active) modifie un attribut différent d'un contrôle de boîte de dialogue. Notez que toutes ces clauses peuvent être incluses dans une seule instruction. Une seule instruction Alter Control peut de ce fait changer le nom, la valeur et l'état activé/désactivé d'un contrôle de boîte de dialogue. Certains attributs ne s'appliquent pas à tous les types de contrôles. Par exemple, un contrôle Button peut être activé ou désactivé sans avoir d'attribut Value. La clause Title réinitialise le texte qui figure dans la plupart des contrôles (sauf pour les contrôles Picker et EditText ; pour réinitialiser le contenu d'un contrôle EditText, définissez son attribut Value). Si le contrôle est un contrôle ListBox, MultiListBox ou PopupMenu, la clause Title peut lire le nouveau contenu du contrôle à partir d'un tableau de variables de chaîne, en spécifiant une clause From Variable. Le mot-clé Active ne s'applique qu'aux contrôles EditText. Une instruction Alter Control...Active place le focus clavier sur le contrôle EditText spécifié. Utilisez les mots-clés Hide et Show pour afficher et masquer respectivement les contrôles. Pour désélectionner tous les éléments d'un contrôle MultiListBox, utilisez un paramètre de valeur nul. Pour ajouter un élément de liste à l'ensemble des éléments MultiListBox sélectionnés, émettez une instruction Alter Control avec une valeur entière positive correspondant au numéro de l'élément de liste. Remarque: Dans ce cas, n'émettez pas l'instruction Alter Control à partir du gestionnaire du contrôle MultiListBox. Vous pouvez utiliser une instruction Alter Control pour modifier le texte qui s'affiche dans un contrôle StaticText. MapInfo Professional ne peut toutefois pas augmenter la taille du contrôle StaticText une fois qu'il a été créé. Par conséquent, si vous planifiez de modifier la longueur d'un contrôle StaticText, vous pouvez y ajouter des espaces lorsque vous le définissez pour la première fois. Par exemple, l'instruction Dialog pourrait inclure la clause suivante : Control StaticText ID 1 Title "Message goes here" + Space$(30) Référence 77 Instruction Alter Designer Frame Exemple Dans l'exemple suivant, une boîte de dialogue qui contient deux cases à cocher, un bouton OK et un bouton Cancel, est créée. Le bouton OK est initialement désactivé (il apparaît en grisé). Le bouton OK ne devient disponible que lorsque l'utilisateur active l'une des deux ou les deux cases à cocher. Include "mapbasic.def" Declare Sub Main Declare Sub checker Sub Main Dim browse_it, map_it As Logical Dialog Title "Display a file" Control CheckBox Title "Display in a Browse window" Value 0 Calling checker ID 1 Into browse_it Control CheckBox Title "Display in a Map window" Value 0 Calling checker ID 2 Into map_it Control CancelButton Control OKButton ID 3 Disable If CommandInfo(CMD_INFO_DLG_OK) Then ' ... then the user clicked OK... End If End Sub Sub checker ' If either check box is checked, ' enable the OK button; otherwise, Disable it. If ReadControlValue(1) Or ReadControlValue(2) Then Alter Control 3 Enable Else Alter Control 3 Disable End If End Sub Instruction Alter Designer Frame Objectif L'instruction Alter Designer Frame modifie la position, le titre, le sous-titre et le style des cadres d'une légende existante créée à l'aide de l'instruction Create Designer Legend. (Pour modifier la taille, la position ou le titre de la fenêtre Légende, utilisez l'instruction Set Window.) Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Cette instruction ne peut pas modifier le titre, le sous-titre ou les polices d'un cadre thématique dans la fenêtre de conception de légende. Pour effectuer ces modifications, utilisez l'instruction Set Legend. 78 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Syntaxe Alter Designer Frame [ Window legend_window_id ] Id { frame_id } [ Position ( x, y ) [ Units paper_units ] ] [ Title [ frame_title ] [ Font... ] ] [ SubTitle [ frame_subtitle ] [ Font... ] ] [ Columns number_of_columns ] | [ Height frame_height [ Units paper_units ] ] [ Region [ Height region_height [ Units paper_units ] ] ] [ Region [ Width region_width [ Units paper_units ] ] ] [ Line [ Width line_width [ Units paper_units ] ] ] [ Auto Font Size { On | Off } ] [ Order { Default | Ascending | Descending | { Custom id | id : id [ , id | id : id ... ] ... } } ] [ Style [ Font... ] [ ID { id } Text { style_name } ] [Line Pen... | Region Pen... Brush... | Symbol Symbol... ] ] [ , ... ] legend_window_id est un identifiant de fenêtre entier que vous pouvez obtenir en appelant la fonction FrontWindow( ) et la fonction WindowID( ). frame_id est l'identifiant du cadre de la légende. Vous ne pouvez pas utiliser un nom de couche. Par exemple, trois cadres sur une légende doivent porter les identifiants 1, 2 et 3 consécutifs. paper_units est une chaîne qui représente le nom d'une unité papier. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. frame_title est une chaîne qui définit un titre de cadre. frame_subtitle est une chaîne qui définit un sous-titre de cadre. number_of_columns est le nombre de colonnes à afficher dans un cadre. frame_height remplace la clause Columns lorsque l'utilisateur redimensionne un cadre de légende. Hauteur du cadre en unités papier. Valeur écrite dans le document WOR lorsque le cadre a été manuellement redimensionné. region_height est une valeur qui représente la nouvelle hauteur d'un pavé dans le cadre de la carte de la fenêtre de conception de légende. Vous pouvez spécifier de 8 à 144 points, de 0,666667 à 12 picas, de 0,111111 à 2 pouces, de 0,282222 à 5,08 millimètres ou de 0,282222 à 5,08 centimètres. Si elle n'est pas spécifiée, la valeur par défaut de 32 points est utilisée (peut être définie comme une préférence). region_width est une valeur qui représente la nouvelle largeur d'un pavé dans le cadre de la carte de la fenêtre de conception de légende. Vous pouvez spécifier de 8 à 144 points, de 0,666667 à 12 picas, de 0,111111 à 2 pouces, de 0,282222 à 5,08 millimètres ou de 0,282222 à 5,08 centimètres. Si elle n'est pas spécifiée, la valeur par défaut de 32 points est utilisée (peut être définie comme une préférence). line_width est une valeur qui représente la nouvelle largeur d'un segment de ligne dans le cadre de la carte de la fenêtre de conception de légende. Vous pouvez spécifier de 12 à 144 points, de 1 à 12 picas, de 0,666667 à 2 pouces, de 4,23333 à 50,80 millimètres ou de 4,23333 à 50,80 centimètres. Si elle n'est pas spécifiée, la valeur par défaut de 36 points est utilisée (peut être définie comme une préférence). id est la position de ce cadre dans la liste de styles. Pour obtenir des informations sur le nombre de styles d'un cadre, utilisez la fonction LegendFrameInfo( ) avec l'attribut FRAME_NUM_STYLES (13). Référence 79 Instruction Alter Designer Frame style_name est une chaîne qui s'affiche à côté de chaque symbole du cadre spécifié dans ID. Le caractère « # » sera remplacé par le nom de la couche. Le caractère « % » sera remplacé par le texte « Ligne », « Point » ou « Région », selon le symbole. Par exemple, « % of # » deviendra « Region of States » pour la couche STATES.TAB. Description Si aucune clause Window n'est spécifiée, MapInfo Professional utilise la fenêtre Légende supérieure. La clause Position contrôle la position du cadre dans la fenêtre Légende. La position au coin supérieur gauche de la fenêtre Légende correspond à 0, 0. Les valeurs de Position utilisent les paramètres des unités papier, tels que « in » pour inches (pouces) ou « cm » pour centimètres. Le paramètre d'unités papier actuelles de MapBasic est défini par défaut en pouces. Un programme MapBasic peut modifier ce paramètre au moyen de l'instruction Set Paper Units. Une instruction Alter Designer Frame peut remplacer les unités papier actuelles grâce à l'inclusion de la sous-clause facultative Units dans la clause Position. Les clauses Title et SubTitle acceptent du texte nouveau et/ou une nouvelle police. La clause Columns est le nombre de colonnes à afficher dans un cadre. La clause Region Height indique une hauteur spécifique pour un pavé dans le cadre de légende de la fenêtre de conception de légende. La clause Region Width indique une largeur spécifique pour un pavé dans le cadre de légende de la fenêtre de conception de légende. La clause Line Width indique une largeur spécifique pour un échantillon de ligne dans le cadre de légende de la fenêtre de conception de légende. Auto Font Size active ou désactive le redimensionnement du pavé de la légende en fonction du paramètre de taille de police. La clause Order permet d'ajouter la fonctionnalité de tri ou de personnalisation de l'ordre des lignes des légendes. Vous pouvez trier les légendes par étiquette de style ou suivant votre propre ordre. Les options d'ordre de tri sont les suivantes : Par défaut, Ordre Croissant, Ordre Décroissant et Ordre Personnalisé. La clause Order est uniquement écrite dans un document si la légende est triée dans l'ordre croissant, décroissant ou personnalisé. Un ordre de tri Par défaut correspond à l'ordre que l'assistant Créer une légende utilise pour créer les lignes de légende. Si vous créez une légende en fonction de styles uniques, cet ordre s'applique à ces styles, qui sont alors affichés sous forme de lignes dans la légende. Si vous sélectionnez l'ordre de tri Personnalisé, les valeursid sont des identifiants de ligne commençant par 1, triés de haut en bas. Si vous regardez la liste de lignes de la boîte de dialogue Propriétés du cadre de légende, l'identifiant de la première ligne est égal à 1, et ainsi de suite, dans l'ordre croissant jusqu'en bas de la liste. Pour plus d'informations, reportez-vous à la section Options d'ordre personnalisé. La clause Display contrôle l'affichage de chaque ligne. Chaque ligne de MapBasic commence par la clause Style. À la fin de chaque clause Style se trouve une clause Display facultative. Display On rend la ligne visible. Display Off masque la ligne. Si la clause Display est absente, la ligne est visible. La clause Display est écrite uniquement dans un fichier de document pour des styles non visibles dans un cadre de légende. 80 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Remarque: La clause Columns ou Height s'applique aux légendes et aux légendes thématiques. Cependant, il convient de spécifier l'ensemble des autres propriétés de légende thématique via l'instruction Set Legend. Les unités papier sont les suivantes : cm (centimètres), mm (millimètres), in (pouces), pt (points) et pica. Les conversions entre ces unités sont les suivantes : • 1 pouce (in) = 2,54 centimètres, 254 millimètres, 6 picas, 72 points • 1 point (pt) = 0,01389 pouce, 0,03528 centimètre, 0,35278 millimètre, 0,08333 pica • 1 pica = 0,16667 pouce, 0,42333 centimètre, 4,23333 millimètres, 12 points • 1 centimètre (cm) = 0,39370 pouce, 10 millimètres, 2,36220 picas, 28,34646 points • 1 millimètre (mm) = 0,1 centimètre, 0,03937 pouce, 0,23622 pica, 2,83465 points La clause Style doit contenir la liste de définitions des styles figurant dans le cadre. Vous pouvez uniquement mettre à jour le type Style d'un cadre de légende créé à l'aide du mot-clé NoRefresh. Vous pouvez mettre à jour le type Text de tous les styles. Il est impossible d'ajouter ou de supprimer des styles dans un type de cadre. Seules les clauses suivantes s'appliquent aux légendes thématiques. Il s'agit des clauses : [ Position ( x, y ) [ Units paper_units ] ] [ Columns number_of_columns ] | [ Height frame_height [ Units paper_units ] ] Exemple L'exemple suivant modifie l'échantillon de style 1 Frame 1 d'une couche de points Cities. Il met à jour le titre, le sous-titre et le texte en regard de ses symboles. Alter Designer Frame Window FrontWindow() ID 1 Position (1, .5) Units "in" Title "Big Cities" Subtitle "125 Biggest Cities" Style Font ("Arial",2,12,255) ID 1 Text "City Points" Voir également Instruction Add Designer Frame, Instruction Create Designer Legend, Instruction Remove Designer Frame, Instruction Set Designer Legend Options d'ordre personnalisé Les deux instructions Create Designer Legend et Alter Designer Frame incluent maintenant une clause Order avec la possibilité de spécifier un ordre de tri personnalisé. Custom id | id : id [ , id | id : id ... ] Où ce qui suit indique une plage d'identifiants de ligne dans l'ordre croissant (Id2 > Id1) : Id1 : Id2 Référence 81 Instruction Alter Designer Text Modification de l'ordre d'une liste La syntaxe d'un ordre personnalisé de lignes de légende est similaire à la clause Order (pour modifier l'ordre des couches) dans l'instruction Set Map. Elle est relativement facile à utiliser si vous souhaitez modifier l'ordre en début de liste ; il est par contre plus compliqué de le faire en fin de liste. Par exemple, si vous souhaitez inverser l'ordre des trois premières lignes, il vous suffit d'utiliser la commande suivante : Order Custom 3, 2, 1 Vous n'avez pas besoin de mentionner les autres lignes. Si vous disposez de 10 lignes et que vous souhaitez intervertir les deux dernières, vous devez mentionner tous les identifiants comme suit : Order Custom 1, 2, 3, 4, 5, 6, 7, 8, 10, 9 Pour rendre cette commande plus compacte, utilisez la syntaxe suivante : Order Custom 1:8, 10, 9 Indication d'une plage de valeurs Pour indiquer une plage de valeurs, utilisez les deux points (:), comme dans les exemples suivants : Long form: Order Custom 2, 5, 6, 7, 8, 9, 10, 1, 3, 4 Short Order Order Order form: Custom 2, 5:10, 1, 3, 4 Custom 2, 5:10, 1, 3:4 (same as above but also valid) Custom 2, 5:10, 1 (same as above but also valid) Long form: Order Custom 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 11 Short form: Order Custom 1:10, 12:20, 11 La liste de valeurs ne doit pas comporter de doublons : cela entraînerait une erreur. L'exemple suivant provoque une erreur : Order Custom 1:5, 8, 4:7 les ID des lignes 4 et 5 sont des doublons. Pour voir cela, développez la syntaxe suivante (qui provoque une erreur) : Order Custom 1, 2, 3, 4, 5, 8, 4, 5, 6, 7 Il est possible d'utiliser la syntaxe alternative pour créer ou modifier une légende dans la fenêtre de conception de légende. Pour les documents, la syntaxe courte est utilisée lorsque les légendes de la fenêtre de conception de légende comportent plus de 50 lignes triées dans un ordre personnalisé. Instruction Alter Designer Text L'instruction Alter Designer Text modifie le texte dans un cadre de texte et la position du cadre de texte dans la fenêtre de conception de légende. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. 82 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Syntaxe Alter Designer Text [ Window legend_window_id ] [ ID textframe_id [ Text { frame_text [ Font... ] } [ Position ( x, y ) [ Units paper_units ] ] ] ] legend_window_id est un identifiant de fenêtre entier que vous pouvez obtenir en appelant la fonction FrontWindow( ) et la fonction WindowID( ). textframe_id est l'identifiant unique d'un cadre de texte (pas d'un cadre de légende) dans la fenêtre de conception de légende. frame_text est un texte pour un titre de légende, un sous-titre ou un texte descriptif (des informations sur le copyright par exemple). x indique la distance souhaitée entre la partie supérieure du document et celle de la fenêtre. y indique la distance souhaitée entre la partie gauche du document et celle de la fenêtre. Remarque: Le document désigne ici l'espace client (la barre de titre, la barre d'outils et la barre d'état sont donc exclues). paper_units est une chaîne qui représente le nom d'une unité papier : cm (centimètres), mm (millimètres), in (pouces), pt (points), et pica. • • • • • 1 pouce (in) = 2,54 centimètres, 254 millimètres, 6 picas, 72 points 1 point (pt) = 0,01389 pouce, 0,03528 centimètre, 0,35278 millimètre, 0,08333 pica 1 pica = 0,16667 pouce, 0,42333 centimètre, 4,23333 millimètres, 12 points 1 centimètre (cm) = 0,39370 pouce, 10 millimètres, 2,36220 picas, 28,34646 points 1 millimètre (mm) = 0,1 centimètre, 0,03937 pouce, 0,23622 pica, 2,83465 points Description Si Text n'indique pas la clause Font, la police par défaut est utilisée. La clause Position contrôle la position du cadre dans la fenêtre de conception de légende. La position au coin supérieur gauche de la fenêtre de conception de légende correspond à 0, 0. Les valeurs de Position utilisent les paramètres des unités papier, tels que « in » pour inches (pouces) ou « cm » pour centimètres. (Reportez-vous à l'Instruction Set Paper Units). Le paramètre d'unités papier actuelles de MapBasic est défini par défaut en pouces. Un programme MapBasic peut modifier ce paramètre au moyen de l'instruction Set Paper Units. Vous pouvez remplacer les unités papier actuelles en incluant la sous-clause facultative Units dans la clause Position. Exemple Alter Designer Text Window frontwindow() ID 1 Text "Title Changed" Font("Arial Greek", 0, 14, 14680064) Voir également Instruction Create Designer Legend, Instruction Add Designer Text, Instruction Remove Designer Text Référence 83 Instruction Alter MapInfoDialog Instruction Alter MapInfoDialog Objectif Désactive ou masque des contrôles dans les boîtes de dialogue standard de MapInfo Professional ou y affecte de nouvelles valeurs. Restrictions Avertissement: L'instruction Alter MapInfoDialog risque de ne plus être prise en charge dans les versions ultérieures de MapInfo Professional. Les programmes MapBasic qui utilisent cette instruction risquent par conséquent de ne plus fonctionner correctement dans les versions ultérieures de MapInfo Professional. Utilisez cette instruction avec prudence. Syntaxe 1 (affectation de paramètres non définis par défaut) Alter MapInfoDialog dialog_ID Control control_ID { Disable | Hide | Value new_value } [ , { Disable... } ] [ Control... ] Syntaxe 2 (restauration des paramètres par défaut) Alter MapInfoDialog dialog_ID Default dialog_ID est un numéro d'identification entier qui indique la boîte de dialogue MapInfo Professional à modifier. control_ID est un numéro d'identification entier (1 ou plus) qui indique le contrôle à modifier. new_value est une nouvelle valeur affectée au contrôle de la boîte de dialogue. Description Utilisez cette instruction pour désactiver ou masquer des contrôles (boutons, cases à cocher, etc.) dans les boîtes de dialogue standard de MapInfo Professional ou y affecter de nouvelles valeurs. Remarque: Utilisez cette instruction uniquement pour modifier les boîtes de dialogue standard de MapInfo Professional. Pour modifier des boîtes de dialogue personnalisées que vous avez créées à l'aide de l'instruction Dialog, utilisez l'instruction Alter Control. Détermination des numéros d'identification Pour déterminer le numéro d'identification d'une boîte de dialogue, exécutez MapInfo Professional avec cette ligne de commande : mapinfow.exe -helpdiag Après avoir exécuté MapInfo Professional avec l'argument -helpdiag, affichez une boîte de dialogue MapInfo Professional et cliquez sur le bouton Aide. Le bouton Aide lance normalement l'Aide mais, 84 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z comme vous avez utilisé l'argument -helpdiag, MapInfo Professional affiche le numéro d'identification de la boîte de dialogue active. Remarque: Il existe plusieurs « boîtes de dialogue communes » (Ouvrir et Enregistrer, par exemple) aux différentes versions de Windows. Si votre application va être utilisée sous différentes versions de Windows et que vous souhaitez modifier une boîte de dialogue commune, vous pouvez être amené à émettre deux instructions Alter MapInfoDialog (une pour chaque version de la boîte de dialogue commune). Chaque contrôle possède un numéro d'identification unique. Par exemple, le numéro d'identification de la plupart des boutons OK est 1 et le numéro d'identification de la plupart des boutons Annuler est 2. Pour déterminer le numéro d'identification d'un contrôle spécifique, vous devez avoir recours à l'utilitaire d'un développeur tiers (Spy++ qui est fourni par Microsoft avec son compilateur C, par exemple). L'utilitaire Spy++ n'est pas fourni avec le logiciel MapBasic. Même si l'instruction Alter MapInfoDialog change l'apparence initiale d'une boîte de dialogue, les modifications restent sans effet tant que l'utilisateur n'a pas cliqué sur OK. Par exemple, vous pouvez utiliser Alter MapInfoDialog pour stocker une adresse dans la boîte de dialogue Rechercher. MapInfo Professional ne lancera toutefois pas la recherche tant que vous n'aurez pas affiché la boîte de dialogue et cliqué sur OK. Types de modifications autorisées Utilisez le mot-clé Disable pour désactiver le contrôle (apparition en grisé). Utilisez le mot-clé Hide pour masquer le contrôle. Utilisez la clause Value pour changer le paramètre du contrôle. Lorsque vous modifiez des boîtes de dialogue communes (boîte de dialogue Ouvrir, par exemple), vous pouvez réinitialiser l'élément sélectionné dans un contrôle de zone de liste déroulante ou affecter un nouveau texte aux contrôles de texte statique, de bouton et de zone de modification. Vous pouvez modifier le contrôle d'orientation dans la boîte de dialogue Configuration de l'impression. Les boutons Portrait et Paysage ont respectivement les valeurs 1056 et 1057. Lorsque vous modifiez d'autres boîtes de dialogue de MapInfo Professional, les types de modifications que vous pouvez apporter sont récapitulés ci-dessous : • Bouton, zone de modification et zone de liste déroulante modifiable : vous pouvez affecter un nouveau texte à l'aide d'une chaîne de texte dans le paramètre new_value. • Zone de liste, zone de liste déroulante : vous pouvez définir l'élément sélectionné à l'aide d'un paramètre new_value. • Case à cocher : vous pouvez cocher la case (spécifiez la valeur 1) ou la désélectionner (spécifiez la valeur 0). • Bouton radio : vous pouvez affecter la valeur 1 à une case pour l'activer dans son groupe de cases. • Bouton de style Symbole : vous pouvez affecter un nouveau style de symbole (utilisez la valeur de retour provenant de la fonction MakeSymbol( )). • Bouton de style Ligne : vous pouvez affecter une nouvelle valeur Ligne. • Bouton de style Trame : vous pouvez affecter une nouvelle valeur Trame. • Bouton de style Police : vous pouvez affecter une nouvelle valeur Police. Référence 85 Instruction Alter Menu • Bouton Bouton Ligne/Trame combiné : spécifiez une valeur Ligne pour réinitialiser le style Ligne ou une valeur Trame pour réinitialiser le style Trame. (Pour obtenir un exemple de ce type de contrôle, reportez-vous à la boîte de dialogue Style polygone de MapInfo Professional qui s'affiche lorsque vous double-cliquez sur un polygone modifiable.) Exemple L'exemple suivant modifie la boîte de dialogue Recherche de MapInfo Professional en stockant une chaîne de texte (« 23 Main St. ») dans la première zone de modification et en masquant le bouton Redéfinir. If SystemInfo(SYS_INFO_MIVERSION) = 400 Then Alter MapInfoDialog 2202 Control 5 Value "23 Main St." Control 12 Hide End If Run Menu Command M_ANALYZE_FIND Le numéro d'identification 2202 correspond à la boîte de dialogue Recherche. Le contrôle 5 est la zone de modification dans laquelle l'utilisateur tape une adresse. Le contrôle 12 est le bouton Redéfinir qui est masqué dans cet exemple. Comme tous les numéros d'identification sont sujets à modification dans les versions ultérieures de MapInfo Professional, la Fonction SystemInfo( ) est appelée dans cet exemple pour déterminer le numéro de version de MapInfo Professional. Voir également Instruction Alter Control, Fonction SystemInfo( ) Instruction Alter Menu Objectif Ajoute des éléments à un menu existant ou en supprime. Syntaxe 1 Alter Menu { menuname | ID menu_id } Add menudef [ , menudef... ] Où chaque menudef définit un élément de menu en fonction de la syntaxe : newmenuitem [ ID menu_item_id ] [ HelpMsg help ] [ { Calling handler | As menuname } ] menuname est le nom d'un menu existant (Fichier, par exemple). menu_id est un identifiant de menu entier standard de 1 à 64 (1 représente le menu Fichier). newmenuitem est une chaîne indiquant le nom d'un élément à ajouter au menu spécifié. menu_item_idest un identifiant d'élément de menu entier personnalisé pouvant par la suite être utilisé dans chaque Instruction Alter Menu Item. help est une chaîne qui s'affiche dans la barre d'état lorsque l'élément de menu est en surbrillance. 86 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z handler est le nom d'une procédure, un code de commande de menu standard (M_FILE_NEW, par exemple) ou une syntaxe assurant spécifiquement la gestion de l'événement de menu en appelant OLE ou DDE. Si vous spécifiez un code de commande pour une commande Afficher/Masquer standard (M_WINDOW_STATISTICS, par exemple) de MapInfo Professional, la chaîne newmenuitem doit commencer par un point d'exclamation et comporter un signe insertion (^) pour conserver le comportement Afficher/Masquer de l'élément. Pour plus d'informations sur les différents types de syntaxe de gestionnaire, reportez-vous à l'Instruction Create Menu. Syntaxe 2 Alter Menu { menuname | ID menu_id } Remove { handler | submenuname | ID menu_item_id } [ , { handler | submenuname | ID menu_item_id } ... ] menuname est le nom d'un menu existant. menu_id est un identifiant de menu entier de 1 à 64 (1 représente le menu Fichier). handler est soit le nom d'une sous-procédure soit le code d'une commande standard de MapInfo Professional. submenuname est le nom d'un sous-menu hiérarchique à supprimer du menu spécifié. menu_item_id est un identifiant d'élément de menu entier personnalisé. Description L'instruction Alter Menu ajoute des éléments de menu à un menu existant ou supprime des éléments de menu d'un menu existant. Cette instruction peut identifier le menu à modifier en spécifiant le nom du menu (Fichier, par exemple) à l'aide du paramètre menuname. Si le menu à modifier est l'un des menus standard de MapInfo Professional, l'instruction Alter Menu peut identifier le menu à modifier à l'aide de la clause ID. La clause ID identifie le menu grâce à un numéro d'identification (de 1 à 64). Le nom et le numéro d'identification de tous les menus standard de MapInfo Professional sont répertoriés dans la tableau ci-dessous. Table 1: Numéro d'identification des menus Nom de menu Définir ID Description File M_FILE 1 Menu Fichier. Edit M_EDIT 2 Menu Édition. Chercher M_SEARCH 3 Menu Rechercher. Requête M_QUERY 3 Menu Sélection. Programmes M_PGM 4 Menu Programmes. Outils M_TOOLS 4 Menu Outils. Options M_OPTIONS 5 Menu Options. Référence 87 Instruction Alter Menu Nom de menu Définir ID Description Fenêtre M_WINDOW 6 Menu Fenêtre. Aide M_HELP 7 Menu Aide. Parcourir M_BROWSE 8 Menu Données. Il ne s'affiche normalement que lorsque la fenêtre active est une fenêtre Données. Map M_MAP 9 Menu Carte. Ce menu n'est normalement disponible que lorsqu'une fenêtre Carte est active. Mise en Page M_LAYOUT 10 Menu Mise en page. Disponible lorsqu'une fenêtre Mise en page est active. Graphique M_GRAPH 11 Menu Graphique. Disponible lorsqu'une fenêtre Graphique est active. MapBasic M_MAPBASIC 12 Menu MapBasic. Disponible lorsqu'une fenêtre MapBasic est active. Sectorisation M_REDISTRICT 13 Menu Sectorisation. Disponible lorsqu'une fenêtre Sectorisation est active. Objets M_OBJECTS 14 Menu Objets Table M_TABLE 15 Menu Table. Les menus numérotés de 16 à 36 sont des menus contextuels qui s'affichent lorsque l'utilisateur effectue un clic droit. Table 2: Numéro d'identification des menus contextuels 88 Nom de menu Définir ID Description DefaultShortcut M_SHORTCUT_DFLT 16 Menu contextuel par défaut. Ce menu s'affiche lorsque l'utilisateur clique avec le bouton droit sur une fenêtre pour laquelle aucun menu contextuel n'est défini. MapperShortcut M_SHORTCUT_MAPPER 17 Menu contextuel de la fenêtre Carte. BrowserShortcut M_SHORTCUT_BROWSER 18 Menu contextuel de la fenêtre Données. LayoutShortcut M_SHORTCUT_LAYOUT 19 Menu contextuel de la fenêtre Mise en page. GrapherShortcut M_SHORTCUT_GRAPHER 20 Menu contextuel de la fenêtre Graphique. Ce menu contient des options permettant de créer des graphiques. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Nom de menu Définir ID Description CmdShortcut M_SHORTCUT_CMD 21 Menu contextuel de la fenêtre MapBasic. RedistrictShortcut M_SHORTCUT_REDISTRICTER 22 Menu contextuel de sectorisation. Disponible lorsque la fenêtre Secteurs Données est active. LegendShortcut M_SHORTCUT_LEGEND 23 Menu contextuel de la fenêtre Légende. GrapherShortcut M_SHORTCUT_GRAPHTDG 24 Menu contextuel de la fenêtre Graphique. Ce menu contient des options permettant de mettre en forme des graphiques déjà créés. 3DMapShortcut M_SHORTCUT_3DMAP 25 Menu contextuel de la fenêtre Vue3D. MessageWinShortcut M_SHORTCUT_MSG_WIN 26 Menu contextuel de la fenêtre Message. StatisticsWinShortcut M_SHORTCUT_STAT_WIN 27 Menu contextuel de la fenêtre Statistiques. AdornmentShortcut M_SHORTCUT_ADORNMENT 32 Menu contextuel de la fenêtre Habillage. LcLayersShortcut M_SHORTCUT_LC_LAYERS 33 Menu qui apparaît lorsque vous cliquez avec le bouton droit de la souris sur une couche standard de la liste de couches. LcMapsShortcut M_SHORTCUT_LC_MAPS 34 Menu qui apparaît lorsque vous cliquez avec le bouton droit de la souris sur un nœud Carte de la liste de couches. LcGroupsShortcut M_SHORTCUT_LC_GROUPS 35 Menu qui apparaît lorsque vous cliquez avec le bouton droit de la souris sur un groupe de couches de la liste de couches. TableAdornmentShortcut M_SHORTCUT_TABLEADORNMENT 36 Réservé à une utilisation ultérieure. Table 3: Numéro d'identification des autres menus (non contextuels) Nom de menu Définir ID Description 3DWindow M_3DMAP 28 Fenêtre Vue3D. Graphique M_GRAPHTDG 29 Menu Graphique. Référence 89 Instruction Alter Menu Bar Nom de menu Définir ID Description Légende M_LEGEND 31 Menu Légende. Pour modifier un menu personnalisé (même si vous le créez avec un identifiant personnalisé, 999 par exemple), vous devez utiliser le paramètre menuname personnalisé, et non l'identifiant personnalisé. Exemples L'instruction suivante ajoute un élément au menu Fichier. Alter Menu "File" Add "Special" Calling sub_procedure_name Dans l'exemple suivant, le menu à modifier est identifié grâce à son numéro. Alter Menu ID 1 Add "Special" Calling sub_procedure_name Dans l'exemple suivant, l'élément de menu qui est ajouté contient une clause ID. Le numéro d'identification (300) peut être utilisé par la suite dans une Instruction Alter Menu Item. Alter Menu ID 1 Add "Special" ID 300 Calling sub_procedure_name Dans l'exemple suivant, l'élément personnalisé est supprimé du menu Fichier. Alter Menu ID 1 Remove sub_procedure_name L'exemple de programme TextBox utilise une Instruction Create Menu pour créer un menu appelé « TextBox », puis émet l'instruction Alter Menu suivante pour ajouter le menu TextBox sous forme de menu hiérarchique au menu Outils : Alter Menu "Tools" Add "(-", "TextBox" As "TextBox" Dans l'exemple suivant, une commande personnalisée est ajoutée au menu contextuel de la fenêtre Carte (menu qui s'affiche lorsque l'utilisateur clique avec le bouton droit sur une fenêtre Carte). Alter Menu ID 17 Add "Find Nearest Site" Calling sub_procedure_name Voir également Instruction Alter Menu Bar, Instruction Alter Menu Item, Instruction Create Menu, Instruction Create Menu Bar Instruction Alter Menu Bar Objectif Ajoute ou supprime des menus de la barre de menus. Syntaxe Alter Menu Bar { Add | Remove } { menuname | ID menu_id } [ , { menuname | ID menu_id } ... ] 90 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z menuname est le nom d'un menu disponible (Fichier, par exemple). menu_id est un identifiant de menu standard de 1 à 15 (1 représente le menu Fichier). Description L'instruction Alter Menu Bar ajoute un ou plusieurs menus à la barre de menus active ou en supprime. Le paramètre menuname est une chaîne qui représente le nom d'un menu (Fichier ou Édition, par exemple). Le paramètre menuname peut aussi désigner le nom d'un menu personnalisé créé par une Instruction Create Menu (reportez-vous à l'exemple ci-après) Remarque: Si l'application est exécutée sur une version de MapInfo qui n'est pas en anglais et que les noms de menu ont été localisés, l'instruction Alter Menu Bar doit indiquer la version localisée du nom de menu. Chacun des menus standard (Fichier, Édition, etc.) de MapInfo Professional possède toutefois un identifiant de menu que vous pouvez utiliser quelle que soit la langue dans laquelle le nom des menus est localisé. Par exemple, l'identifiant 2 désigne toujours le menu Édition, qu'il ait été localisé ou non. Pour obtenir la liste des noms de menus standard de MapInfo Professional et le numéro d'identification correspondant, reportez-vous à la section Instruction Alter Menu. Ajout de menus à la barre de menus Une instruction Alter Menu Bar Add ajoute un menu à l'extrémité droite de la barre de menus. Pour insérer un menu à un autre emplacement de la barre de menus, utilisez l'Instruction Create Menu Bar pour redéfinir l'intégralité de la barre de menus. Si vous ajoutez de nombreux menus à la barre de menus, celle-ci s'étend sur une deuxième ligne de noms de menu. Suppression de menus de la barre de menus Une instruction Alter Menu Bar Remove... supprime un menu de la barre de menus. Ce menu continue toutefois à faire partie du « groupe » de menus disponibles. Les deux instructions suivantes commencent ainsi par supprimer le menu Sélection de la barre de menus, puis rajoutent le menu Sélection à la barre de menus (à l'extrémité droite de la barre). Alter Menu Bar Remove "Query" Alter Menu Bar Add "Query" Une fois qu'une instruction Alter Menu Bar Remove... a supprimé un menu, MapInfo Professional ignore toutes les séquences de touches d'accès rapide correspondant aux éléments qui figuraient dans le menu supprimé. Par exemple, un utilisateur de MapInfo Professional peut normalement appuyer sur Ctrl+O pour ouvrir la boîte de dialogue Ouvrir du menu Fichier. Si toutefois une instruction Alter Menu Bar Remove a supprimé le menu Fichier, MapInfo Professional ignore alors les séquences de touches Ctrl+O. Référence 91 Instruction Alter Menu Item Exemple Dans l'exemple suivant, un menu personnalisé nommé DataEntry est créé, puis une instruction Alter Menu Bar Add est utilisée pour ajouter le menu DataEntry à la barre de menus de MapInfo Professional. Declare Sub addsub Declare Sub editsub Declare Sub delsub Create Menu "DataEntry" As "Add" Calling addsub, "Edit" Calling editsub, "Delete" Calling delsub 'Remove the Window menu and Help menu Alter Menu Bar Remove ID 6, ID 7 'Add the custom menu, then the Window & Help menus Alter Menu Bar Add "DataEntry", ID 6, ID 7 Avant d'ajouter le menu personnalisé à la barre de menus, le menu Aide (identifiant de menu 7) et le menu Fenêtre (identifiant de menu 6) sont supprimés de la barre de menus. Le menu personnalisé, le menu Fenêtre et le menu Aide sont ensuite ajoutés à la barre de menus. Grâce à cette méthode, les deux derniers menus sont toujours assurés d'être les menus Fenêtre et Aide. Voir également Instruction Alter Menu, Instruction Alter Menu Item, Instruction Create Menu, Instruction Create Menu Bar, Instruction Menu Bar Instruction Alter Menu Item Objectif Modifie l'état d'un élément de menu spécifique. Syntaxe Alter Menu Item { handler | ID menu_item_id } { [ Check | Uncheck ] | [ Enable | Disable ] | [ Text itemname ] | [ Calling handler | As menuname ] } handler est soit le nom d'une sous-procédure soit le code d'une commande standard de MapInfo Professional. menu_item_id est un entier qui identifie un élément de menu et qui correspond au paramètre menu_item_id spécifié dans l'instruction qui a créé l'élément de menu (Instruction Create Menu ou Instruction Alter Menu). itemname est le nouveau texte de l'élément de menu (il peut intégrer des codes). menuname est le nom d'un menu existant. 92 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description L'instruction Alter Menu Item modifie un ou plusieurs des éléments qui composent les menus disponibles. Par exemple, vous pouvez utiliser l'instruction Alter Menu Item pour activer ou désactiver (faire apparaître en grisé) un élément de menu. L'instruction doit également spécifier un gestionnaire (nom d'une procédure au sein du même programme, par exemple) ou une clause ID pour indiquer le ou les éléments de menu à modifier. Notez que vous pouvez appeler une même procédure de gestionnaire pour plusieurs éléments de menu distincts. Si l'instruction Alter Menu Item comporte le nom d'une procédure de gestionnaire, MapInfo Professional modifie alors tous les éléments de menu qui appellent ce gestionnaire. Si l'instruction comporte une clause ID, MapInfo Professional ne modifie alors que l'élément de menu qui a été défini avec cet identifiant. L'instruction Alter Menu Item ne peut désigner un identifiant d'élément de menu que si l'instruction qui a défini l'élément de menu comportait une clause ID. Une application MapBasic ne peut pas désigner d'identifiants d'éléments de menu créés par d'autres applications MapBasic. La clause Check et la clause Uncheck indiquent respectivement si l'élément apparaît coché ou désélectionné dans le menu. Notez qu'un élément de menu ne peut être coché que s'il a été défini comme « pouvant être coché » (par exemple, si l'Instruction Create Map comportait un « ! » comme premier caractère dans le nom de l'élément de menu). La clause Disable et la clause Enable indiquent respectivement si l'élément est désactivé (apparaît en grisé) ou activé. Notez que MapInfo Professional active et désactive automatiquement divers éléments de menu selon le cas du moment. Par exemple, la commande Fichier > Fermer est désactivée lorsque aucune table n'est ouverte. Les applications ne doivent par conséquent pas tenter d'activer ou de désactiver des éléments de menu standard de MapInfo Professional. De la même manière, même si vous pouvez traiter des outils spécifiques en tant qu'éléments de menu (en référençant des définitions provenant de MENU.DEF, comme M_TOOLS_RULER), vous ne devez pas tenter d'activer ou de désactiver les outils à l'aide de l'instruction Alter Menu Item. La clause Text vous permet de renommer un élément de menu. La clause Calling spécifie un gestionnaire pour l'élément de menu. Si l'utilisateur choisit l'élément de menu, MapInfo Professional appelle le gestionnaire de l'élément. Exemples Dans l'exemple suivant, un menu DataEntry personnalisé est créé. Declare Sub addsub Declare Sub editsub Declare Sub delsub Create Menu "DataEntry" As "Add" Calling addsub, "Edit" Calling editsub, "Delete" ID 100 Calling delsub, "Delete All" ID 101 Calling delsub 'Remove the Help menu Alter Menu Bar Remove ID 7 'Add both the new menu and the Help menu Alter Menu Bar Add "DataEntry" , ID 7 L'Instruction Alter Menu Item suivante renomme l'élément « Edit » en « Edit… ». Alter Menu Item editsub Text "Edit..." Référence 93 Instruction Alter Object L'instruction suivante désactive l'élément de menu Supprimer tout. Alter Menu Item ID 101 Disable L'instruction suivante désactive les éléments Supprimer et Supprimer tout, car elle identifie la procédure de gestionnaire delsub qui est le gestionnaire de ces deux éléments de menu. Alter Menu Item delsub Disable Voir également Instruction Alter Menu, Instruction Alter Menu Bar, Instruction Create Menu Instruction Alter Object Objectif Modifie la forme, la position ou le style graphique d'un objet. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Alter Object obj { Info object_info_code, new_info_value | Geography object_geo_code , new_geo_value | Node { Add [ Position polygon_num, node_num ] ( x, y ) | Set Position polygon_num, node_num ( x , y ) | Remove Position polygon_num, node_num } } obj est une variable d'objet. object_info_code est un code d'entier se rapportant à la fonction ObjectInfo( ) (OBJ_INFO_PEN, par exemple). new_info_value spécifie le nouvel attribut object_info_code à appliquer (un nouveau style de ligne, par exemple). object_geo_code est un code d'entier se rapportant à la fonction ObjectGeography( ) (OBJ_GEO_POINTX, par exemple). new_geo_value spécifie la nouvelle valeur object_geo_code à appliquer (la nouvelle coordonnée x, par exemple). polygon_num est une valeur entière (1 ou plus) qui identifie un polygone d'un objet région ou une section d'un objet polyligne. node_num est une valeur entière (1 ou plus) qui identifie un nœud d'une polyligne ou d'un polygone. x, y sont les coordonnées x et y d'un nœud. Description L'instruction Alter Object modifie la forme, la position ou le style géographique d'un objet. L'effet d'une instruction Alter Object varie selon que l'instruction inclut une clause Info, une clause Node ou une clause Geography. Si l'instruction inclut une clause Info, MapBasic modifie le style graphique de l'objet (les styles de ligne et de trame de l'objet, par exemple). Si l'instruction inclut une clause Node, 94 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z MapBasic ajoute, supprime ou repositionne un nœud (cela ne s'applique qu'aux objets polyligne ou région). Si l'instruction inclut une clause Geography, MapBasic modifie un attribut géographique d'objets autres que des polylignes ou régions (la coordonnée x ou y d'un objet point, par exemple). Clause Info Lorsque vous émettez une instruction Alter Object avec une clause Info, vous pouvez réinitialiser le style d'un objet (ligne ou trame, par exemple). La clause Info vous permet de modifier les mêmes attributs de style que ceux que vous pouvez interroger via la fonction ObjectInfo( ). Par exemple, vous pouvez déterminer le style de ligne et de trame d'un objet en appelant la fonction ObjectInfo( ) : Dim b_fillstyle As Brush b_fillstyle = ObjectInfo(Selection.obj, OBJ_INFO_BRUSH) L'instruction Alter Object suivante vous permet à l'inverse de réinitialiser le style de trame : Alter Object obj_variable_name Info OBJ_INFO_BRUSH, b_fillstyle Notez que vous utilisez le même code (OBJ_INFO_BRUSH, par exemple) à la fois dans la fonction ObjectInfo( ) et l'instruction Alter Object. Les valeurs que vous pouvez spécifier dans la clause Info pour apporter divers types de modifications au style sont répertoriées dans le tableau ci-dessous. Notez que les valeurs obj_info_code sont définies dans le fichier de définitions standard de MapBasic, MAPBASIC.DEF. Votre programme doit par conséquent inclure « MAPBASIC.DEF » si vous avez l'intention d'utiliser l'instruction Alter Object...Info. Valeur obj_info_code ID Effet de l'instruction Alter Object OBJ_INFO_PEN 2 Réinitialise le style de ligne de l'objet. new_info_value doit être une expression Pen. OBJ_INFO_SYMBOL 2 Réinitialise le style de symbole d'un objet point. new_info_value doit être une expression Symbol. OBJ_INFO_BRUSH 3 Réinitialise le style de trame de l'objet. new_info_value doit être une expression Brush. OBJ_INFO_SMOOTH 4 Réinitialise le paramètre de lissage/non-lissage d'un objet polyligne. new_info_value doit être une expression Logical. OBJ_INFO_FRAMEWIN 4 Modifie la fenêtre affichée dans un cadre Mise en page. new_info_value doit être un identifiant de fenêtre entier. OBJ_INFO_FRAMETITLE 6 Modifie le titre d'un objet cadre. new_info_value doit être une chaîne. OBJ_INFO_TEXTFONT 2 Réinitialise le style de police d'un objet point. new_info_value doit être une expression Font. OBJ_INFO_TEXTSTRING 3 Modifie la chaîne de texte qui comprend un objet texte. new_info_value doit être une expression de chaîne. Référence 95 Instruction Alter Object Valeur obj_info_code ID Effet de l'instruction Alter Object OBJ_INFO_TEXTSPACING 4 Modifie l'interligne d'un objet texte. new_info_value doit être une valeur à virgule flottante de 1, 1,5 ou 2. OBJ_INFO_TEXTJUSTIFY 5 Modifie l'alignement d'un objet texte. new_info_value doit avoir pour valeur 0 pour l'alignement à gauche, 1 pour le centrage ou 2 pour l'alignement à droite. OBJ_INFO_TEXTARROW 6 Modifie le paramètre de ligne d'étiquette d'un objet texte. new_info_value doit avoir pour valeur 0 pour aucun trait, 1 pour un trait simple ou 2 pour un trait avec une flèche. Clause Geography Lorsque vous émettez une instruction Alter Object avec une clause Geography, vous pouvez modifier les coordonnées géographiques d'un objet. La clause Geography s'applique à tous les types d'objets, sauf les polylignes et les régions. Pour modifier les coordonnées d'un objet polyligne ou région, utilisez la clause Node (décrite ci-après) à la place de la clause Geography. La clause Geography vous permet de modifier les mêmes attributs que ceux que vous pouvez interroger via la fonction ObjectGeography( ). Par exemple, vous pouvez obtenir les coordonnées des extrémités d'un objet ligne en appelant la fonction ObjectGeography( ) : Dim Dim x = y = o_cable As Object x, y As Float ObjectGeography(o_cable, OBJ_GEO_LINEENDX) ObjectGeography(o_cable, OBJ_GEO_LINEENDY) L'instruction Alter Object vous permet à l'inverse de modifier les coordonnées des extrémités d'un objet ligne : Alter Object o_cable Geography OBJ_GEO_LINEENDX, x Alter Object o_cable Geography OBJ_GEO_LINEENDY, y Remarque: Notez que vous utilisez le même code (OBJ_GEO_LINEENDX, par exemple) à la fois dans la fonction ObjectGeography( ) et dans l'instruction Alter Object. Le tableau ci-dessous récapitule les valeurs que vous pouvez spécifier dans la clause Geography pour apporter divers types de modifications géographiques. Notez que les valeurs obj_geo_code sont définies dans le fichier de définitions standard de MapBasic, MAPBASIC.DEF. Votre programme doit par conséquent inclure « MAPBASIC.DEF » si vous avez l'intention d'utiliser l'instruction Alter Object...Geography. 96 Valeur obj_geo_code ID Effet de l'instruction Alter Object OBJ_GEO_MINX 1 Modifie le rectangle intérieur d'encadrement de l'objet. OBJ_GEO_MINY 2 Modifie le rectangle intérieur d'encadrement de l'objet. OBJ_GEO_MAXX 3 Modifie le rectangle intérieur d'encadrement de l'objet. Ne s'applique pas aux objets point. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Valeur obj_geo_code ID Effet de l'instruction Alter Object OBJ_GEO_MAXY 4 Modifie le rectangle intérieur d'encadrement de l'objet. Ne s'applique pas aux objets point. OBJ_GEO_ARCBEGANGLE 5 Modifie l'angle de début d'un objet arc. OBJ_GEO_ARCENDANGLE 6 Modifie l'angle de fin d'un objet arc. OBJ_GEO_LINEBEGX 1 Modifie le nœud de début d'un objet Ligne. OBJ_GEO_LINEBEGY 2 Modifie le nœud de début d'un objet Ligne. OBJ_GEO_LINEENDX 3 Modifie le nœud de fin d'un objet Ligne. OBJ_GEO_LINEENDY 4 Modifie le nœud de fin d'un objet Ligne. OBJ_GEO_POINTX 1 Modifie la coordonnée x d'un objet point. OBJ_GEO_POINTY 2 Modifie la coordonnée y d'un objet point. OBJ_GEO_ROUNDRADIUS 5 Modifie le diamètre du cercle qui définit le coin arrondi d'un objet rectangle arrondi. OBJ_GEO_TEXTLINEX 5 Modifie la coordonnée x de la fin de la ligne d'étiquette d'un objet texte. OBJ_GEO_TEXTLINEY 6 Modifie la coordonnée y de la fin de la ligne d'étiquette d'un objet texte. OBJ_GEO_TEXTANGLE 7 Modifie l'angle de rotation d'un objet texte. Clause Node Lorsque vous émettez une instruction Alter Object avec une clause Node, vous pouvez ajouter des nœuds à un objet polyligne ou région, en supprimer ou en repositionner. Si la clause Node inclut une sous-clause Add, l'instruction Alter Object ajoute un nœud à l'objet. Si la clause Node inclut une sous-clause Remove, l'instruction supprime un nœud. Si la clause Node inclut une sous-clause Set Position, l'instruction repositionne un nœud. La clause Node de l'instruction Alter Object est souvent associée à l'instruction Create Pline et à l'instruction Create Region. Les instructions Create vous permettent de créer de nouveaux objets polyligne et région, mais sont toutefois quelque peu limitées car elles vous obligent à indiquer, au moment de la compilation, le nombre de nœuds qui constitueront l'objet. Dans certains cas, il se peut que vous ne sachiez combien de nœuds seront intégrés dans un objet qu'au moment de l'exécution. Si votre programme ne connaît qu'au moment de l'exécution le nombre de nœuds que comporte un objet, vous pouvez émettre une instruction Create Pline ou une instruction Create Region qui crée un objet vide (un objet sans nœud). Votre programme pourra ensuite émettre le nombre approprié d'instructions Alter Object...Node Add pour ajouter les nœuds nécessaires. Dans la clause Node, la sous-clause Position inclut deux paramètres (polygon_num et node_num) qui vous permettent de spécifier avec précision le nœud à repositionner ou à supprimer. La sous-clause Référence 97 Instruction Alter Object Position reste facultative lorsque vous ajoutez un nœud. Les paramètres polygon_num et node_num doivent toujours avoir pour valeur 1 (un) ou plus. Le paramètre polygon_num spécifie le polygone à modifier dans une région à polygones multiples (ou la section dans une polyligne à sections multiples). Centroïdes de régions Le centroïde d'une région peut être défini à l'aide de la commande Alter Object avec la syntaxe indiquée ci-dessous : Alter Object Obj Geography OBJ_GEO_CENTROID, PointObj Notez que PointObj est un objet point. Cela diffère des autres valeurs entrées par l'instruction Alter Object Geography qui sont toutes scalaires. Un point est requis dans cette instance car nous avons besoin de deux valeurs qui définissent un point. Le point entré est vérifié de manière à garantir qu'il s'agit d'un centroïde valide (qu'il se trouve à l'intérieur de la région, par exemple). Si Obj n'est pas une région, si PointObj n'est pas un objet point ou si le point n'est pas un centroïde valide, une erreur est alors renvoyée. Voici un moyen simple de centrer une valeur X et Y d'un centroïde : Alter Object Obj Geography OBJ_GEO_CENTROID, CreatePoint(X, Y) L'utilisateur peut également interroger le centroïde à l'aide de la fonction ObjectGeography( ) de la manière suivante : PointObj = ObjectGeography(Obj, OBJ_GEO_CENTROID) D'autres méthodes permettent d'obtenir le centroïde, parmi lesquelles la fonction Centroid( ), la fonction CentroidX( ) et la fonction CentroidY( ). OBJ_GEO_CENTROID est défini dans MAPBASIC.DEF. Objets multipoint et collections L'instruction Alter Object prend en charge les types d'objets suivants. • Multipoint : définit un symbole Multipoint, comme indiqué ci-dessous : Alter Object obj_variable_mpoint Info OBJ_INFO_SYMBOL, NewSymbol • Collection : Lorsque vous émettez une instruction Alter Object avec une clause Info, vous pouvez réinitialiser les parties collection (région, polyligne ou multipoint) qui figurent dans l'objet collection. La clause Info clause vous permet de modifier les mêmes attributs que ceux que vous pouvez interroger via la fonction ObjectInfo( ). Par exemple, vous pouvez déterminer la région d'un objet collection que vous pouvez interroger en appelant la fonction ObjectInfo( ) : Dim ObjRegion As Object ObjRegion = ObjectInfo(Selection.obj, OBJ_INFO_REGION) L'instruction Alter Object suivante vous permet également de réinitialiser la partie région d'un objet collection : Alter Object obj_variable_name Info OBJ_INFO_REGION, ObjRegion 98 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Remarque: Notez que vous utilisez le même code (OBJ_INFO_REGION, par exemple) à la fois dans la fonction ObjectInfo( ) et l'instruction Alter Object. L'instruction Alter Object insère et supprime des nœuds des objets multipoint. Alter Object obj Node statement Pour insérer des nœuds dans un objet multipoint : Dim mpoint_obj as object Create Multipoint Into Variable mpoint_obj 0 Alter Object mpoint_obj Node Add (0,1) Alter Object mpoint_obj Node Add (2,1) Remarque: Les nœuds d'objets multipoint sont toujours ajoutés à la fin. Pour supprimer des nœuds d'un objet multipoint : Alter Object mpoint_obj Node Remove Position polygon_num, node_num mpoint_obj est une variable d'objet multipoint. polygon_num est ignoré pour les objets multipoint. Il est conseillé de lui attribuer la valeur 1. node_num est le numéro d'un nœud à supprimer. Pour repositionner des nœuds dans un objet multipoint : Alter Object mpoint_obj Node Set Position polygon_num, node_num (x,y) mpoint_obj est une variable d'objet multipoint. polygon_num est ignoré pour les objets multipoint. Il est conseillé de lui attribuer la valeur 1. node_num est le numéro d'un nœud à modifier. x et y sont les nouvelles coordonnées du nœud node_num. Exemple Dim myobj As Object, i As Integer Create Region Into Variable myobj 0 For i = 1 to 10 Alter Object myobj Node Add (Rnd(1) * 100, Rnd(1) * 100) Next Remarque: Une fois que vous avez utilisé l'instruction Alter Object pour modifier un objet, utilisez une instruction Insert ou une instruction Update pour stocker l'objet dans une table. Voir également Instruction Create Pline, Instruction Create Region, Instruction Insert, Fonction ObjectGeography( ), Fonction ObjectInfo( ), Instruction Update Référence 99 Instruction Alter Table Instruction Alter Table Objectif Modifie la structure d'une table. Ne peut pas être utilisée sur des tables liées. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Alter Table table ( [ Add columnname columntype [ , ...] ] [ Modify columnname columntype [ , ...] ] [ Drop columnname [ , ...] ] [ Rename oldcolumnname newcolumnname [ , ...] ] [ Order columnname, columnname [ ,...] ] ) [ Interactive ] table est le nom d'une table ouverte. columnname est le nom d'une colonne. Les noms de colonne ne peuvent pas commencer par des chiffres. Ils sont limités à 31 caractères et peuvent contenir des lettres, des chiffres et le caractère de soulignement. columntype indique le type de données d'une colonne dans une table (ainsi que la largeur du champ si nécessaire). oldcolumnname représente l'ancien nom d'une colonne à renommer. newcolumnname représente le nouveau nom prévu d'une colonne à renommer. Description L'instruction Alter Table vous permet de modifier la structure d'une table ouverte : ajout de colonnes, modification de la largeur ou des types de données de colonnes, suppression de colonnes, attribution d'un nouveau nom à des colonnes et réorganisation de colonnes. Remarque: Si vous avez modifié une table, vous devez enregistrer ou ignorer les modifications pour pouvoir utiliser l'instruction Alter Table. Chaque columntype doit avoir l'une des valeurs suivantes : Integer, SmallInt, Float, Decimal ( size, decplaces), Char(size), DateTime, Date ou Logical. DateTime est une valeur entière stockée sur 9 octets : 4 octets pour la date et 5 octets pour l'heure. Les 5 octets pour l'heure comprennent 2 octets pour les millisecondes, 1 octet pour les secondes, 1 octet pour les minutes et 1 octet pour les heures. L'insertion d'une clause Add dans une instruction Alter Table vous permet d'ajouter de nouvelles colonnes à la table. L'insertion d'une clause Modify vous permet de modifier les types de données des colonnes existantes. Une clause Drop vous permet de supprimer des colonnes, tandis qu'une clause Rename vous permet de renommer des colonnes existantes. La clause Order vous permet de spécifier l'ordre des colonnes. Une instruction Alter Table peut comporter jusqu'à cinq clauses. Notez que chacune de ces cinq clauses peut être exécutée sur une liste de colonnes. Une seule instruction Alter Table vous permet donc d'apporter toutes les modifications structurelles nécessaires (reportez-vous à l'exemple ci-après). 100 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z La clause Order modifie l'ordre des colonnes, et non celui des lignes de la table. L'ordre des colonnes définit la position relative des colonnes lorsque vous parcourez une table. La première colonne apparaît au bord gauche de la fenêtre Données, et la dernière colonne au bord droit. De même, la première colonne d'une table apparaît au-dessus d'une fenêtre d'Outil Informations. Si une application MapBasic émet une instruction Alter Table qui modifie une table contenant des champs mémo, ces champs seront alors perdus. Aucun avertissement ne sera affiché. Une instruction Alter Table peut entraîner la suppression de couches d'une fenêtre Carte, voire la perte de thèmes ou d'objets de dessin. Si vous incluez le mot-clé Interactive, MapInfo Professional invite l'utilisateur à enregistrer les analyses thématiques et/ou objets dessin (si ceux-ci sont sur le point d'être perdus). Exemple Dans l'exemple suivant, la table gcpop.tab contient les colonnes suivantes : pop_88, metsize, fipscode et utmcode. L'instruction Alter Table ci-dessous apporte plusieurs modifications à la table gcpop. Tout d'abord, une clause Rename renomme la colonne pop_88 en population. Puis la clause Drop supprime les colonnes metsize, fipscode et utmcode. Une clause Add crée ensuite deux nouvelles colonnes : une colonne d'entier court (2 octets) appelée schoolcode et une colonne à virgule flottante appelée federalaid. Et enfin, une clause Order indique l'ordre du nouvel ensemble de colonnes : la colonne schoolcode arrive en premier, suivie de la colonne population, etc. Open Table "gcpop" Alter Table gcpop (Rename pop_88 population Drop metsize, fipscode, utmcode Add schoolcode SmallInt, federalaid Float Order schoolcode, population, federalaid) Voir également Instruction Add Column, Instruction Create Index, Instruction Create Map, Instruction Create Table Fonction ApplicationDirectory$( ) Objectif Renvoie une chaîne contenant le chemin d'accès au répertoire depuis lequel l'application MapBasic est exécutée. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ApplicationDirectory$( ) Valeur renvoyée Expression de chaîne qui représente le chemin d'accès à un répertoire. Référence 101 Fonction ApplicationName$( ) Description En appelant la fonction ApplicationDirectory$( ) à partir d'une application MapBasic compilée, vous pouvez déterminer le répertoire ou le dossier à partir duquel l'application est exécutée. Si aucune application n'est exécutée (si vous appelez la fonction en la tapant dans la fenêtre MapBasic), ApplicationDirectory$( ) renvoie une chaîne vide. Pour déterminer le répertoire ou le dossier dans lequel le logiciel MapInfo Professional est installé, appelez la Fonction ProgramDirectory$( ). Exemple Dim sAppPath As String sAppPath = ApplicationDirectory$( ) ' At this point, sAppPath might look like this: ' ' "C:\MAPBASIC\CODE\" Voir également Fonction ProgramDirectory$( ), Fonction ApplicationName$( ) Fonction ApplicationName$( ) Objectif Renvoie une chaîne contenant le nom de l'application MapBasic en cours d'exécution. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ApplicationName$( ) Valeur renvoyée Expression de chaîne qui représente le nom du programme MapBasic. Description En appelant la fonction ApplicationName$( ) depuis une application MapBasic compilée, vous pouvez déterminer le nom de l'application exécutée. Si aucune application n'est exécutée (si vous appelez la fonction en la tapant dans la fenêtre MapBasic, par exemple), ApplicationName$( ) renvoie une chaîne vide. Pour déterminer le chemin à partir duquel l'application MapBasic est exécutée, appelez la Fonction ApplicationDirectory$( ). Exemple Dim sAppName As String sAppName = ApplicationName$( ) ' At this point, sAppName might look like this: ' ' "Test.MBX" 102 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Fonction ApplicationDirectory$( ) Fonction Area( ) Objectif Renvoie la surface géographique d'un objet. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Area( obj_expr, unit_name ) obj_expr correspond à une expression d'objet. unit_name est une chaîne qui représente le nom d'une unité de surface (« km² », par exemple). Valeur renvoyée Nombre à virgule flottante Description La fonction Area( ) renvoie la surface de l'objet géographique spécifié par obj_expr. La fonction renvoie la mesure de la surface dans les unités spécifiées par le paramètre unit_name. Par exemple, pour obtenir une surface en acres, spécifiez « acre » comme paramètre unit_name. Pour obtenir la liste des noms d'unités disponibles, reportez-vous à la section Instruction Set Area Units. Seuls les régions, ellipses, rectangles et rectangles arrondis ont une surface. Par définition, la surface d'un objet point, arc, texte, ligne ou polyligne est nulle. La fonction Area( ) renvoie des résultats approximatifs lorsqu'elle est exécutée sur des rectangles arrondis. MapBasic calcule la surface d'un rectangle arrondi comme si l'objet était un rectangle conventionnel. MapInfo Professional effectue, pour la plus grande partie, un calcul cartésien ou sphérique. Généralement, un calcul sphérique est effectué sauf si les données proviennent d'un système de coordonnées non terrestre, auquel cas un calcul cartésien a lieu. Exemples Dans l'exemple suivant, la fonction Area( ) permet de calculer la surface d'un seul objet géographique. Notez que l'expression tablename.obj (states.obj, par exemple) représente l'objet géographique de la ligne active dans la table spécifiée. Dim f_sq_miles As Float Open Table "states" Fetch First From states f_sq_miles = Area(states.obj, "sq mi") Référence 103 Fonction AreaOverlap( ) Vous pouvez également utiliser la fonction Area( ) dans l'instruction SQL Select, comme indiqué dans l'exemple suivant. Select state, Area(obj, "sq km") From states Into results Voir également Fonction ObjectLen( ), Fonction Perimeter( ), Fonction CartesianArea( ), Fonction SphericalArea( ), Instruction Set Area Units Fonction AreaOverlap( ) Objectif Renvoie la surface qui résulte du chevauchement de deux objets fermés. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe AreaOverlap( object1, object2 ) object1 et object2 sont des objets fermés. Valeur renvoyée Valeur à virgule flottante qui représente la surface (dans les unités de surface actuelles de MapBasic) du chevauchement des deux objets. Restrictions La fonction AreaOverlap( ) concerne uniquement les objets fermés. Si les deux objets ne sont pas fermés (les points et les lignes, par exemple), vous risquez de voir apparaître un message d'erreur. Les objets fermés sont des objets qui peuvent produire une surface, comme des régions (polygones). Voir également Fonction Overlap( ), Fonction ProportionOverlap( ), Instruction Set Area Units Fonction Asc( ) Objectif Renvoie le code de caractère du premier caractère d'une expression de chaîne. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Asc( string_expr ) string_expr est une expression de chaîne. 104 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Valeur renvoyée Entier Description La fonction Asc( ) renvoie le code de caractère qui représente le premier caractère de la chaîne spécifiée par string_expr. Si string_expr est une chaîne vide, la fonction Asc( ) renvoie la valeur zéro. Remarque: Tous les environnements MapInfo Professional partagent des codes de caractères dans la plage 32 (espace) à 126 (tilde). Sur un système prenant en charge les jeux de caractères codés sur deux octets (Windows en japonais, par exemple) : si le premier caractère de string_expr est un caractère codé sur un octet, Asc( ) renvoie un nombre compris entre 0 et 255 ; si le premier caractère de string_expr est un caractère codé sur deux octets, Asc( ) renvoie une valeur comprise entre 256 et 65 535. Sur les systèmes qui ne prennent pas en charge les jeux de caractères codés sur deux octets, Asc( ) renvoie un nombre compris entre 0 et 255. Exemple Dim code As SmallInt code = Asc("Afghanistan") ' code will now be equal to 65, ' since 65 is the code for the letter A Voir également Fonction Chr$( ) Fonction Asin( ) Objectif Renvoie l'arc sinus d'un nombre. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Asin( num_expr ) num_expr est une expression numérique comprise entre un et moins un inclus. Valeur renvoyée Nombre à virgule flottante Description La fonction Asin( ) renvoie l'arc sinus de la valeur numérique de num_expr. En d'autres termes, Asin( ) renvoie l'angle dont le sinus est égal à num_expr. Référence 105 Fonction Ask( ) Le résultat renvoyé par Asin( ) représente un angle exprimé en radians. Cet angle se situera entre -Pi/2 et Pi/2 radians (en supposant que Pi soit égal à environ 3,141593 et que Pi/2 radians corresponde à 90 degrés). Pour convertir une valeur exprimée en degrés en radians, multipliez cette valeur par DEG_2_RAD. Pour convertir une valeur exprimée en radians en degrés, multipliez cette valeur par RAD_2_DEG. (Votre programme doit inclure le fichier MAPBASIC.DEF pour définir le code DEG_2_RAD ou RAD_2_DEG). Comme les valeurs des sinus sont comprises entre un et moins un, la valeur de l'expression num_expr ne doit pas être supérieure à un (1) ni être inférieure à moins un (-1). Exemple Include "MAPBASIC.DEF" Dim x, y As Float x = 0.5 y = Asin(x) * RAD_2_DEG ' y will now be equal to 30, ' since the sine of 30 degrees is 0.5 Voir également Fonction Acos( ), Fonction Atn( ), Fonction Cos( ), Fonction Sin( ), Fonction Tan( ) Fonction Ask( ) Objectif Affiche une boîte de dialogue invitant l'utilisateur à répondre à une question par oui ou par non (OK ou Annuler). Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Ask( prompt, ok_text, cancel_text ) prompt est une chaîne qui s'affiche sous forme d'invite dans la boîte de dialogue. ok_text est une chaîne (« OK », par exemple) qui s'affiche sur le bouton de confirmation. cancel_text est une chaîne (« Annuler », par exemple) qui s'affiche sur le bouton d'annulation. Valeur renvoyée Logique Description La fonction Ask( ) affiche une boîte de dialogue invitant l'utilisateur à répondre à une question par oui ou par non. Le paramètre prompt spécifie un message tel que : « Le fichier existe déjà. Voulez-vous continuer ? ». La chaîne prompt transmise à la fonction Ask peut contenir environ 2 000 caractères dont seuls les 299 premiers apparaîtront dans la boîte de dialogue. La boîte de dialogue contient deux boutons : l'utilisateur peut cliquer sur un bouton pour répondre positivement à l'invite, ou sur l'autre bouton pour répondre négativement. Le paramètre ok_text indique 106 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z le nom du bouton de réponse affirmative (« OK » ou « Continuer », par exemple), tandis que le paramètre cancel_text indique le nom du bouton de réponse négative (« Annuler » ou « Arrêter », par exemple). Si l'utilisateur sélectionne le bouton ok_text la fonction Ask( ) renvoie TRUE. Si l'utilisateur clique sur le bouton cancel_text ou annule d'une façon ou d'une autre la boîte de dialogue (en appuyant sur la touche Echap, par exemple), la fonction Ask( ) renvoie FALSE. Comme la taille des boutons est limitée, les chaînes ok_text et cancel_text doivent être courtes. Si vous avez besoin d'afficher des phrases qui sont trop longues pour pouvoir figurer dans de petits boutons de boîte de dialogue, vous pouvez utiliser l'instruction Dialog au lieu d'appeler la fonction Ask( ). Le bouton ok_text est le bouton défini par défaut (c'est celui qui est sélectionné lorsque l'utilisateur appuie sur la touche Entrée au lieu d'effectuer un clic avec la souris). Exemple Dim more As Logical more = Ask("Do you want to continue?", "OK", "Stop") Voir également Instruction Dialog, Instruction Note, Instruction Print Fonction Atn( ) Objectif Renvoie l'arc tangente d'un nombre. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Atn( num_expr ) num_expr représente une expression numérique. Valeur renvoyée Nombre à virgule flottante Description La fonction Atn( ) renvoie l'arc tangente de la valeur numérique de num_expr. En d'autres termes, Atn( ) renvoie l'angle dont la tangente est égale à num_expr. L'expression num_expr peut avoir n'importe quelle valeur numérique. Le résultat renvoyé par la fonction Atn( ) représente un angle, exprimé en radians, compris entre -Pi/2 radians et Pi/2 radians. Pour convertir une valeur exprimée en degrés en radians, multipliez cette valeur par DEG_2_RAD. Pour convertir une valeur exprimée en radians en degrés, multipliez cette valeur par RAD_2_DEG. (Votre programme doit inclure le fichier MAPBASIC.DEF pour définir le code DEG_2_RAD ou RAD_2_DEG). Référence 107 Instruction AutoLabel Exemple Include "MAPBASIC.DEF" Dim val As Float val = Atn(1) * RAD_2_DEG 'val is now 45, since the 'Arc tangent of 1 is 45 degrees Voir également Fonction Acos( ), Fonction Asin( ), Fonction Cos( ), Fonction Sin( ), Fonction Tan( ) Instruction AutoLabel Objectif Dessine les étiquettes dans une fenêtre Carte et stocke les étiquettes dans la couche Dessin. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe AutoLabel [ Window window_id ] [ { Selection | Layer layer_id } ] [ Overlap [ { On | Off } ] ] [ Duplicates [ { On | Off } ] ] window_id est un identifiant de fenêtre entier d'une fenêtre Carte. layer_id est le nom d'une table (World, par exemple,) ou le numéro d'une couche d'entier court (1 pour les étiquettes à dessiner sur la couche supérieure, par exemple). Description L'instruction AutoLabel dessine des étiquettes (objets texte) dans une fenêtre Carte. Seuls les objets actuellement visibles dans la fenêtre Carte sont étiquetés. La clause Window indique la fenêtre Carte à étiqueter. Si vous omettez la clause Window, MapInfo Professional dessine les étiquettes dans la fenêtre Carte supérieure. Si vous spécifiez Sélection, seuls les objets sélectionnés sont étiquetés. Si vous omettez Sélection et la clause Layer, toutes les couches sont étiquetées. La clause Overlap indique si MapInfo Professional dessine des étiquettes qui chevauchent d'autres étiquettes. Ce paramètre est défini par défaut sur Off (MapInfo Professional ne dessine pas d'étiquettes qui se chevauchent). Pour forcer MapInfo Professional à dessiner une étiquette pour chaque objet carte, que les étiquettes se chevauchent ou non, spécifiez Overlap On. La clause Duplicates indique si MapInfo Professional dessine une nouvelle étiquette pour un objet qui est déjà étiqueté. Ce paramètre est défini par défaut sur Off (doublons non autorisés). L'instruction AutoLabel utilise tous les paramètres de police et de position valides. Pour définir les options d'étiquetage, sélectionnez Carte > Contrôle des couches. Pour définir les paramètres de police et de position via MapBasic, émettez une instruction Set Map. Exemple Open Table "world" Interactive Open Table "worldcap" Interactive 108 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Map From world, worldcap AutoLabel Window FrontWindow( ) Layer world Voir également Instruction Set Map Instruction Beep Objectif Émet un bip. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Beep Description L'instruction Beep envoie un son au haut-parleur. Instruction Browse Objectif Ouvre une nouvelle fenêtre Données. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Browse expression_list From table [ Position ( x, y ) [ Units paper_units ] ] [ Width window_width [ Units paper_units ] ] [ Height window_height [ Units paper_units ] ] [ Row n ] [ Column n ] [ Min | Max ] expression_list est soit un astérisque soit une liste d'expressions de colonnes séparées par des virgules. table est une chaîne qui représente le nom d'une table ouverte. x, y indique la position de l'angle supérieur gauche de la fenêtre Données, en paper_units. paper_units est une chaîne qui représente le nom d'une unité papier (par exemple, « cm » pour centimètres). window_width et window_height indiquent la taille de la fenêtre Données, en paper_units. n est une valeur entière positive. Référence 109 Instruction Browse Description L'instruction Browse ouvre une fenêtre Données en vue d'afficher une table. Si expression_list est simplement un astérisque (*), la nouvelle fenêtre Données inclut alors tous les champs de la table. La clause expression_list peut également représenter une liste d'expressions séparées par des virgules, chacune définissant une colonne qui apparaîtra dans la fenêtre Données. Les expressions de la liste peuvent contenir des noms de colonnes, des opérateurs, des fonctions et des variables. Le nom de chaque colonne est dérivé de l'expression qui définit la colonne. Si une colonne est définie par l'expressionpopulation / area(obj, "acre"), cette expression apparaîtra alors sur la première ligne de la fenêtre Données en tant que nom de colonne. Pour affecter un alias à une expression, ajoutez une chaîne après l'expression (reportez-vous à l'exemple ci-dessous). Une clause facultative Position vous permet de spécifier l'emplacement auquel afficher à l'écran la fenêtre Données. La coordonnée x spécifie la distance (en unités papier) du bord gauche de la fenêtre de l'application MapInfo Professional au bord gauche de la fenêtre Données. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. La coordonnée y spécifie la distance du bord supérieur de la fenêtre MapInfo Professional au bord supérieur de la fenêtre Données. Les clauses facultatives Width et Height indiquent la taille de la fenêtre Données, en unités papier. Si aucune clause Width ni Height n'est définie, MapInfo Professional affecte à la fenêtre Données une taille par défaut qui dépend de la table en question : en règle générale, la hauteur de la fenêtre Données représente un quart de la hauteur de l'écran, sauf si la table ne comporte pas suffisamment de lignes pour remplir une fenêtre Données de cette taille et la largeur de la fenêtre Données dépend de la largeur des champs de la table. Si l'instruction Browse inclut le mot-clé facultatif Max, la fenêtre Données qui en résulte est agrandie au maximum et occupe tout l'espace disponible à l'écran pour MapInfo Professional. Si l'instruction Browse inclut à l'inverse le mot-clé Min, la fenêtre Données est immédiatement réduite au minimum. La clause Row définit la ligne de la table qui apparaîtra en haut de la fenêtre Données. Si l'instruction Browse n'inclut pas de clause Row, la première ligne de la table sera la ligne supérieure de la fenêtre Données. De la même manière, la clause Column définit les colonnes de la table qui apparaîtront à gauche de la fenêtre Données. Si l'instruction Browse n'inclut pas de clause Column, la première colonne de la table apparaîtra à gauche de la fenêtre Données. Exemple L'exemple ci-dessous ouvre la table World et affiche toutes les colonnes qu'elle contient dans une fenêtre Données. Open Table "world" Browse * From world L'exemple suivant spécifie exactement les expressions de colonnes de la table World à afficher dans la fenêtre Données. Open Table "world" Browse country, population, population/area(obj, "sq km") "Density" From world 110 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z La fenêtre Données qui en résulte contient trois colonnes. Les deux premières colonnes représentent les données telles qu'elles sont stockées dans la table World, et la troisième colonne est dérivée. MapBasic utilise la troisième expression pour diviser la population de chaque enregistrement de pays par la zone géographique de la région associée à cet enregistrement. L'expression de la colonne dérivée a un alias (« Densité ») qui apparaît dans la première ligne de la fenêtre Données. Voir également Instruction Set Browse, Instruction Set Window Fonction BrowserInfo( ) Objectif Renvoie des informations d'une fenêtre Données, telles que : le nombre total de lignes ou de colonnes dans la fenêtre Données, ou le numéro de ligne, le numéro de colonne, ou la valeur contenue dans la cellule active. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe BrowserInfo( window_id, attribute ) window_id est un identifiant de fenêtre entier. attribute est un code entier qui indique le type d'informations à renvoyer. Pour les valeurs, voir le tableau plus loin dans cette description. Valeur renvoyée Nombre à virgule flottante, valeur logique ou chaîne, selon le paramètre attribute. Description La fonction BrowserInfo( ) renvoie des informations sur une fenêtre Données. La fonction ne s'applique pas à la Sectorisation. Le paramètre window_id définit la fenêtre Données à rechercher. Pour obtenir un identifiant de fenêtre, appelez immédiatement la fonction FrontWindow( ) après ouverture de la fenêtre ou appelez la fonction WindowID( ) à tout moment après la création de la fenêtre. La fonction BrowserInfo () peut renvoyer plusieurs attributs pour une fenêtre Données. Le paramètre attribute indique à la fonction BrowserInfo ( ) les statistiques de fenêtre Données à renvoyer. Il doit s'agir d'un des codes du tableau suivant (issus du fichier MAPBASIC.DEF : Paramètre attribute ID Valeur renvoyée BROWSER_INFO_NROWS 1 Le nombre total de lignes dans la fenêtre Données. BROWSER_INFO_NCOLS 2 Le nombre total de colonnes dans la fenêtre Données. BROWSER_INFO_CURRENT_ROW 3 Référence Le numéro de ligne de la cellule activée dans la fenêtre Données. Les numéros de ligne commencent à un (1). 111 Clause Brush Paramètre attribute ID Valeur renvoyée BROWSER_INFO_CURRENT_COLUMN 4 Le numéro de colonne de la cellule activée dans la fenêtre Données. Les numéros de colonne commencent à zéro (0). BROWSER_INFO_CURRENT_CELL_VALUE 5 La valeur contenue dans la cellule activée de la fenêtre Données. Conditions d'erreur Une erreur ERR_BAD_WINDOW (590) est générée si le paramètre n'est pas un numéro de fenêtre valide. L'erreur ERR_FCN_ARG_RANGE (644) est générée si un argument se trouve en dehors de la plage valide. Une erreur ERR_WANT_BROWSER_WIN (312) est générée si l'identifiant d'une fenêtre ne correspond pas à une fenêtre Données. Voir également Fonction FrontWindow( ), Fonction WindowID( ) Clause Brush Objectif Spécifie un style de remplissage pour les objets graphiques. Vous pouvez utiliser cette clause dans la fenêtre MapBasic de MapInfo Professional. Syntaxe Brush brush_expr brush_expr est une expression Brush, ou une variable Brush, comme MakeBrush( pattern, fgcolor, bgcolor ). (Pour plus d'informations, reportez-vous à la section Fonction MakeBrush( ).) Description La clause Brush spécifie un style de pinceau, à savoir un ensemble de paramètres de couleurs et de trames qui déterminent l'apparence d'un objet rempli, tel qu'un cercle ou un rectangle. Brush est une clause, et non une instruction MapBasic complète. Diverses instructions liées aux objets, telles que l'instruction Create Ellipse, vous permettent de spécifier une valeur Brush. Le mot-clé Brush peut être suivi d'une expression prenant une valeur Brush. Cette expression peut être une variable Brush : Brush br_var ou un appel de fonction qui renvoie une valeur Brush : Brush MakeBrush(64, CYAN, BLUE) 112 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Avec certaines instructions MapBasic de base (l'instruction Set Map), le mot-clé Brush peut être immédiatement suivi des trois paramètres qui définissent un style Brush (trame, couleur de premier plan et couleur de fond) entre parenthèses : Brush(64, CYAN, BLUE) Certaines instructions MapBasic utilisent une expression Brush comme paramètre (nom d'une variable Brush, par exemple) et non en tant que clause Brush complète (mot-clé Brush suivi du nom d'une variable Brush). L'instruction Alter Object en est un exemple. Le tableau ci-dessous répertorie les trois paramètres (trame, couleur de premier plan et couleur de fond) qui définissent un style Brush : Paramètre Description trame Valeur entière comprise entre 1 et 8 ou entre 12 et 186 (voir le tableau ci-dessous). couleur de premier plan Valeur de couleur RVB sous forme d'entier. Reportez-vous à la section Fonction RGB( ). Le fichier de définitions , MAPBASIC.DEF inclut des instructions Define pour les paramètres de couleur suivants : BLACK, WHITE, RED, GREEN, BLUE, CYAN, MAGENTA et YELLOW. couleur de fond Valeur entière qui représente une couleur RVB. Pour spécifier un fond transparent, utilisez la trame 3 ou une trame plus élevée sans indiquer de paramètre de couleur de fond dans la clause Brush. Par exemple, indiquez Brush(5, BLUE) pour afficher de fines rayures bleues sans couleur de fond. Si vous ne spécifiez pas de paramètre de couleur de fond, cela revient à désactiver la case à cocher Fond de la boîte de dialogue Style polygone de MapInfo Professional. Pour spécifier une couleur de fond transparente lorsque vous appelez la fonction MakeBrush( ), indiquez la valeur -1 comme couleur de fond. Les trames disponibles se présentent comme suit. La trame 2 produit un remplissage uni, la trame 1 ne produit aucun remplissage. Référence 113 Fonction Buffer( ) Pour une liste exhaustive des trames disponibles, reportez-vous à l' Aide de MapInfo Professional―lancez MapInfo Professional et sélectionnez Aide > Contenu puis recherchez Table des trames de MapInfo Professional. Voir également Fonction CurrentBrush( ), Fonction MakeBrush( ) , Clause Pen, Clause Font, Clause Symbol Fonction Buffer( ) Objectif Renvoie un objet région qui représente un tampon (zone située dans une distance spécifiée d'un objet existant). Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Buffer( inputobject, resolution, width, unit_name ) 114 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z inputobject est une expression d'objet. resolution est une valeur d'entier court qui représente le nombre de nœuds par cercle à chaque angle. width est une valeur à virgule flottante qui représente le rayon du tampon. Si width est négatif et si inputobject est un objet fermé, l'objet renvoyé est plus petit que l'objet d'origine. Si width est négatif et si l'objet est un objet linéaire (ligne, polyligne, arc) ou un point, la valeur absolue de width est utilisée pour générer un tampon positif. unit_name est le nom de l'unité de distance (« km » pour kilomètres, par exemple) utilisée par width. Valeur renvoyée Objet polygone Description La fonction Buffer( ) renvoie une région qui représente un tampon. La fonction Buffer( ) renvoie une région qui représente un tampon. Pour créer un tampon autour d'un ensemble d'objets, utilisez l'instruction Create Object As Buffer. L'objet sera créé en utilisant le système de coordonnées actuel de MapBasic. La méthode utilisée pour calculer le tampon dépend du système de coordonnées. S'il s'agit d'un système de coordonnées non terrestre, un calcul cartésien est utilisé. Sinon, la méthode sphérique est appliquée. Exemple Le programme suivant crée un objet ligne, puis un tampon autour de la ligne. Le tampon s'étend sur un rayon de 10 miles par rapport à la ligne. Dim o_line, o_region As Object o_line = CreateLine(-73.5, 42.5, -73.6, 42.8) o_region = Buffer( o_line, 20, 10, "mi") Voir également Instruction Create Object Fonction ButtonPadInfo( ) Objectif Renvoie des informations sur un ButtonPad. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ButtonPadInfo( pad_name, attribute ) pad_nameest une chaîne qui représente le nom d'un ButtonPad existant. Utilisez Général, Dessin, Outils ou Standard pour rechercher les barres standard ou spécifiez le nom d'une barre personnalisée. attribute est un code qui indique les informations à renvoyer (reportez-vous au tableau ci-après). Référence 115 Fonction ButtonPadInfo( ) Valeur renvoyée Dépend du paramètre attribute spécifié. Description Le paramètre attribute spécifie les éléments à renvoyer. Les codes sont définis dans le fichier MAPBASIC.DEF Code attribute ID ButtonPadInfo( ) renvoie : BTNPAD_INFO_FLOATING 1 Logique. TRUE signifie que la barre est flottante et FALSE qu'elle est ancrée. BTNPAD_INFO_WIDTH 2 Entier court. Largeur de la barre exprimée en nombre de boutons (sans séparateur). BTNPAD_INFO_NBTNS 3 Entier court. Nombre de boutons de la barre. BTNPAD_INFO_X 4 Nombre indiquant la position x du coin supérieur gauche de la barre. Si la barre est ancrée, il s'agit d'un entier. La valeur est négative lorsqu'une barre d'outils est ancrée à gauche de la barre de menus. Si la barre est flottante, il s'agit d'une valeur à virgule flottante exprimée en unités papier (des pouces, par exemple). Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. BTNPAD_INFO_Y 5 Nombre indiquant la position y du coin supérieur gauche de la barre. La valeur est négative lorsqu'une barre d'outils est ancrée au-dessus de la barre de menus. BTNPAD_INFO_WINID 6 Entier. Identifiant de fenêtre de la barre spécifiée. BTNPAD_INFO_DOCK_POSITION 7 Renvoie la position de la barre de boutons : Floating, Left, Top, Right ou Bottom. Utilisez-le pour les barres d'outils flottantes, comme alternative à BTNPAD_INFO_FLOATING. Renvoie : • • • • • BTNPAD_INFO_DOCK_NONE (0) BTNPAD_INFO_DOCK_LEFT (1) BTNPAD_INFO_DOCK_TOP (2) BTNPAD_INFO_DOCK_RIGHT (3) BTNPAD_INFO_DOCK_BOTTOM (4) Exemple Include "mapbasic.def" If ButtonPadInfo("Main", BTNPAD_INFO_FLOATING) Then '...then the Main pad is floating; now let's dock it. Alter ButtonPad "Main" ToolbarPosition(0,0) Fixed End If 116 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Instruction Alter ButtonPad Instruction Call Objectif Appelle une sous-procédure ou une routine externe (DLL, XCMD). Restrictions Vous ne pouvez pas exécuter d'instruction Call à l'aide de la fenêtre MapBasic. Syntaxe Call subproc [ ( [ parameter ] [ , ... ] ) ] subproc est le nom d'une sous-procédure. parameter est une expression de paramètre à transmettre à la sous-procédure. Description L'instruction Call appelle une procédure. La procédure est généralement une sous-procédure MapBasic conventionnelle (définie via l'instruction Sub...End Sub). Un programme qui est exécuté sous MapInfo Professional peut également appeler un programme Windows Dynamic Link Library (DLL) via l'instruction Call. Lorsqu'une instruction Call appelle une procédure MapBasic conventionnelle, MapBasic commence à exécuter les instructions figurant dans la sous-procédure spécifiée et poursuit l'opération jusqu'à ce qu'une instruction End Sub ou une instruction Exit Sub soit rencontrée. À ce moment-là, MapBasic quitte la sous-procédure, puis exécute les instructions qui suivent l'instruction Call. L'instruction Call ne peut accéder qu'aux sous-procédures faisant partie de la même application. Un programme MapBasic doit émettre une Instruction Declare Sub pour définir la liste des noms et des paramètres de toute procédure pouvant être appelée, qu'il s'agisse d'une sous-procédure MapBasic conventionnelle, d'une procédure DLL ou d'une XCMD. Transmission de paramètres Les sous-procédures peuvent être définies sans paramètre. Si aucun paramètre n'est défini pour une sous-procédure donnée, tout appel à cette sous-procédure peut se présenter sous les formes suivantes : Call subroutine ou Call subroutine( ) Par défaut, chaque paramètre de sous-procédure est définit « par référence ». Lorsqu'une sous-procédure possède un paramètre par référence, l'appelant doit spécifier le nom d'une variable à transmettre en tant que paramètre. Référence 117 Instruction Call Si la procédure modifie par la suite le contenu du paramètre par référence, la variable de l'appelant est automatiquement mise à jour de manière à répercuter cette modification. Cela permet à l'appelant d'examiner les résultats renvoyés par la sous-procédure. Autrement, une partie ou la totalité des paramètres de la sous-procédure peut être transmise « par valeur » si le mot-clé ByVal apparaît avant le nom du paramètre dans les déclarations Sub et Declare Sub. Lorsqu'un paramètre est transmis par valeur, la sous-procédure reçoit une copie de la valeur de l'expression de paramètre. L'appelant peut alors transmettre une expression au lieu du nom d'une variable. Une sous-procédure peut prendre l'intégralité d'un tableau en tant que paramètre. Lorsqu'une sous-procédure attend un tableau en tant que paramètre, l'appelant doit spécifier le nom d'une variable de tableau sans parenthèse. Appel de routines externes Lorsqu'une instruction Call appelle une routine DLL, MapBasic exécute la routine jusqu'à ce qu'elle renvoie une valeur. La routine DLL spécifiée se trouve en fait dans un fichier distinct (KERNEL.EXE, par exemple). Le fichier DLL spécifié doit être présent au moment de l'exécution pour que MapBasic puisse appeler la DLL. De la même manière, si une instruction Call appelle une XCMD, le fichier qui contient la XCMD doit être présent au moment de l'exécution. Lorsque vous appelez des XCMD, vous ne pouvez pas spécifier de variables de tableaux ni de variables de types de données personnalisés en tant que paramètres. Exemple Dans l'exemple suivant, la sous-procédure Cube élève un nombre au cube (c'est-à-dire à la puissance trois), et renvoie le résultat. La sous-procédure utilise deux paramètres ; le premier paramètre contient le nombre à élever au cube, et le deuxième retransmet les résultats à l'appelant. Declare Sub Cube(ByVal original As Float, cubed As Float) Dim x, result As Float Call Cube( 2, result) ' result now contains the value: 8 (2 x 2 x 2) x = 1 Call Cube( x + 2, result) ' result now contains the value: 27 (3 x 3 x 3) End Program Sub Cube (ByVal original As Float, cubed As Float) ' Cube the "original" parameter, and store ' the result in the "cubed" parameter. cubed = original ^ 3 End Sub Voir également Instruction Declare Sub, Instruction Exit Sub, Instruction Global, Instruction Sub...End Sub 118 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction CartesianArea( ) Objectif Renvoie la mesure d'une surface calculée dans un système de coordonnées projeté plat en utilisant un algorithme cartésien. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CartesianArea( obj_expr, unit_name ) obj_expr correspond à une expression d'objet. unit_name est une chaîne qui représente le nom d'une unité de surface (« km² », par exemple). Valeur renvoyée Nombre à virgule flottante Description La fonction CartesianArea( ) renvoie la surface cartésienne de l'objet géographique spécifié par obj_expr. La fonction renvoie la mesure de la surface dans les unités spécifiées par le paramètre unit_name. Par exemple, pour obtenir une surface en acres, spécifiez « acre » comme paramètre unit_name. Reportez-vous à la section Instruction Set Area Units pour obtenir la liste des noms d'unités disponibles. La fonction CartesianArea( ) renvoie toujours la surface à l'aide d'un algorithme cartésien. La valeur -1 est renvoyée pour les données d'un système Latitude/Longitude puisque les données ne sont pas projetées. Seuls les régions, ellipses, rectangles et rectangles arrondis ont une surface. Par définition, la valeur CartesianArea( ) d'un objet point, arc, texte, ligne ou polyligne est nulle. La fonction CartesianArea( ) renvoie des résultats approximatifs lorsqu'elle est exécutée sur des rectangles arrondis. MapBasic calcule la surface d'un rectangle arrondi comme si l'objet était un rectangle conventionnel. Exemples Dans l'exemple suivant, la fonction CartesianArea( ) permet de calculer la surface d'un seul objet géographique. L'expression tablename.obj (par exemple, states.obj) représente l'objet géographique de la ligne actuelle dans la table spécifiée. Dim f_sq_miles As Float Open Table "counties" Fetch First From counties f_sq_miles = CartesianArea(counties.obj, "sq mi") Vous pouvez également utiliser la fonction CartesianArea( ) dans l'instruction Select, comme indiqué dans l'exemple suivant. Select lakes, CartesianArea(obj, "sq km") From lakes Into results Voir également Référence 119 Fonction CartesianBuffer( ) Fonction Area( ), Fonction SphericalArea( ) Fonction CartesianBuffer( ) Objectif Renvoie un objet région qui représente un tampon (zone située dans une distance spécifiée d'un objet existant). Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CartesianBuffer( inputobject, resolution, width, unit_name ) inputobject est une expression d'objet. resolution est une valeur d'entier court qui représente le nombre de nœuds par cercle à chaque angle. width est une valeur à virgule flottante qui représente le rayon du tampon. Si width est négatif et si inputobject est un objet fermé, l'objet renvoyé est plus petit que l'objet d'origine. unit_name est le nom de l'unité de distance (« km » pour kilomètres, par exemple) utilisée par width. Valeur renvoyée Objet région Description La fonction CartesianBuffer( ) renvoie une région qui représente un tampon et agit sur un seul objet à la fois. Pour créer un tampon autour d'un ensemble d'objets, utilisez l'instruction Create Object As Buffer. Si width est négatif et si l'objet est un objet linéaire (ligne, polyligne, arc) ou un point, la valeur absolue de width est utilisée pour générer un tampon positif. La fonction CartesianBuffer( ) calcule le tampon en partant du principe que l'objet se trouve dans une projection à plat et en s'appuyant sur width pour déterminer un tampon calculé sur la base d'une distance cartésienne autour de l'objet. Si inputobject se trouve dans une projection Longitude/Latitude, des calculs sphériques sont alors effectués quelle que soit la fonction Buffer utilisée. Exemple Le programme suivant crée un objet ligne, puis un tampon qui s'étend sur un rayon de 10 miles par rapport à la ligne. Dim o_line, o_region As Object o_line = CreateLine(-73.5, 42.5, -73.6, 42.8) o_region = CartesianBuffer( o_line, 20, 10, "mi") Voir également Fonction Buffer( ), Création d'objets carte 120 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction CartesianConnectObjects( ) Objectif Renvoie un objet qui représente la distance la plus courte ou la plus longue entre deux objets. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CartesianConnectObjects( object1, object2, min ) object1 et object2 sont des expressions d'objet. min est une expression logique dans laquelle la valeur TRUE calcule la distance minimale entre les objets et la valeur FALSE calcule la distance maximale entre les objets. Valeur renvoyée Cette instruction renvoie une section simple, un objet polyligne à deux points qui représente la distance la plus courte (min == TRUE) ou la plus longue (min == FALSE) entre object1 et object2. Description Un point de l'objet polyligne qui en résulte se trouve dans object1 et l'autre point dans object2. La distance entre les deux objets d'origine peut être calculée à l'aide de la fonction ObjectLen( ). Si plusieurs instances comportent la distance minimale ou maximale (par exemple, les deux points renvoyés ne sont pas les seuls à correspondre à la distance la plus courte et il existe d'autres points qui représentent des « nœuds »), ces fonctions renvoient une seule de ces instances. Il n'est pas possible de déterminer si l'objet renvoyé est le seul à correspondre à la distance la plus courte. CartesianConnectObjects( ) renvoie un objet polyligne qui relie object1 et object2 selon la distance la plus courte (min == TRUE) ou la plus longue (min == FALSE) sur la base d'une méthode de calcul sphérique. Si le calcul ne peut pas être effectué à l'aide d'une méthode de distance cartésienne (par exemple, si le système de coordonnées MapBasic est Lat/Long), cette fonction génère une erreur. Fonction CartesianDistance( ) Objectif Renvoie la distance entre deux points. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CartesianDistance( x1, y1, x2, y2, unit_name ) x1 et x2 sont des coordonnées x. y1 et y2 sont des coordonnées y. unit_name est une chaîne qui représente le nom d'une unité de distance (« km », par exemple). Référence 121 Fonction CartesianObjectDistance( ) Valeur renvoyée Nombre à virgule flottante Description La fonction CartesianDistance( ) calcule la distance cartésienne entre deux endroits. Elle renvoie l'unité de mesure de la distance indiquée par le paramètre unit_name. Par exemple, pour obtenir une distance en kilomètres, attribuez la valeur « km » au paramètre unit_name. Pour obtenir la liste des noms d'unités disponibles, reportez-vous à la section Instruction Set Distance Units. La fonction CartesianDistance( ) renvoie toujours une valeur à l'aide d'un algorithme cartésien. La valeur -1 est renvoyée pour les données qui se trouvent dans un système de coordonnées Latitude/Longitude car ces données ne sont pas projetées et donc pas cartésiennes. Les paramètres des coordonnées x et y doivent utiliser le système de coordonnées actuel de MapBasic. Par défaut, MapInfo Professional attend que les coordonnées utilisent un système de coordonnées Latitude/Longitude. Vous pouvez réinitialiser le système de coordonnées MapBasic par le biais de l'instruction Set CoordSys. Exemple Dim dist, start_x, start_y, end_x, end_y As Float Open Table "cities" Fetch First From cities start_x = CentroidX(cities.obj) start_y = CentroidY(cities.obj) Fetch Next From cities end_x = CentroidX(cities.obj) end_y = CentroidY(cities.obj) dist = CartesianDistance(start_x,start_y,end_x,end_y,"mi") Voir également Fonctions mathématiques, Fonction CartesianDistance( ), Fonction Distance( ) Fonction CartesianObjectDistance( ) Objectif Renvoie la distance entre deux objets. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CartesianObjectDistance( object1, object2, unit_name ) object1 et object2 sont des expressions d'objet. unit_name est une chaîne qui représente le nom d'une unité de distance. Valeur renvoyée Nombre à virgule flottante 122 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description CartesianObjectDistance( ) renvoie la distance minimale entre object1 et object2 CartesianObjectDistance( ) renvoie la distance minimale entre object1 et object2 sur la base d'une méthode de calcul cartésienne, la valeur renvoyée étant exprimée en unit_name. Si le calcul ne peut pas être effectué à l'aide d'une méthode de distance cartésienne (par exemple, si le système de coordonnées MapBasic est Lat/Long), cette fonction génère une erreur. Fonction CartesianObjectLen( ) Objectif Renvoie la longueur géographique d'un objet ligne ou polyligne. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CartesianObjectLen( obj_expr, unit_name ) obj_expr correspond à une expression d'objet. unit_name est une chaîne qui représente le nom d'une unité de distance (« km », par exemple). Valeur renvoyée Nombre à virgule flottante Description La fonction CartesianObjectLen( ) renvoie la longueur d'une expression d'objet. Seuls les objets ligne et polyligne possèdent des valeurs de longueur supérieures à zéro. Pour mesurer la circonférence d'un rectangle, d'une ellipse ou d'une région, utilisez la fonction Perimeter( ). La fonction CartesianObjectLen( ) renvoie toujours une valeur à l'aide d'un algorithme cartésien. La valeur -1 est renvoyée pour les données qui se trouvent dans un système de coordonnées Latitude/Longitude car ces données ne sont pas projetées et donc pas cartésiennes. La fonction CartesianObjectLen( ) envoie l'unité de mesure de la longueur indiquée par le paramètre unit_name. Par exemple, pour obtenir une longueur en kilomètres, attribuez la valeur « km » au paramètre unit_name. Reportez-vous à la section Instruction Set Distance Units pour obtenir la liste des noms d'unités valides. Exemple Dim geogr_length As Float Open Table "streets" Fetch First From streets geogr_length = CartesianObjectLen(streets.obj, "mi") ' geogr_length now represents the length of the ' street segment, in miles Voir également Fonction SphericalObjectLen( ), Fonction CartesianObjectLen( ), Fonction ObjectLen( ) Référence 123 Fonction CartesianOffset( ) Fonction CartesianOffset( ) Objectif Renvoie une copie de l'objet d'origine décalé de la distance et de l'angle spécifiés à l'aide d'un type de distance cartésien. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CartesianOffset( object, angle, distance, units ) object est l'objet auquel le décalage est appliqué. angle est l'angle de décalage de l'objet. distance est la distance utilisée pour le décalage de l'objet. units est une chaîne qui représente l'unité dans laquelle la distance est mesurée. Valeur renvoyée Objet Description Cette fonction produit un nouvel objet qui est une copie de l'objet d'origine décalé par la distance sur l'angle (en degrés, par rapport à l'axe horizontal sur l'axe des X positif égal à 0 et la valeur positive dans le sens inverse des aiguilles d'une montre). La chaîne d'unité, qui est semblable à celle utilisée pour la Fonction ObjectLen( ) ou la Fonction Perimeter( ), est l'unité des valeurs de distance. Le type de distance utilisé est cartésien. Si le système de coordonnées de l'objet d'origine est Lat/Long, une erreur se produit car le type de distance cartésien n'est pas valide pour le système Lat/Long. Un objet NULL est renvoyé. Le système de coordonnées utilisé est le système de coordonnées de l'objet d'origine. Certains aspects des mesures sphériques ne s'appliquent pas aux mesures cartésiennes. Si vous déplacez un objet qui se trouve dans un système Lat/Long, la forme de l'objet reste identique, mais la surface de l'objet change. Cela s'explique par le fait que vous prélevez un écart de décalage en degrés et que la distance mesurée réelle pour un degré est différente à différents emplacements. Pour les fonctions Offset, l'écart de décalage réel est calculé à un point fixe de l'objet (par exemple, le centre du rectangle d'encombrement), puis cette valeur est convertie à partir des unités d'entrée dans les unités du système de coordonnées. Si le système de coordonnées est Lat/Long, la conversion en degrés utilise le point fixe. La mesure de la distance convertie réelle peut varier à différents emplacements de l'objet. La distance entre l'objet d'origine et le nouvel objet décalé n'est exacte qu'au point fixe utilisé. Exemple CartesianOffset(Rect, 45, 100, "mi") Voir également Fonction CartesianOffsetXY( ) 124 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction CartesianOffsetXY( ) Objectif Renvoie une copie de l'objet d'origine décalé par les valeurs de décalage X et Y spécifiées à l'aide d'un type de distance cartésien. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CartesianOffsetXY( object, xoffset, yoffset, units ) object est l'objet auquel le décalage est appliqué. xoffset et yoffset sont la distance de décalage de l'objet le long des axes x et y respectivement. units est une chaîne qui représente l'unité dans laquelle la distance est mesurée. Valeur renvoyée Objet Description Cette fonction produit un nouvel objet qui est une copie de l'objet d'origine décalé par la valeur xoffset sur l'axe des X et par la valeur yoffset sur l'axe des Y. La chaîne d'unité, qui est semblable à celle utilisée pour la Fonction ObjectLen( ) ou la Fonction Perimeter( ), est l'unité des valeurs de distance. Le type de distance utilisé est cartésien. Si le système de coordonnées de l'objet d'origine est Lat/Long, une erreur se produit car le type de distance cartésien n'est pas valide pour le système Lat/Long. Un objet NULL est renvoyé. Le système de coordonnées utilisé est le système de coordonnées de l'objet d'origine. Certains aspects des mesures sphériques ne s'appliquent pas aux mesures cartésiennes. Si vous déplacez un objet qui se trouve dans un système Lat/Long, la forme de l'objet reste identique, mais la surface de l'objet change. Cela s'explique par le fait que vous prélevez un écart de décalage en degrés et que la distance mesurée réelle pour un degré est différente à différents emplacements. Pour les fonctions Offset, l'écart de décalage réel est calculé à un point fixe de l'objet (par exemple, le centre du rectangle d'encombrement), puis cette valeur est convertie à partir des unités d'entrée dans les unités du système de coordonnées. Si le système de coordonnées est Lat/Long, la conversion en degrés utilise le point fixe. La mesure de la distance convertie réelle peut varier à différents emplacements de l'objet. La distance entre l'objet d'origine et le nouvel objet décalé n'est exacte qu'au point fixe utilisé. Exemple CartesianOffset(Rect, 45, 100, "mi") Voir également Fonction CartesianOffset( ) Référence 125 Fonction CartesianPerimeter( ) Fonction CartesianPerimeter( ) Objectif Renvoie le périmètre d'un objet graphique. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CartesianPerimeter( obj_expr , unit_name ) obj_expr correspond à une expression d'objet. unit_name est une chaîne qui représente le nom d'une unité de distance (« km », par exemple). Valeur renvoyée Nombre à virgule flottante Description La fonction CartesianPerimeter( ) calcule le périmètre de l'objet obj_expr. La Fonction Perimeter( ) est définie pour les types d'objets suivants : ellipses, rectangles, rectangles arrondis et polygones. Les autres types d'objets possèdent des mesures de périmètre égales à zéro. La fonction CartesianPerimeter( ) renvoie toujours une valeur à l'aide d'un algorithme cartésien. La valeur -1 est renvoyée pour les données qui se trouvent dans un système de coordonnées Latitude/Longitude car ces données ne sont pas projetées et donc pas cartésiennes. La fonction CartesianPerimeter( ) renvoie l'unité de mesure de la longueur indiquée par le paramètre unit_name. Par exemple, pour obtenir une longueur en kilomètres, attribuez la valeur « km » au paramètre unit_name. Reportez-vous à la section Instruction Set Distance Units pour obtenir la liste des noms d'unités valides. La fonction CartesianPerimeter( ) renvoie des résultats approximatifs lorsqu'elle est exécutée sur des rectangles arrondis. MapBasic calcule le périmètre d'un rectangle aux coins arrondis comme si l'objet était un rectangle conventionnel. Exemple Dans l'exemple ci-dessous, la fonction CartesianPerimeter( ) permet de déterminer le périmètre d'un objet géographique particulier. Dim perim As Float Open Table "world" Fetch First From world perim = CartesianPerimeter(world.obj, "km") ' The variable perim now contains ' the perimeter of the polygon that's attached to ' the first record in the World table. Vous pouvez également utiliser la fonction CartesianPerimeter( ) dans l'Instruction Select. L'instruction Select ci-dessous extrait des informations à partir de la table States et stocke les résultats dans une 126 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z table temporaire appelée Results. Comme l'Instruction Select inclut la fonction CartesianPerimeter( ) la table Results comportera une colonne indiquant le périmètre de chaque État. Open Table "states" Select state, CartesianPerimeter(obj, "mi") From states Into results Voir également Fonction CartesianPerimeter( ), Fonction SphericalPerimeter( ), Fonction Perimeter( ) Fonction Centroid( ) Objectif Renvoie le centroïde (point central) d'un objet. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Centroid( obj_expr ) obj_expr correspond à une expression d'objet. Valeur renvoyée Objet point Description La fonction Centroid( ) renvoie un objet point qui se trouve au niveau du centroïde de l'objetobj_expr spécifié. Le centroïde d'une région ne représente pas son centre de masse. Il s'agit de l'emplacement utilisé pour positionner les étiquettes automatiques, les points de géocodage et les graphiques thématiques à secteurs ou à barres. Si vous modifiez une carte en mode Modifier objets, vous pouvez repositionner les centroïdes des polygones en les faisant glisser. Si le paramètre obj_expr représente un objet point, la fonction Centroid( ) renvoie la position du point. Si le paramètre obj_expr représente un objet ligne, la fonction Centroid( ) renvoie le point situé à mi-chemin entre les extrémités de la ligne. Si le paramètre obj_expr représente un objet polyligne, la fonction Centroid( ) renvoie le point situé au milieu du segment central de la polyligne. Si le paramètre obj_expr représente un autre type d'objet, la fonction Centroid( ) renvoie le point situé au niveau du centroïde réel de l'objet d'origine. Pour les objets rectangle, arc, texte et ellipse, le centroïde se trouve à mi-chemin entre les extrémités supérieure et inférieure, et à mi-chemin entre les extrémités gauche et droite de l'objet. Pour les objets région, en revanche, le centroïde se trouve toujours sur l'objet en question et, par conséquent, ne peut pas être situé à mi-chemin entre les extrémités de l'objet. Exemple Dim pos As Object Open Table "world" Référence 127 Fonction CentroidX( ) Fetch First From world pos = Centroid(world.obj) Voir également Instruction Alter Object, Fonction CentroidX( ) , Fonction CentroidY( ) Fonction CentroidX( ) Objectif Renvoie la coordonnée x (abscisse) du centroïde d'un objet. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CentroidX( obj_expr ) obj_expr est une expression d'objet. Valeur renvoyée Nombre à virgule flottante Description La fonction CentroidX( ) renvoie la coordonnée X (longitude, par exemple) du centroïde de l'objet spécifié. Pour plus d'informations sur la signification du concept de position d'un centroïde par rapport aux différents types d'objets graphiques (lignes par rapport aux régions, etc.), reportez-vous à la section Fonction Centroid( ). Les informations de coordonnées sont renvoyées dans le système de coordonnées actuel de MapBasic (par défaut, le système Longitude/Latitude). L'instruction Set CoordSys vous permet de modifier le système de coordonnées utilisé. Exemples Dans l'exemple suivant, la fonction CentroidX( ) permet de calculer la longitude d'un seul objet géographique. Dim x As Float Open Table "world" Fetch First From world x = CentroidX(world.obj) Vous pouvez également utiliser la fonction CentroidX( ) dans l'instruction Select. L'instruction Select ci-dessous extrait des informations de la table World et stocke les résultats dans une table temporaire appelée Results. Comme l'instruction Select inclut la fonction CentroidX( ) et la fonction CentroidY( ), la table Results comportera des colonnes indiquant la longitude et la latitude du centroïde de chaque pays. Open Table "world" Select country, CentroidX(obj), CentroidY(obj) From world Into results 128 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Fonction Centroid( ), Fonction CentroidY( ) , Instruction Set CoordSys Fonction CentroidY( ) Objectif Renvoie la coordonnée y (ordonnée) du centroïde d'un objet. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CentroidY( obj_expr ) obj_expr correspond à une expression d'objet. Valeur renvoyée Nombre à virgule flottante Description La fonction CentroidY( ) renvoie la coordonnée Y (latitude, par exemple) du centroïde de l'objet spécifié. Pour plus d'informations sur la signification du concept de position d'un centroïde par rapport aux différents types d'objets graphiques (lignes par rapport aux régions, etc.), reportez-vous à la section Fonction Centroid( ). Les informations de coordonnées sont renvoyées dans le système de coordonnées actuel de MapBasic (par défaut, le système Longitude/Latitude). L'instruction Set CoordSys vous permet de modifier le système de coordonnées utilisé. Exemple Dim y As Float Open Table "world" Fetch First From world y = CentroidY(world.obj) Voir également Fonction Centroid( ), Fonction CentroidX( ), Instruction Set CoordSys Clause CharSet Objectif Spécifie le jeu de caractères que MapBasic utilise pour interpréter les codes de caractères. Remarque: Consultez le Guide de l'utilisateur de MapInfo Professional pour obtenir plus d'informations sur l'affectation de cette clause. Référence 129 Clause CharSet Syntaxe CharSet char_set char_set est une chaîne qui identifie le nom d'un jeu de caractères (reportez-vous au tableau ci-après). Description La clause CharSet spécifie le jeu de caractères que MapBasic doit utiliser pour la lecture ou l'écriture de fichiers ou de tables. Notez que CharSet est une clause, et non une instruction complète. Diverses instructions liées aux fichiers, telles que l'instruction Open File, peuvent intégrer des clauses facultatives CharSet. Qu'est-ce qu'un jeu de caractères ? Chaque caractère d'un clavier d'ordinateur correspond à un code numérique. Par exemple, la lettre « A » correspond au code de caractère 65. Un jeu de caractères désigne un ensemble de caractères qui s'affichent sur un ordinateur et un ensemble de codes numériques qui correspondent à ces caractères. Différents pays utilisent différents jeux de caractères. Par exemple, dans la version de Windows utilisée en Amérique du Nord et en Europe de l'Ouest, le code de caractère 176 correspond au symbole des degrés. Toutefois, si Windows est configuré pour utiliser un jeu de caractères différent, le code de caractère 176 peut représenter un caractère différent. Appelez SystemInfo(SYS_INFO_CHARSET) pour déterminer le jeu de caractères utilisé au moment de l'exécution. En quoi les jeux de caractères affectent-ils les programmes MapBasic ? Si vos fichiers utilisent uniquement les caractères ASCII standard compris dans la plage 32 (espace) à 126 (tilde), alors les jeux de caractères ne risquent pas d'entrer en conflit et vous n'avez pas besoin d'utiliser la clause CharSet. Si vos fichiers comprennent des caractères « spéciaux » (qui sont, par exemple, situés en dehors de la plage 32 à 126) et que vous travaillez dans un seul environnement (Windows, par exemple) en utilisant un seul jeu de caractères, vous n'avez pas non plus besoin d'utiliser la clause CharSet. Si votre programme doit lire un fichier existant qui contient des caractères « spéciaux » et si ce fichier a été créé avec un jeu de caractères qui ne correspond pas à celui utilisé lorsque vous exécutez votre programme, votre programme doit alors utiliser la clause CharSet. La clause CharSet doit indiquer le jeu de caractères utilisé au moment de la création du fichier. La clause CharSet spécifie un paramètre : une expression de chaîne qui identifie le nom du jeu de caractères à utiliser. Le tableau suivant indique les jeux de caractères disponibles. 130 Jeu de caractères Commentaires "Neutral" Aucune conversion de caractères n'a lieu. "ISO8859_1" ISO 8859-1 (UNIX) "ISO8859_2" ISO 8859-2 (UNIX) "ISO8859_3" ISO 8859-3 (UNIX) MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Jeu de caractères Commentaires "ISO8859_4" ISO 8859-4 (UNIX) "ISO8859_5" ISO 8859-5 (UNIX) "ISO8859_6" ISO 8859-6 (UNIX) "ISO8859_7" ISO 8859-7 (UNIX) "ISO8859_8" ISO 8859-8 (UNIX) "ISO8859_9" ISO 8859-9 (UNIX) "PackedEUCJapanese" UNIX, implémentation du japonais standard. "WindowsLatin2" Windows Est Europe "WindowsArabic" "WindowsCyrillic" "WindowsGreek" "WindowsHebrew" "WindowsTurkish" "WindowsTradChinese" Windows Chinois Traditionnel "WindowsSimpChinese" Windows Chinois Simplifié "WindowsJapanese" "WindowsKorean" "CodePage437" Page de code 437 de DOS = ASCII étendu IBM "CodePage850" Page de code 850 de DOS = Multilingue "CodePage852" Page de code 852 de DOS = Europe de l'Est "CodePage855" Page de code 855 de DOS = Cyrillique "CodePage857" "CodePage860" Page de code 860 de DOS = Portugais "CodePage861" Page de code 861 de DOS = Islandais "CodePage863" Page de code 863 de DOS = Français (Canada) "CodePage864" Page de code 864 de DOS = Arabe "CodePage865" Page de code 865 de DOS = Nordique "CodePage869" Page de code 869 de DOS = Grec moderne "LICS" Jeu de caractères international de Lotus (1,2) Référence 131 Fonction ChooseProjection$( ) Jeu de caractères Commentaires "LMBCS" Jeu de caractères international de Lotus (3,4) Remarque: Vous n'avez jamais besoin de spécifier une clause CharSet dans une instruction Open Table. Le fichier .TAB de chaque table contient des informations sur le jeu de caractères utilisé par la table. À l'ouverture d'une table, MapInfo Professional lit les informations relatives au jeu de caractères directement du fichier .TAB et procède automatiquement aux conversions de caractères requises. Pour forcer MapInfo Professional à enregistrer une table dans un jeu de caractères spécifique, incluez une CharSet dans l'instruction Commit Table. Voir également Instruction Commit Table, Instruction Create Table, Instruction Export, Instruction Open File, Instruction Register Table Fonction ChooseProjection$( ) Objectif Affiche la boîte de dialogue Choisir une projection et renvoie le système de coordonnées sélectionné par l'utilisateur. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ChooseProjection$( initial_coordsys, get_bounds ) initial_coordsys est une valeur de chaîne qui se présente sous la forme d'une clause CoordSys. Elle permet de définir le système de coordonnées sélectionné lorsque la boîte de dialogue est affichée. Si initial_coordsys est vide ou correspond à une clause CoordSys non valide, le système de coordonnées Longitude/Latitude par défaut est alors utilisé comme sélection initiale. get_bounds est une valeur logique qui détermine si l'utilisateur est invité à spécifier des valeurs limites lorsqu'une projection non terrestre est sélectionnée. Si get_bounds a pour valeur True, la boîte de dialogue des limites s'affiche. Si elle est définie sur False, la boîte de dialogue n'est pas affichée et la limite par défaut est utilisée. Description Cette fonction affiche la boîte de dialogue Choisir une projection et renvoie le système de coordonnées sélectionné sous la forme d'une chaîne. La chaîne renvoyée a le même format que la clause CoordSys. Utilisez cette fonction pour permettre à l'utilisateur de définir une projection au sein de votre application. Exemple Dim strNewCoordSys As String strNewCoordSys = ChooseProjection$( "", True) strNewCoordSys = "Set " + strNewCoordSys Run Command strNewCoordSys 132 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Fonction MapperInfo( ) Fonction Chr$( ) Objectif Renvoie une chaîne à un caractère qui correspond au code de caractère spécifié. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Chr$( num_expr ) num_expr est une valeur entière comprise entre 0 et 255 (ou, en cas d'utilisation d'un jeu de caractères codés sur deux octets, entre 0 et 65 535) inclus. Valeur renvoyée Chaîne Description La fonction Chr$( ) renvoie une chaîne d'un caractère, basée sur le code de caractère spécifié dans le paramètre expr_num. Sur la plupart des systèmes, num_expr doit être une valeur entière positive comprise entre 0 et 255. Sur les systèmes qui prennent en charge des jeux de caractères codés sur deux octets (version japonaise de Windows, par exemple), num_expr peut être une valeur comprise entre 0 et 65 535. Remarque: Tous les environnements MapInfo Professional partagent des codes de caractères dans la plage 32 (espace) à 126 (tilde). Si le paramètre num_expr est fractionnel, MapBasic l'arrondit à l'entier le plus proche. Le caractère 12 correspond au caractère de saut de page. Vous pouvez donc utiliser l'instruction Print Chr$(12) pour effacer la fenêtre Message. Le caractère 10 correspond au caractère de saut de ligne (voir l'exemple ci-dessous). Le caractère 34 correspond au guillemet double ("). Si une expression de chaîne inclut l'appel de fonction Chr$(34), MapBasic intègre un caractère représentant un guillemet double dans la chaîne. Conditions d'erreur Une erreur ERR_FCN_ARG_RANGE (644) est générée si un argument se trouve en dehors de la plage valide. Exemple Dim s_letter As String * 1 s_letter = Chr$(65) Note s_letter ' This displays the letter "A" Note "This message spans" + Chr$(10) + "two lines." Référence 133 Instruction Close All Voir également Fonction Asc( ) Instruction Close All Objectif Ferme toutes les tables ouvertes. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Close All [ Interactive ] Description Si une application MapBasic émet une instruction Close All alors que la table concernée comprend des modifications en cours (la table a été modifiée mais les modifications n'ont pas encore été enregistrées sur le disque), les modifications sont ignorées avant la fermeture de la table. Aucun avertissement ne sera affiché. Si vous ne souhaitez pas ignorer les modifications apportées, utilisez la clause facultative Interactive pour inviter l'utilisateur à les enregistrer ou à les ignorer. Voir également Instruction Close Table Instruction Close Connection Objectif Ferme une connexion qui avait été ouverte avec l'instruction Open Connection. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Close Connection connection_handle connection_handle est une expression entière qui représente la valeur renvoyée à partir de l'instruction Open Connection. Description L'instruction Close Connection ferme la connexion spécifiée à l'aide du handle de connexion renvoyé par une instruction Open Connection. Toutes les propriétés de services spécifiques associées à la connexion sont perdues. Voir également Instruction Open Connection 134 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Instruction Close File Objectif Ferme un fichier ouvert. Syntaxe Close File [ # ] filenum filenum est un nombre entier qui identifie le fichier à fermer. Description L'instruction Close File ferme un fichier qui avait été ouvert à l'aide de l'instruction Open File. Remarque: L'instruction Open File et l'instruction Close File sont généralement exécutées sur des fichiers, et non sur des tables MapInfo Professional. MapBasic propose un ensemble d'instructions distinct ( Instruction Open Table, par exemple) pour manipuler les tables MapInfo. Exemple Open File "cxdata.txt" For INPUT As #1 ' ' read from the file... then, when done: ' Close File #1 Voir également Instruction Open File Instruction Close Table Objectif Ferme une table ouverte. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Close Table table [ Interactive ] table est le nom d'une table qui est ouverte. Description L'instruction Close Table ferme une table ouverte. Pour fermer toutes les tables, utilisez l'instruction Close All. Référence 135 Instruction Close Window Si une table est affichée dans une ou plusieurs fenêtres Graphique ou Données, ces fenêtres disparaissent automatiquement à la fermeture de la table. Si l'instruction Close Table ferme la seule table ouverte dans une fenêtre Carte, cette fenêtre est également fermée. Si vous utilisez l'instruction Close Table pour fermer une table liée qui comprend des modifications en cours, MapInfo Professional conserve les modifications apportées jusqu'à une prochaine session. Enregistrement des modifications Si vous omettez le mot-clé facultatif Interactive, MapBasic ferme la table, qu'elle comporte ou non des modifications non enregistrées, et toutes les modifications non enregistrées sont ignorées. Si vous incluez le mot-clé Interactive et que la table comprend des modifications non enregistrées, MapBasic affiche une boîte de dialogue permettant à l'utilisateur d'enregistrer ou d'ignorer les modifications ou d'annuler l'opération de fermeture. Pour ignorer les modifications en cours, omettez le mot-clé Interactive ou émettez une instruction Rollback avant d'appeler Close Table. Pour enregistrer les modifications en cours, émettez une instruction Commit Table avant l'instruction Close Table. Pour déterminer si une table comprend des modifications non enregistrées, appelez la fonction TableInfo( ) ( table, TAB_INFO_EDITED). Enregistrement d'analyses thématiques et objets de dessin Lorsque vous fermez la dernière table d'une fenêtre Carte, la fenêtre est également fermée. Il se peut toutefois que l'utilisateur souhaite enregistrer les analyses thématiques ou objets de dessin avant de fermer la fenêtre. Pour inviter l'utilisateur à enregistrer les thèmes ou les objets de dessin, incluez le mot-clé Interactive. Si vous omettez le mot-clé Interactive, l'instruction Close Table n'invitera pas l'utilisateur à enregistrer les thèmes ou les objets de dessin. Si vous incluez le mot-clé Interactive, des boîtes de dialogue inviteront l'utilisateur à enregistrer les thèmes et/ou objets de dessin, le cas échéant. (Aucun message ne s'affiche si la fenêtre ne contient pas d'analyses thématiques ou d'objets de dessin.) Exemples Open Table "world" ' ... when done using the WORLD table, ' close it by saying: Close Table world Pour désélectionner les lignes sélectionnées, fermez la table Selection. Close Table Selection Voir également Instruction Close All, Instruction Commit Table, Instruction Open Table, Instruction Rollback, Fonction TableInfo( ) Instruction Close Window Objectif Ferme ou masque une fenêtre. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. 136 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Syntaxe Close Window window_spec [ Interactive ] window_spec est un nom de fenêtre (Distance, par exemple), un code de fenêtre (WIN_RULER, par exemple) ou un identifiant de fenêtre entier. Description L'instruction Close Window ferme ou masque une fenêtre MapInfo Professional. Pour fermer une fenêtre de document (Carte, Données, Graphique ou Mise en page), spécifiez un identifiant de fenêtre entier comme paramètre window_spec. Vous pouvez utiliser la fonction FrontWindow( ) et la fonction WindowID( ) pour obtenir les identifiants de fenêtre entiers. Pour fermer une fenêtre MapInfo Professional spécifique, définissez un des noms de fenêtre figurant dans le tableau ci-dessous comme paramètre window_spec. Vous pouvez identifier une fenêtre spéciale par un nom (par exemple, Distance) ou par un code (par exemple, WIN_RULER). Pour fermer une fenêtre d'habillage, indiquez l'identifiant de la fenêtre en question, conformément à la fonction MapperInfo( ). Les valeurs window_spec disponibles sont répertoriées dans le tableau ci-dessous : Valeur de window_spec Description de la fenêtre Aide Fenêtre Aide. Son code de définition est WIN_HELP. Infos Fenêtre Informations. Son code de définition est WIN_INFO. LayerControl Fenêtre Contrôle des couches. Son code de définition est WIN_LAYER_CONTROL. Dans une application de cartographie intégrée, cela désigne la version modale. Légende Fenêtre Légende thématique. Son code de définition est WIN_LEGEND. MapBasic Fenêtre MapBasic. Vous pouvez également désigner cette fenêtre par son code de définition : WIN_MAPBASIC. Message Fenêtre Message (qui apparaît lorsque vous exécutez une instruction Print). Son code de définition est WIN_MESSAGE. MoveMapTo Fenêtre Localiser sur la carte. Son code de définition est WIN_MOVE_MAP_TO. Ruler Fenêtre de l'outil Distance. Son code de définition est WIN_RULER. Statistiques Fenêtre Statistiques. Son code de définition est WIN_STATISTICS. TableList Fenêtre Liste des tables. Son code de définition est WIN_TABLE_LIST. Dans une application de cartographie intégrée, cela désigne la version modale. Remarque: Les identifiants des fenêtres Liste des tables, Contrôle des couches et Localiser sur la carte sont ignorés par l'instruction Set Window, la fonction WindowInfo( ) et la fonction WindowID( ). Référence 137 Fonction ColumnInfo( ) Enregistrement d'analyses thématiques et objets de dessin Il se peut que l'utilisateur souhaite enregistrer les couches thématiques ou objets de dessin avant de fermer la fenêtre. Pour inviter l'utilisateur à enregistrer les thèmes ou les objets de dessin, incluez le mot-clé Interactive. Si vous omettez le mot-clé Interactive, l'instruction Close Window n'invitera pas l'utilisateur à enregistrer les thèmes ou les objets de dessin. Si vous incluez le mot-clé Interactive, des boîtes de dialogue inviteront l'utilisateur à enregistrer les thèmes et/ou objets de dessin, le cas échéant. (Aucun message ne s'affiche si la fenêtre ne contient pas d'analyses thématiques ou d'objets de dessin.) Exemple Close Window Legend Voir également Instruction Open Window, Instruction Print, Instruction Set Window Fonction ColumnInfo( ) Objectif Renvoie des informations sur une colonne dans une table ouverte. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ColumnInfo( { tablename | tablenum } , { columnname | "COLn" } , attribute ) tablename est une chaîne qui représente le nom d'une table ouverte. tablenum est un entier qui représente le numéro d'une table ouverte. columnname est le nom d'une colonne figurant dans cette table. n est le nom d'une colonne figurant dans la table. attribute est un code qui indique l'élément de la colonne à lire. Valeur renvoyée Dépend du paramètre attribute spécifié. Description La fonction ColumnInfo( ) renvoie des informations sur une colonne d'une table ouverte. Le premier paramètre de cette fonction spécifie le nom ou le numéro d'une table ouverte. Le deuxième paramètre spécifie la colonne dans laquelle effectuer la requête. Le paramètre attribute indique les attributs de la colonne devant être renvoyés par la fonction. Le paramètre attribute peut être n'importe quelle valeur de cette table. 138 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Paramètre attribute ID Valeur renvoyée par ColumnInfo( ) : COL_INFO_NAME 1 Chaîne qui indique le nom de la colonne. COL_INFO_NUM 2 Entier court qui indique le numéro de la colonne. COL_INFO_TYPE 3 Entier court qui indique le type de la colonne (reportez-vous au tableau ci-dessous). COL_INFO_WIDTH 4 Entier court qui indique la largeur de la colonne. S'applique aux colonnes de caractères et décimales uniquement. COL_INFO_DECPLACES 5 Entier court qui indique le nombre de décimales dans une colonne de décimales. COL_INFO_INDEXED 6 Valeur logique qui indique si la colonne est indexée. COL_INFO_EDITABLE 7 Valeur logique qui indique si la colonne peut être modifiée. Si l'appel de la fonction ColumnInfo( ) spécifie COL_INFO_TYPE comme paramètre attribute, MapBasic renvoie l'une des valeurs figurant dans le tableau ci-dessous : Valeur renvoyée par ColumnInfo( ) ID : Type de colonne indiqué : COL_TYPE_CHAR 1 Caractère. COL_TYPE_DECIMAL 2 Décimale à virgule fixe. COL_TYPE_INTEGER 3 Entier (4 octets). COL_TYPE_SMALLINT 4 Entier court (2 octets). COL_TYPE_DATE 5 Date. COL_TYPE_LOGICAL 6 Valeur logique (TRUE ou FALSE). COL_TYPE_GRAPHIC 7 Obj. de type de colonne spécial. Représente les objets graphiques associés à la table. COL_TYPE_FLOAT 8 Décimale à virgule flottante. COL_TYPE_TIME 37 Heure. COL_TYPE_DATETIME 38 Date et heure. Les codes répertoriés dans les deux tableaux ci-dessus sont définis dans le fichier de définitions standard de MapBasic MAPBASIC.DEF. Votre programme doit inclure « MAPBASIC.DEF » si vous avez l'intention de référencer ces codes. Conditions d'erreur L'erreur ERR_TABLE_NOT_FOUND (405) est générée si la table spécifiée n'est pas disponible. L'erreur ERR_FCN_ARG_RANGE (644) est générée si un argument se trouve en dehors de la plage valide. Référence 139 Fonction Combine( ) Exemple Include "MAPBASIC.DEF" Dim s_col_name As String, i_col_type As SmallInt Open Table "world" s_col_name = ColumnInfo("world","col1",COL_INFO_NAME) i_col_type = ColumnInfo("world","col1",COL_INFO_TYPE) Voir également Fonction NumCols( ), Fonction TableInfo( ) Fonction Combine( ) Objectif Renvoie une région ou une polyligne qui représente l'union de deux objets. Les objets ne peuvent pas être des objets texte. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Combine( object1, object2 ) object1, object2 sont deux expressions d'objet. Ces deux objets peuvent être fermés (un polygone ou un cercle, par exemple) ou linéaires (une ligne ou une polyligne, par exemple) Valeur renvoyée Objet correspondant à l'union d'object1 et d'object2. Description La fonction Combine( ) renvoie un objet qui représente l'union géographique de deux expressions d'objet. L'union de deux objets représente la surface totale couverte par l'un et l'autre des objets. La fonction Combine( ) a été mise à jour de manière à permettre des assemblages hétérogènes et l'utilisation des objets point, multipoint et collection comme objets d'entrée. Auparavant, les objets devaient soit être tous les deux linéaires (polylignes, lignes ou arcs de cercle) et générer des objets polyligne, soit être tous les deux fermés (régions, rectangles, rectangles arrondis ou ellipses) et générer des objets région. Les assemblages hétérogènes ne sont pas autorisés, de même que les assemblages contenant des objets point, multipoint et collection. Les objets texte ne sont toujours pas autorisés en tant qu'entrée dans la fonction Combine( ). Les objets multipoint et collection, introduits dans MapInfo Professional 6.5, étendent l'opération Combine. Le tableau ci-dessous détaille les options d'assemblage possibles disponibles et les résultats obtenus : 140 Type d'objet d'origine Type d'objet d'origine Type d'objet créé point ou multipoint point ou multipoint Multipoint linéaire (ligne, polyligne, arc de cercle) Linéaire Polyligne MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Type d'objet d'origine Type d'objet d'origine Type d'objet créé fermé (région, rectangle, rectangle arrondi ou ellipse) Fermé Région point, multipoint, linéaire, fermé, point, multipoint, linéaire, fermé, Collection collection collection Les résultats renvoyés par Combine( ) sont semblables à ceux obtenus en sélectionnant Objets > Assembler dans MapInfo Professional, à la différence près que l'élément de menu Assembler modifie les objets d'origine alors que la fonction Combine( ) ne modifie pas les expressions object1 ni object2. La fonction Combine( ) n'effectue pas non plus d'agrégation de données. L'objet renvoyé par la fonction Combine( ) conserve les styles (la couleur, par exemple) du paramètre object1 lorsque cela s'avère possible. Les objets collection générés recevront les parties de style possibles d'object1 et les autres parties de style d'object2. Par exemple, si object1 est un polygone et object2 une polyligne, la collection générée utilisera le pinceau et la bordure d'object1 pour le style du polygone figurant dans la collection et la bordure d'object2 pour le style de la polyligne figurant dans la collection. Voir également Instruction Objects Combine Fonction CommandInfo( ) Objectif Renvoie des informations sur les événements récents. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CommandInfo( attribute ) attribute est un code entier qui indique le type d'information à renvoyer. Valeur renvoyée Valeur logique, nombre à virgule flottante, entier ou chaîne, selon le cas. Description La fonction CommandInfo( ) renvoie des informations sur les événements récents qui affectent MapInfo Professional. En cas de modification de la table « Selection » par exemple, elle indique l'emplacement où l'utilisateur a cliqué avec la souris ou s'il a effectué un clic simple ou cliqué tout en appuyant sur la touche Maj. Après l'affichage d'une boîte de dialogue Lorsque vous appelez CommandInfo( ) après avoir affiché une boîte de dialogue personnalisée, le paramètre attribute peut être l'un des codes ci-dessous. Référence 141 Fonction CommandInfo( ) Code attribute ID Valeur renvoyée par CommandInfo( attribute ) : CMD_INFO_DLG_OK 1 Valeur logique : TRUE si l'utilisateur a fermé une boîte de dialogue personnalisée en cliquant sur OK; FALSE si l'utilisateur a annulé l'opération en cliquant sur Cancel, en appuyant sur Echap. (Cet appel est uniquement valide à la suite d'une instruction Dialog.) CMD_INFO_STATUS 1 Valeur logique : TRUE si l'utilisateur a laissé une opération se terminer complètement ; FALSE si l'utilisateur a appuyé sur le bouton Annuler pour l'arrêter. Dans un gestionnaire d'options de menu ou de boîtes de dialogue personnalisées Lorsque vous appelez CommandInfo( ) à partir de la procédure de gestionnaire d'une commande de menu personnalisée ou d'une boîte de dialogue personnalisée, le paramètre attribute peut être l'un des codes ci-dessous : Code attribute ID Valeur renvoyée par CommandInfo( attribute ) : CMD_INFO_DLG_DBL 1 Valeur logique : TRUE si l'utilisateur a double-cliqué sur un contrôle ListBox ou MultiListBox dans une boîte de dialogue personnalisée. Cet appel n'est valide que dans la procédure de gestionnaire d'une boîte de dialogue personnalisée. CMD_INFO_MENUITEM 8 Valeur entière qui représente l'identifiant de l'option de menu choisie par l'utilisateur. Cet appel n'est valide que dans la procédure de gestionnaire d'une option de menu personnalisée. Dans une procédure de gestionnaire standard Lorsque vous appelez la fonction CommandInfo( ) à partir d'une procédure de gestionnaire système standard (SelChangedHandler, par exemple), le paramètre attribute peut être l'un des codes figurant dans le tableau ci-dessous. Pour plus de détails, reportez-vous aux descriptions respectivement relatives aux procédures SelChangedHandler, RemoteMsgHandler, WinChangedHandler et WinClosedHandler. À partir de la procédure SelChangedHandler : Code attribute ID CMD_INFO_SELTYPE 1 Valeur renvoyée par CommandInfo( attribute ) : 1 si une ligne a été ajoutée à la sélection ; 2 si une ligne a été supprimée de la sélection ; 3 si plusieurs lignes ont été ajoutées à la sélection ; 4 si plusieurs lignes ont été désélectionnées. 142 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Code attribute ID Valeur renvoyée par CommandInfo( attribute ) : CMD_INFO_ROWID 2 Valeur entière : numéro de la ligne qui a été sélectionnée ou désélectionnée (s'applique uniquement lorsqu'une seule ligne avait été sélectionnée ou désélectionnée). CMD_INFO_INTERRUPT 3 Valeur logique : TRUE si l'utilisateur a interrompu une sélection en appuyant sur Echap ; FALSE dans les autres cas. À partir de la procédure RemoteMsgHandler, de la fonction RemoteQueryHandler( ), ou de la procédure RemoteMapGenHandler : Code attribute ID Valeur renvoyée par CommandInfo( attribute ) : CMD_INFO_MSG 1000 Valeur de chaîne qui représente la chaîne d'exécution ou le nom de l'option envoyé à MapInfo Professional par un programme client. Pour plus d'informations, reportez-vous à la section Procédure RemoteMsgHandler, Fonction RemoteQueryHandler( ) ou Procédure RemoteMapGenHandler. À partir de la procédure WinChangedHandler ou procédure WinClosedHandler : Code attribute ID Valeur renvoyée par CommandInfo( attribute ) : CMD_INFO_WIN 1 Valeur entière qui représente l'identifiant de la fenêtre qui a changé ou de la fenêtre qui a été fermée. Pour plus d'informations, reportez-vous à la section Procédure WinChangedHandler ou Procédure WinClosedHandler. À partir de la procédure ForegroundTaskSwitchHandler : Code attribute ID Valeur renvoyée par CommandInfo( attribute ) : CMD_INFO_TASK_SWITCH 1 Valeur entière qui indique si MapInfo Professional vient de devenir l'application active ou vient d'arrêter d'être l'application active. La valeur renvoyée correspond à l'un de ces codes : SWITCHING_INTO_MI Pro (si MapInfo Professional a reçu le focus) ou SWITCHING_OUT_OF_MapInfo Professional (si MapInfo Professional a perdu le focus). Après une opération de recherche Suite à une instruction Find, le paramètre attribute peut être l'un de ces codes : Référence 143 Fonction CommandInfo( ) Code attribute ID Valeur renvoyée par CommandInfo( attribute ) : CMD_INFO_X ou CMD_INFO_Y 1, 2 Nombre à virgule flottante indiquant les coordonnées x ou y de l'emplacement trouvé. CMD_INFO_FIND_RC 3 Valeur entière qui indique si une correspondance a été trouvée pour l'instruction Find. CMD_INFO_FIND_ROWID 4 Valeur entière indiquant le numéro d'identification de la ligne trouvée. Dans une procédure de gestionnaire d'un ToolButton personnalisé Dans une procédure ToolHandler, vous pouvez spécifier l'un de ces codes : Code attribute ID Valeur renvoyée par CommandInfo( attribute ) : CMD_INFO_CUSTOM_OBJ 1 Valeur d'objet : une polyligne ou un polygone dessiné par l'utilisateur. S'applique aux modes de dessin DM_CUSTOM_POLYLINE ou DM_CUSTOM_POLYGON. CMD_INFO_X 1 Coordonnée x de l'emplacement où l'utilisateur a cliqué : • Si l'utilisateur a cliqué dans une fenêtre Carte, la valeur renvoyée représente une coordonnée de carte (longitude, par exemple) dans l'unité du système de coordonnées actuel. • Si l'utilisateur a cliqué dans une fenêtre Données, la valeur représente le numéro d'une colonne dans cette fenêtre Données (un pour la colonne située à l'extrémité gauche ou zéro pour la colonne select-box, par exemple).* • Si l'utilisateur a cliqué dans une fenêtre Mise en page, la valeur représente la distance à partir du bord gauche de cette fenêtre Mise en page (zéro représente le bord gauche, par exemple) dans les unités papier actuelles de MapBasic. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. CMD_INFO_Y 2 Coordonnée y de l'emplacement où l'utilisateur a cliqué : • Si l'utilisateur a cliqué dans une fenêtre Carte, la valeur représente une coordonnée de carte (latitude, par exemple). • Si l'utilisateur a cliqué dans une fenêtre Données, la valeur représente un numéro de ligne. La valeur un représente la ligne supérieure et la valeur zéro représente la ligne des en-têtes de colonne en haut de la fenêtre.* 144 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Code attribute ID Valeur renvoyée par CommandInfo( attribute ) : • Si l'utilisateur a cliqué sur une fenêtre Mise en page, la valeur représente la distance à partir du bord supérieur de la fenêtre Mise en page. CMD_INFO_SHIFT 3 Valeur logique : TRUE si l'utilisateur a maintenu la touche Maj enfoncée pendant qu'il cliquait. CMD_INFO_CTRL 4 Valeur logique : TRUE si l'utilisateur a maintenu la touche Ctrl enfoncée pendant qu'il cliquait. CMD_INFO_X2 5 Coordonnée x de l'emplacement où l'utilisateur a relâché le bouton de la souris. S'applique uniquement lorsque le toolbutton a été défini avec un mode de dessin qui autorise les déplacements par glisser (DM_CUSTOM_LINE, par exemple). CMD_INFO_Y2 6 Coordonnée y de l'emplacement où l'utilisateur a relâché le bouton de la souris. CMD_INFO_TOOLBTN 7 Valeur entière qui représente l'identifiant du bouton sur lequel l'utilisateur a cliqué. * La fonction CommandInfo( ) ignore les clics réalisés dans le coin supérieur gauche d'une fenêtre Données : au-dessus de la colonne de sélection et à gauche des en-têtes de colonne. Elle ignore également les clics effectués au-delà de la dernière colonne ou ligne. Prise en charge des liaisons dynamiques Les applications MapBasic lancées via l'outil Liaison dynamique peuvent utiliser la fonction CommandInfo( ) pour obtenir des informations sur l'objet qui a été activé. Le tableau ci-dessous répertorie les attributs qui peuvent être recherchés : Code attribute ID Valeur renvoyée par CommandInfo( attribute ) : CMD_INFO_HL_WINDOW_ID 17 Identifiant de la fenêtre Carte ou Données. CMD_INFO_HL_TABLE_NAME 18 Nom de la table associée à la fenêtre Carte ou Données. CMD_INFO_HL_ROWID 19 Identifiant de la ligne de la table correspondant à l'objet carte ou à la ligne du tableau. CMD_INFO_HL_LAYER_ID 20 Identifiant de la couche, si le programme a été lancé à partir d'une fenêtre Carte. CMD_INFO_HL_FILE_NAME 21 Nom du fichier lancé. Voir également Fonction FrontWindow( ), Fonction SelectionInfo( ) , Instruction Set Command Info, Fonction WindowInfo( ) Référence 145 Instruction Commit Table Instruction Commit Table Objectif Enregistre les modifications récentes sur le disque, ou enregistre une copie d'une table. Auparavant, vous n'aviez pas la possibilité d'enregistrer les requêtes comprenant des types indéterminés, comme cela était souvent le cas pour les requêtes ObjectInfo. Nous avons ajouté un paramètre Interactive, pour vous permettre de spécifier des types indéterminés dans ce genre de requête. Si vous ne vous servez pas du paramètre Interactive, le système utilise un type par défaut. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Commit Table table [ As filespec [ Type { NATIVE | DBF [ Charset char_set ] | Access Database database_filespec Version version Table tablename [ Password pwd ] [ Charset char_set ] | QUERY | ODBC Connection ConnectionNumber Table tablename [ Type SQLServerSpatial { Geometry | Geography } ] [ ConvertDateTime { ON | OFF | INTERACTIVE } ] } ] [ CoordSys... ] [ Version version ] ] [ Interactive ] [ { Interactive | Automatic commit_keyword } ] [ ConvertObjects { ON | OFF | INTERACTIVE } ] tableName est le nom de la table tel que vous souhaitez qu'il s'affiche dans une base de données. Le nom peut inclure un nom de schéma qui spécifie le schéma auquel appartient la table. Si aucun nom de schéma n'est fourni, la table appartient au schéma par défaut. L'utilisateur est chargé de donner un nom de schéma autorisé. Il doit également savoir si l'utilisateur de la connexion possède les droits appropriés sur le schéma en question. Cette extension ne s'applique qu'à SQL Server 2005. filespec est une spécification de fichier (qui peut inclure un chemin d'accès au répertoire). Correspond à l'emplacement où le fichier .TAB MapInfo est enregistré. ConvertDateTime si la table source contient des colonnes du type Heure ou Date, ces colonnes sont converties en DATETIME ou TIMESTAMP selon que le serveur prend ou non en charge ces types de données. Vous pouvez toutefois contrôler ce comportement à l'aide de la clause ConvertDateTime. Si la table source ne contient pas le type Heure ou Date, cette clause n'est pas exploitable. Si ConvertDateTime est défini sur Oui (paramètre défini par défaut), les colonnes du type Heure ou Date sont converties en DATETIME ou TIMESTAMP. Si ConvertDateTime est défini sur Non, la conversion n'a pas lieu et l'opération est annulée si nécessaire. Si ConvertDateTime est défini sur Interactif, une boîte de dialogue s'affiche pour inviter l'utilisateur à faire un choix dont dépendra l'action exécutée. Si l'utilisateur choisit de convertir, l'opération effectue la conversion et continue. S'il préfère annuler, l'opération est annulée. Le type Heure exige la conversion pour tous les serveurs pris en charge (Oracle, PostGIS, SQL Server Spatial, MS SQL Server et Access) et le type Date exige la conversion pour des serveurs de base de données MS SQL Server et Access. 146 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Remarque: Pour les serveurs de base de données MS SQL Server et Access, cette restriction pourrait entraîner un problème de rétrocompatibilité. Dans les éditions précédentes, nous exécutions la conversion sans l'expliquer. Dans la présente édition, nous vous proposons d'utiliser le type de données Date/Heure au lieu du type de données Date. Si vous utilisez le type de données Date, l'opération de conversion échouera. version est une expression qui définit la version du format de base de données Microsoft Jet que la nouvelle base de données doit utiliser : 4.0 (pour Access 2000) ou 3.0 (pour Access 95/97). Si aucune valeur n'est indiquée, la version par défaut est 12.0. Si la base de données dans laquelle la table est créée existe déjà, la version de base de données spécifiée est ignorée. ConvertObjects ON convertit automatiquement tous les objets non pris en charge trouvés dans les objets pris en charge. ConvertObjects OFF ne convertit aucun objet non pris en charge. Si de tels objets sont présents, un message d'erreur s'affiche pour indiquer que la table ne peut pas être enregistrée. (Avant l'implémentation de cette fonction, seul ce comportement était disponible.) ConvertObjects Interactive : si des objets non pris en charge sont trouvés dans une table, l'utilisateur est invité à indiquer l'action qu'il souhaite effectuer. char_set est le nom d'un jeu de caractères, reportez-vous à la section Clause CharSet. database_filespec est une chaîne qui identifie le nom et le chemin d'accès d'une base de données Access valide. Si la base de données spécifiée n'existe pas, MapInfo Professional crée un nouveau fichier Access (.MDB ou ACCDB). pwd est le mot de passe au niveau de la base de données, à spécifier lorsque la sécurité de la base de données est activée. ODBC indique qu'une copie de la table sera enregistrée dans le DBMS spécifié par ConnectionNumber. ConnectionNumber est une valeur entière qui identifie la connexion spécifique à une base de données. SQL Server Spatial et SQL Server 2008 prennent en charge les données spatiales de type GEOGRAPHY et GEOMETRY. CoordSys est une clause de système de coordonnées (reportez-vous à la section Clause CoordSys). version correspond à 100 (pour créer une table pouvant être lue par les versions de MapInfo Professional) ou à 300 (format MapInfo Professional 3.0) pour les tables dans un format différent d'Access. Pour les tables Access, la version est 410. commit_keyword est l'un des mots-clés suivants : NoCollision, ApplyUpdates, DiscardUpdates Exemples de clauses ConvertDateTime Commit Table DATETIME90 As "D:\MapInfo\Data\Remote\DATETIME90CPY.TAB" Type ODBC Connection 1 Table """EAZYLOADER"".""DATETIME90CPY""" ConvertDateTime Interactive Server 1 Create Table """EAZYLOADER"".""CITY_125AA""" (Field1 Char(10),Field2 Char(10),Field3 Char(10),MI_STYLE Char(254)) KeyColumn SW_MEMBER ObjectColumn SW_GEOMETRY or Server 1 Create Table "EAZYLOADER.CITY_125AA" (Field1 Char(10),Field2 Char(10),Field3 Char(10),MI_STYLE Char(254)) KeyColumn SW_MEMBER ObjectColumn SW_GEOMETRY Référence 147 Instruction Commit Table Commit Table City_125aa As "C:\Projects\Data\TestScripts\English\remote\City_125aacpy.tab" Type ODBC Connection 1 Table """EAZYLOADER"".""CITY_125AACPY""" or Commit Table City_125aa As "C:\Projects\Data\TestScripts\English\remote\City_125aacpy.tab" Type ODBC Connection 1 Table "EAZYLOADER.CITY_125AACPY" Description Si aucune clause As n'a été spécifiée, l'instruction Commit Table enregistre toutes les modifications en cours dans la table. Cela revient pour l'utilisateur à sélectionner Fichier > Enregistrer. Une instruction Commit Table qui inclut une clause As revient pour l'utilisateur à sélectionner Fichier > Enregistrer table sous. La clause As peut être utilisée pour enregistrer la table sous un autre nom, dans un répertoire ou avec un type de fichier ou une projection différents. Pour enregistrer la table sous un autre nom, spécifiez le nouveau nom dans la chaîne filespec. Pour enregistrer la table dans un nouveau répertoire, spécifiez le chemin d'accès à ce répertoire au début de la chaîne filespec. Pour enregistrer la table avec un nouveau type de fichier, incluez une clause Type dans une clause As. La clause CharSet spécifie un jeu de caractères. Le paramètre char_set doit être une constante de chaîne, telle que "WindowsLatin1". Si aucune clause CharSet n'est spécifiée, MapBasic utilise le jeu de caractères par défaut de la plate-forme matérielle sur laquelle le programme est exécuté. Reportez-vous à la section Clause CharSet pour plus d'informations. Pour enregistrer la table avec une projection ou un système de coordonnées différents, incluez une clause CoordSys dans une clause As. Notez que seule une table pouvant être cartographiée peut avoir un système de coordonnées ou une projection. Pour enregistrer une requête, utilisez le type Requête correspondant à la table. Seules les requêtes formulées à partir de l'interface utilisateur et les requêtes créées à partir d'une instruction Run Command dans MapBasic peuvent être enregistrées. L'instruction Commit Table crée un fichier .TAB et un fichier .QRY. La clause Version contrôle le format de la table. Si vous spécifiez Version 100, MapInfo Professional stocke la table dans un format lisible dans différentes versions de MapInfo Professional. Si vous spécifiez Version 300, MapInfo Professional stocke la table au format MapInfo Professional 3.0. Notez que les objets région et polyligne comprenant plus de 8 000 nœuds et les objets polyligne à plusieurs segments requièrent la version 300. Si vous omettez la clause Version, la table est enregistrée dans le format de version 300. Remarque: Si une application MapBasic émet une instruction Commit Table...As influant sur une table qui comporte des champs mémo, ces champs mémo ne seront pas conservés dans la nouvelle table. Aucun avertissement ne sera affiché. Si la table est enregistrée dans une nouvelle table à partir de l'interface utilisateur de MapInfo Professional (en sélectionnant Fichier > Enregistrer table sous), l'utilisateur est averti de la suppression des champs mémo. En revanche, lorsque la table est enregistrée sous un nouveau nom dans un programme MapBasic, aucun avertissement n'est affiché. 148 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Enregistrement de tables liées L'enregistrement d'une table liée peut générer un conflit dans le cas où un autre utilisateur aurait modifié les mêmes données dans la même table. MapInfo Professional recherche les éventuels conflits et permet à l'utilisateur de les résoudre. Les clauses suivantes vous permettent de contrôler ce qu'il se passe en cas de conflit. (Ces clauses n'ont aucun effet sur l'enregistrement d'une table MapInfo conventionnelle.) Interactive En cas de conflit, MapInfo Professional affiche la boîte de dialogue Résolution de conflit. Après l'exécution réussie d'une instruction Commit Table Interactive, MapInfo Professional affiche une boîte de dialogue qui permet à l'utilisateur de rafraîchir la table. Lorsque le paramètre Interactive est appelé pour l'instruction Commit Table As, il permet de gérer le fait qu'un utilisateur enregistre une requête comportant une ou plusieurs colonnes de type indéterminé. L'utilisation de ce paramètre entraîne l'affichage d'un message indiquant les colonnes de type indéterminé. Celui-ci invite l'utilisateur à modifier le type et/ou la largeur de ces colonnes. Lorsque le paramètre Interactive n'est pas utilisé, le système affecte, par défaut, le type Char(254) aux colonnes de type indéterminé. Exemple Émettez la requête suivante dans la boîte de dialogue Sélection SQL puis cliquez sur OK ou entrez cette requête dans la fenêtre MapBasic : Select Highway, objectinfo(obj, 20) from US_HIWAY into Selection Lorsque vous sélectionnez Fichier > Enregistrer table sous, choisissez la requête en cours, puis cliquez sur le bouton Enregistrer sous. Le message d'erreur suivant apparaît : En règle générale, cette boîte de dialogue contient la liste de toutes les colonnes de type indéterminé. Dans cet exemple de requête, il n'y en a qu'une. Cliquez sur OK pour afficher la boîte de dialogue Propriétés des champs. Référence 149 Instruction Commit Table Utilisez cette boîte de dialogue pour sélectionner le type d'informations souhaitées pour cette colonne. S'il existe plusieurs types indéterminés, vous avez la possibilité de définir chacun de ces types séparément. Si le type de certaines colonnes est déjà défini, vous ne pourrez pas modifier cette information. Cliquez sur OK pour enregistrer la requête. Automatic NoCollision En cas de conflit, MapInfo Professional n'enregistre aucune donnée. (Il s'agit du comportement par défaut si l'instruction n'inclut pas de clause Interactive ou Automatic.) Automatic ApplyUpdates En cas de conflit, MapInfo Professional enregistre les mises à jour locales. (Cela équivaut à ignorer complètement les conflits.) Automatic DiscardUpdates En cas de conflit, MapInfo Professional enregistre les mises à jour locales déjà présentes dans le RDBMS (supprime vos mises à jour locales). Vous pouvez copier une table liée à l'aide de la clause As, mais la nouvelle copie ne sera pas une table liée et aucune modification n'est répercutée au niveau du serveur. Connexion ODBC La longueur de tablename varie en fonction des bases de données. Il est recommandé d'utiliser un maximum de 14 caractères pour un nom de table pour être sûr qu'il est adapté à toutes les bases de données. L'instruction limite la longueur de la chaîne tablename à un maximum de 31 caractères. En cas d'utilisation de la clause As avec le type ODBC, une copie de la table sera enregistrée dans la base de données spécifiée par ConnectionNumber et portera le nom de tablename. Si la table source est cartographiable, trois colonnes supplémentaires (Code, Objet et Style) peuvent être ajoutées à la table de la base de données cible (tablename), que ces colonnes se trouvent ou non dans la table source. Si la table source n'est pas cartographiable, une colonne supplémentaire (Code) peut être ajoutée 150 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z à la table de la base de données cible (tablename), même si elle ne se trouve pas dans la table source. La colonne Code sera utilisée pour créer un index unique. Un index spatial sera créé sur la base de la colonne Objet, le cas échéant. Les bases de données prises en charge sont les suivantes : Oracle, SQL Server, IIS (SQL Server Spatial, Universal Server) et Microsoft Access. Cependant, pour enregistrer une table avec une colonne géométrie/objet spatiale (et une table comprenant uniquement des points), SpatialWare est requis pour SQL Server, et l'option spatiale est nécessaire pour Oracle. Le schéma XY n'est pas pris en charge dans cette instruction. Exemple Dans l'exemple ci-dessous, une table STATES est ouverte et l'instruction Commit Table en effectue une copie en l'enregistrant sous un nouveau nom (ALBERS). La clause CoordSys facultative enregistre la table ALBERS à l'aide de la projection Albers avec respect des surfaces. Open Table "STATES" Commit Table STATES As "ALBERS" CoordSys Earth Projection 9,7, "m", -96.0, 23.0, 20.0, 60.0, 0.0, 0.0 L'exemple ci-dessous illustre une connexion ODBC : dim hodbc as integer hodbc = server_connect("ODBC", "dlg=1") Open table "C:\MapInfo\USA" Commit Table USA as "c:\temp\as\USA" Type ODBC Connection hodbc Table "USA" Voir également Instruction Rollback Fonction ConnectObjects( ) Objectif Renvoie un objet qui représente la distance la plus courte ou la plus longue entre deux objets. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ConnectObjects( object1, object2, min ) object1 et object2 sont des expressions d'objet. min est une expression logique dans laquelle la valeur TRUE calcule la distance minimale entre les objets et la valeur FALSE calcule la distance maximale entre les objets. Valeur renvoyée Cette instruction renvoie une section simple, un objet polyligne à deux points qui représente la distance la plus courte (min == TRUE) ou la plus longue (min == FALSE) entre object1 et object2. Référence 151 Instruction Continue Description Un point de l'objet polyligne qui en résulte se trouve dans object1 et l'autre point dans object2. La distance entre les deux objets d'origine peut être calculée à l'aide de la fonction ObjectLen( ). Si plusieurs instances comportent la distance minimale ou maximale (par exemple, les deux points renvoyés ne sont pas les seuls à correspondre à la distance la plus courte et il existe d'autres points qui représentent des « nœuds »), ces fonctions renvoient une seule de ces instances. Il n'est pas possible de déterminer si l'objet renvoyé est le seul à correspondre à la distance la plus courte. ConnectObjects( ) renvoie un objet polyligne qui relie object1 à object2 selon la distance la plus courte (min == TRUE) ou la plus longue (min == FALSE) sur la base d'une méthode de calcul sphérique. Si le calcul ne peut pas être effectué à l'aide d'une méthode de distance sphérique (par exemple, si le système de coordonnées MapBasic est non terrestre), un calcul cartésien est utilisé. Instruction Continue Objectif Reprend l'exécution d'un programme MapBasic (suite à une Instruction Stop). Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Continue Restrictions L'instruction Continue ne peut être émise qu'à partir de la fenêtre MapBasic. Elle ne peut pas être intégrée dans un programme compilé. Description L'instruction Continue reprend l'exécution d'une application MapBasic qui avait été interrompue suite à une Instruction Stop. Vous pouvez inclure une Instruction Stop dans un programme à des fins de débogage. Lorsqu'un programme MapBasic rencontre une Instruction Stop, il est interrompu et l'option Exécuter du menu Fichier devient automatiquement une option Continuer programme. Pour reprendre l'exécution de l'application interrompue, sélectionnez Fichier > Continue Program. La saisie de l'instruction Continuedans la fenêtre MapBasic revient à sélectionner l'option Continuer programme. Clause Control Button / OKButton / CancelButton Objectif Partie d'une Instruction Dialog ajoute un bouton de commande à une boîte de dialogue. Syntaxe Control { Button | OKButton | CancelButton } [ Position x, y ] [ Width w ] [ Height h ] 152 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z [ [ [ [ ID control_ID ] Calling handler ] Title title_string ] Disable ] [ Hide ] x, y indique la position du bouton dans la boîte de dialogue. w indique la largeur du bouton dans la boîte de dialogue ; la largeur par défaut est de 40. h indique la hauteur du bouton dans la boîte de dialogue ; la hauteur par défaut est de 18. control_ID est un entier ; il ne peut pas être identique à celui d'une autre commande dans la boîte de dialogue. handler est le nom de la procédure à appeler si un utilisateur clique sur le bouton. title_string est la chaîne de texte qui apparaît sur le bouton. Description Si l'Instruction Dialog contient une clause Control Button un bouton de commande est inclus dans la boîte de dialogue. Si le mot-clé OKButton apparaît à la place du mot-clé Button, la commande est un type spécial de bouton. L'utilisateur choisit une commande OKButton pour cliquer sur OK et fermer la boîte de dialogue. De la même façon, l'utilisateur choisit une commande CancelButton pour cliquer sur Annuler et fermer la boîte de dialogue. Chaque boîte de dialogue ne doit pas comporter plus d'une commande OKButton et CancelButton. Disable désactive initialement la commande (grisée). Hide cache initialement la commande. Utilisez l'Instruction Alter Control pour modifier le statut de la commande (par exemple, si la commande est activée ou cachée). Exemple Control Button Title "&Reset" Calling reset_sub Position 10, 190 Voir également Instruction Alter Control, Instruction Dialog Clause Control CheckBox Objectif Partie d'une instruction Dialog ; elle ajoute une commande de type case à cocher à une boîte de dialogue. Syntaxe Control CheckBox [ Position x, y ] [ Width w ] [ ID control_ID ] [ Calling handler ] [ Title title_string ] Référence 153 Clause Control DocumentWindow [ Value log_value ] [ Into log_variable ] [ Disable ] [ Hide ] x, y indique la position de la commande dans la boîte de dialogue. w indique la largeur de la commande dans la boîte de dialogue. control_ID est un entier ; il ne peut pas être identique à celui d'une autre commande dans la boîte de dialogue. handler est le nom de la procédure à appeler si un utilisateur coche la case. title_string est la chaîne de texte qui apparaît dans l'étiquette à droite de la case à cocher. log_value est une valeur logique : FALSE configure la case pour qu'elle apparaisse initialement non cochée. log_variable est le nom d'une variable logique. Description Si une instruction Dialog contient une clause Control CheckBox, une commande de type case à cocher est incluse dans la boîte de dialogue. La clause Value contrôle l'apparence initiale. Si la clause Value est omise ou indique une valeur TRUE, la case est cochée initialement. Si la clause Value indique une valeur FALSE, la case est vide initialement. Disable désactive initialement la commande (grisée). Hide cache initialement la commande. Exemple Control CheckBox Title "Include &Legend" Into showlegend ID 6 Position 115, 155 Voir également Instruction Alter Control, Instruction Dialog, Fonction ReadControlValue( ) Clause Control DocumentWindow Objectif Partie d'une instruction Dialog ; elle ajoute une commande de type fenêtre de document à la boîte de dialogue, dont la relation parent peut être modifiée pour la cartographie intégrée. Syntaxe Control DocumentWindow [ Position x, y ] [ Width w ] [ Height h ] [ ID control_ID ] [ Disable ] [ Hide ] x, y indique la position de la commande dans la boîte de dialogue. 154 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z w indique la largeur de la commande dans la boîte de dialogue ; la largeur par défaut est de 100. h indique la hauteur de la commande dans la boîte de dialogue ; la hauteur par défaut est de 100. control_ID est un entier ; il ne peut pas être identique à celui d'une autre commande dans la boîte de dialogue. Disable grise initialement la commande. Hide cache initialement la commande. Description Si l'instruction Dialog contient une clause Control DocumentWindow une commande de type fenêtre de document est incluse dans la boîte de dialogue. Elle peut être affectée à un autre parent via l'instruction Set Next Document. Exemple L'exemple suivant dessine une légende dans une boîte de dialogue : Control DocumentWindow ID ID_LEGENDWINDOW Position 160, 20 Width 120 Height 150 Le gestionnaire de la boîte de dialogue devra affecter un autre parent à la fenêtre, comme dans l'exemple suivant : Sub DialogHandler OnError Goto HandleError Dim iHwnd As Integer Alter Control ID_LEGENDWINDOW Enable Show ' draw the legend iHwnd = ReadControlValue(ID_LEGENDWINDOW) Set Next Document Parent iHwnd Style WIN_STYLE_CHILD Create Legend Exit Sub HandleError: Note "DialogHandler: " + Error$( ) End Sub Voir également Instruction Dialog Clause Control EditText Objectif Partie d'une Instruction Dialog ; elle ajoute une commande de zone EditText (saisie de texte) à une boîte de dialogue. Syntaxe Control EditText [ Position x, y ] [ Width w ] [ Height h ] [ ID control_ID ] Référence 155 Clause Control EditText [ Value initial_value ] [ Into variable ] [ Disable ] [ Hide ] [ Password ] x, y indique la position de la commande dans la boîte de dialogue. w indique la largeur de la commande dans la boîte de dialogue. h indique la hauteur de la commande dans la boîte de dialogue ; si la hauteur est supérieure à 20, le texte de la commande comporte plusieurs lignes. control_ID est un entier ; il ne peut pas être identique à celui d'une autre commande dans la boîte de dialogue. initial_value est une chaîne ou une expression numérique qui apparaît initialement dans la boîte de dialogue. variable est le nom d'une variable de chaîne ou une variable numérique. MapInfo Professional stocke les valeurs finales du champ dans la variable si l'utilisateur clique sur OK. Le mot-clé Disable désactive initialement la commande (grisée). Le mot-clé Hide cache initialement la commande. Le mot-clé Password crée un champ de mot de passe qui affiche des astérisques à mesure que l'utilisateur saisit des caractères. Description Si l'utilisateur entre plus de texte que ne peut en contenir la zone en une fois, MapInfo Professional fait automatiquement défiler le texte pour gagner de la place. Une commande EditText peut contenir jusqu'à 32 767 caractères. Si la hauteur est assez grande pour contenir deux ou plusieurs lignes de texte (par exemple, si la hauteur est supérieure à 20), MapInfo Professional ajoute automatiquement les lignes nécessaires à mesure que l'utilisateur saisit le texte. Si l'utilisateur entre un saut de ligne dans la zone EditText (par exemple, sur Windows, si l'utilisateur appuie sur Ctrl+Enter quand il se trouve dans la zone EditText), la chaîne associée à la commande EditText contiendra une valeur Chr$(10) à l'emplacement de chaque saut de ligne. Si l'expression initial_value contient des valeurs intégrées Chr$(10), le texte apparaît au format indiqué quand la boîte de dialogue s'affiche. Pour activer la commande EditText, utilisez l'Instruction Alter Control...Active. Exemple Control EditText Value "Franchise Locations" Position 65, 8 Width 90 ID 1 Into s_map_title Voir également Instruction Alter Control, Instruction Dialog, Fonction ReadControlValue( ) 156 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Clause Control GroupBox Objectif Partie d'une Instruction Dialog ; elle ajoute un rectangle avec une étiquette à une boîte de dialogue. Syntaxe Control GroupBox [ Position x, y ] [ Width w ] [ Height h ] [ ID control_ID ] [ Title title_string ] [ Hide ] x, y indique la position de la commande dans la boîte de dialogue. w indique la largeur de la commande dans la boîte de dialogue. h indique la hauteur de la commande dans la boîte de dialogue. control_ID est un entier ; il ne peut pas être identique à celui d'une autre commande dans la boîte de dialogue. title_string est une chaîne de texte qui apparaît dans le coin supérieur gauche de la boîte de dialogue. Le mot-clé Hide cache initialement la commande. Exemple Control GroupBox Title "Level of Detail" Position 5, 30 Height 40 Width 70 Voir également Instruction Alter Control, Instruction Dialog Clause Control ListBox / MultiListBox Objectif Partie d'une Instruction Dialog ; elle ajoute une liste à une boîte de dialogue. Syntaxe Control { ListBox | MultiListBox } [ Position x, y ] [ Width w ] [ Height h ] [ ID control_ID ] [ Calling handler ] [ Title { str_expr | From Variable str_array_var } ] [ Value i_selected ] [ Into i_variable ] [ Disable ] [ Hide ] x, y indique la position de la commande dans la boîte de dialogue. Référence 157 Clause Control ListBox / MultiListBox w indique la largeur de la commande dans la boîte de dialogue ; la largeur par défaut est de 80. h indique la hauteur de la commande dans la boîte de dialogue ; la hauteur par défaut est de 70. control_ID est un entier ; il ne peut pas être identique à celui d'une autre commande dans la boîte de dialogue. handler est le nom de la procédure à appeler si un utilisateur clique ou double-clique sur la liste. str_expr est une expression de chaîne qui contient la liste des éléments qui apparaîtront dans la commande, délimités par des points-virgules. str_array_var est le nom d'un tableau comportant des variables de type chaîne. i_selected est une valeur d'entier court indiquant quelle liste d'élément doit être sélectionnée quand la boîte de dialogue apparaît pour la première fois. Une valeur de 1 sélectionne le premier élément de la liste. Si la clause est omise, aucun élément n'est sélectionné initialement. i_variable est le nom d'une valeur d'entier court qui stocke la sélection finale de l'utilisateur. Le mot-clé Disable désactive initialement la commande (grisée). Le mot-clé Hide cache initialement la commande. Description Si l'Instruction Dialog contient une clause Control ListBox, une commande de type liste est incluse dans la boîte de dialogue. Si la liste contient plus d'éléments que la commande ne peut en afficher en une fois, MapBasic ajoute automatiquement une barre de défilement sur le côté droit de la commande. Une commande MultiListBox est identique à une commande ListBox, sauf que l'utilisateur peut combiner la touche Maj et le bouton de la souris pour sélectionner plusieurs éléments. La clause Title indique le contenu de la liste. Si la clause Title indique une expression de chaîne qui contient une liste d'éléments délimités par des points-virgules. Chacun apparaît comme un élément distinct dans la liste. L'exemple suivant de clause Title utilise cette syntaxe : Title "1st Quarter;2nd Quarter;3rd Quarter;4th Quarter" Sinon, si la clause Title indique un tableau contenant des variables de chaîne, chaque entrée du tableau apparaît comme un élément de la liste. L'exemple suivant de clause Title utilise cette syntaxe : Title From Variable s_optionlist Traitement d'une commande MultiListBox Pour lire les éléments que l'utilisateur a sélectionnés dans une commande MultiListBox, attribuez une procédure de gestionnaire qui sera appelée lors de la fermeture de la boîte de dialogue (par exemple, attribuez un gestionnaire à la commande OKButton). Dans la procédure de gestionnaire, paramétrez une boucle pour appeler la Fonction ReadControlValue( ) de façon répétitive Le premier appel de la Fonction ReadControlValue( ) renvoie le chiffre du premier élément sélectionné ; le deuxième appel de la Fonction ReadControlValue( ) renvoie le chiffre du deuxième élément sélectionné ; etc. Lorsque la Fonction ReadControlValue( ) renvoie le chiffre zéro, il n'a plus d'éléments à sélectionner dans la liste. Si le premier appel de la Fonction ReadControlValue( ) renvoie le chiffre zéro, cela signifie qu'aucun élément de la liste n'a été sélectionné. 158 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Traitement des doubles-clics Si vous attribuez une procédure de gestionnaire à une commande de liste, MapBasic appelle la procédure chaque fois qu'un utilisateur clique ou double-clique sur un élément de la liste. Dans certains cas, vous souhaiterez traiter de façon spécifique les événements consécutifs à un double-clic. Par exemple, lorsque l'utilisateur double-clique un élément de la liste, vous voudrez peut-être fermer la boîte de dialogue comme si l'utilisateur avait cliqué sur un élément de la liste puis sur OK. Pour visualiser un exemple, reportez-vous à l'application exemple NVIEWS.MB dans <votre répertoire d'installation MapBasic >\SAMPLES\MAPBASIC\SNIPPETS. Pour déterminer si l'utilisateur a cliqué ou double-cliqué, appelez la Fonction CommandInfo( ) dans la procédure de gestionnaire de la commande de liste, comme indiqué dans l'exemple suivant : Sub lb_handler Dim i As SmallInt If CommandInfo(CMD_INFO_DLG_DBL) Then ' ... then the user double-clicked. i = ReadControlValue( TriggerControl( ) ) Dialog Remove ' at this point, the variable i represents ' the selected list item... End If End Sub Exemple Control ListBox Title "1st Quarter;2nd Quarter;3rd Quarter;4th Quarter" ID 3 Value 1 Into i_quarter Position 10, 92 Height 40 Le programme exemple NVIEWS.MB explique comment créer une boîte de dialogue qui déclenche un traitement spécifique après un double-clic. Ce programme affiche une boîte de dialogue avec une commande ListBox. Pour fermer la boîte de dialogue, l'utilisateur peut cliquer sur un élément de la liste puis sur OK, ou il peut double-cliquer sur un élément de la liste. La clause Control ListBox suivante ajoute une liste à la boîte de dialogue Vues nommées. La commande ListBox dispose d'une routine de gestionnaire, « listbox_handler ». Control ListBox Title desc_list ID 1 Position 10, 20 Width 245 Height Calling listbox_handler 64 Si l'utilisateur clique ou double-clique sur la commande ListBox, MapBasic appelle la sous-procédure listbox_handler. Celle-ci appelle la Fonction CommandInfo( ) pour déterminer si l'utilisateur a cliqué ou double-cliqué. Si l'utilisateur a double-cliqué, la procédure lance l'Instruction Dialog Remove pour fermer la boîte de dialogue. Si elle ne lance pas l'Instruction Dialog Remove, la boîte de dialogue restera à l'écran jusqu'à ce que l'utilisateur clique sur OK ou Cancel. Sub listbox_handler Dim i As SmallInt ' First, since user clicked on the name of a view, ' we can enable the OK button and the Delete button. Alter Control 2 Enable Référence 159 Clause Control PenPicker/BrushPicker/SymbolPicker/FontPicker Alter Control 3 Enable If CommandInfo(CMD_INFO_DLG_DBL) = TRUE Then ' ...then the user DOUBLE-clicked. ' see which list item the user clicked on. i = ReadControlValue(1) ' read user's choice. Dialog Remove Call go_to_view(i) ' act on user's choice. End If End Sub MapBasic appelle la procédure de gestionnaire si l'utilisateur clique ou double-clique. Celle-ci doit vérifier si l'événement est un clic ou un double-clic. Voir également Instruction Alter Control, Instruction Dialog, Fonction ReadControlValue( ), Fonction CommandInfo( ) Clause Control PenPicker/BrushPicker/SymbolPicker/FontPicker Objectif Partie d'une instruction Dialog ; elle ajoute un bouton représentant un crayon (ligne), un pinceau (trame), un symbole (point), ou un caractère (texte). Syntaxe Control { PenPicker | BrushPicker | SymbolPicker | FontPicker } [ Position x, y ] [ Width w ] [ Height h ] [ ID control_ID ] [ Calling handler ] [ Value style_expr ] [ Into style_var ] [ Disable ] [ Hide ] x, y indique la position de la commande dans la boîte de dialogue. w indique la largeur de la commande dans la boîte de dialogue ; la largeur par défaut est de 20. h indique la hauteur de la commande dans la boîte de dialogue ; la hauteur par défaut est de 20. control_ID est un entier ; il ne peut pas être identique à celui d'une autre commande dans la boîte de dialogue. handler est le nom de la procédure de gestionnaire. Si l'utilisateur clique sur une commande de sélection puis sur OK dans la boîte de dialogue de style qui s'affiche, MapBasic appelle la procédure de gestionnaire (handler). style_expr est une expression Pen, Brush, Symbol ou Font qui indique quel style devra apparaître initialement dans la commande. Le type d'expression doit correspondre au type de commande (par exemple, si la commande est PenPicker, l'expression doit être Pen). style_var est le nom de variable Pen, Brush, Symbol ou Font. Le type de variable doit correspondre au type de commande (par exemple, si la commande est PenPicker, la variable doit être Pen). Le mot-clé Disable désactive initialement la commande (grisée). Le mot-clé Hide cache initialement la commande. 160 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description Une commande Picker (PenPicker, BrushPicker, SymbolPicker ou FontPicker) est un bouton qui représente un crayon, un pinceau, un symbole ou un caractère. Si l'utilisateur clique sur le bouton, une boîte de dialogue s'affiche et permet à l'utilisateur de changer de style. Exemple Control SymbolPicker Position 140,42 Into sym_storemarker Voir également Instruction Alter Control, Instruction Dialog, Fonction ReadControlValue( ) Fonction ControlPointInfo( ) Objectif Cette fonction renvoie les coordonnées de point de calage raster et géographique pour une table image. Les coordonnées géographiques seront dans le système de coordonnées de MapBasic. Syntaxe ControlPointInfo( table_id, attribute, controlpoint_num ) table_id est une chaîne qui représente un nom de table, un numéro de table entier positif ou 0 (zéro). La table doit être une table raster, grille ou WMS. attribute est un code entier qui indique l'aspect du point de calage à renvoyer. controlpoint_num est le nombre entier correspondant au numéro du point de calage à renvoyer. Les numéros de points de calage commencent à 1. Le nombre maximal de points de calage peut être trouvé en appelant une procédure. RasterTableInfo(table_id, RASTER_TAB_INFO_NUM_CONTROL_POINTS) Valeur renvoyée Les coordonnées raster X et Y sont renvoyées sous la forme de nombres entiers. Les coordonnées géographiques X et Y sont renvoyées sous la forme des nombres à virgule flottante. Cela dépend de l'indicateur d'attribut, pour le point de calage indiqué par la valeur num_pt_ctrl. Le paramètre attribute peut être n'importe quelle valeur qui figure dans le tableau ci-dessous. Les codes dans la colonne de gauche (par exemple, RASTER_CONTROL_POINT_X) sont définis dans MAPBASIC.DEF. Code attribute ID Valeur renvoyée par la fonction ControlPointInfo() RASTER_CONTROL_POINT_X 1 Résultat entier qui représente la coordonnée X du numéro de point de calage indiqué par num_pt_ctrl RASTER_CONTROL_POINT_Y 2 Résultat entier qui représente la coordonnée Y du numéro de point de calage indiqué par num_pt_ctrl Référence 161 Clause Control PopupMenu Code attribute ID Valeur renvoyée par la fonction ControlPointInfo() GEO_CONTROL_POINT_X 3 Résultat à virgule flottante qui représente la coordonnée X du numéro de point de calage indiqué par num_pt_ctrl GEO_CONTROL_POINT_Y 4 Résultat à virgule flottante qui représente la coordonnée Y du numéro de point de calage indiqué par num_pt_ctrl TAB_GEO_CONTROL_POINT_X 5 Résultat à virgule flottante qui représente la coordonnée X du numéro de point de calage indiqué par controlpoint_num stocké dans le fichier TAB d'image raster TAB_GEO_CONTROL_POINT_Y 6 Résultat à virgule flottante qui représente la coordonnée Y du numéro de point de calage indiqué par controlpoint_num stocké dans le fichier TAB d'image raster Clause Control PopupMenu Objectif Partie d'une Instruction Dialog ; elle ajoute une commande de menu contextuel à une boîte de dialogue. Syntaxe Control PopupMenu [ Position x, y ] [ Width w ] [ ID control_ID ] [ Calling handler ] [ Title { str_expr | From Variable str_array_var } ] [ Value i_selected ] [ Into i_variable ] [ Disable ] x, y indique la position de la commande dans la boîte de dialogue. w indique la largeur de la commande dans la boîte de dialogue ; la largeur par défaut est de 80. control_ID est un entier ; il ne peut pas être identique à celui d'une autre commande dans la boîte de dialogue. handler est le nom de la procédure à appeler lorsque l'utilisateur choisit un élément du menu. str_expr est une expression de chaîne qui contient la liste des éléments qui apparaîtront dans la commande, délimités par des points-virgules. str_array_var est le nom d'un tableau comportant des variables de type chaîne. i_selected est une valeur d'entier court indiquant quel élément doit être sélectionné par défaut quand la boîte de dialogue apparaît. Une valeur de un sélectionne le premier élément de la liste ; si la clause est omise, le premier élément de la liste est sélectionné. i_variable est le nom d'une valeur d'entier court qui stocke la sélection finale de l'utilisateur (un, si le premier élément est sélectionné, etc.). 162 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Le mot-clé Disable désactive initialement la commande (grisée). Description Si l'Instruction Dialog contient une clause Control PopupMenu une commande de menu contextuel est incluse dans la boîte de dialogue. Un menu contextuel est une liste d'éléments, sélectionnables individuellement. Initialement, seul l'élément sélectionné apparaît dans la boîte de dialogue. Si l'utilisateur clique sur la commande, le menu entier s'affiche et l'utilisateur peut choisir un autre élément. La clause Title indique la liste des éléments figurant dans le menu. Si la clause Title indique une expression de chaîne qui contient une liste d'éléments délimités par des points-virgules. Chacun apparaît comme un élément distinct dans le menu. L'exemple suivant de clause Title utilise cette syntaxe : Title "Town;County;Territory;Region;Entire state" Autrement, si la clause Title indique un tableau contenant des variables chaîne, chaque entrée du tableau apparaît comme un élément du menu contextuel. L'exemple suivant de clause Title utilise cette syntaxe : Title From Variable s_optionlist Exemple Control PopupMenu Title "Town;County;Territory;Region;Entire state" Value 2 ID 5 Into i_map_scope Position 10, 150 Voir également Instruction Alter Control, Instruction Dialog, Fonction ReadControlValue( ) Clause Control RadioGroup Objectif Partie d'une Instruction Dialog ; elle ajoute une liste de boutons radio dans la boîte de dialogue. Syntaxe Control RadioGroup [ Position x, y ] [ ID control_ID ] [ Calling handler ] [ Title { str_expr | From Variable str_array_var } ] [ Value i_selected ] [ Into i_variable ] [ Disable ] [ Hide ] x, y indique la position de la commande dans la boîte de dialogue. control_ID est un entier ; il ne peut pas être identique à celui d'une autre commande dans la boîte de dialogue. Référence 163 Clause Control StaticText handler est le nom de la procédure à appeler si un utilisateur clique ou double-clique sur un des boutons radio. str_expr est une expression de chaîne qui contient la liste des éléments qui apparaîtront dans la commande, délimités par des points-virgules. str_array_var est le nom d'un tableau comportant des variables de type chaîne. i_selected est une valeur d'entier court indiquant quel élément doit être sélectionné par défaut quand la boîte de dialogue apparaît. Une valeur de un sélectionne le premier élément de la liste ; si la clause est omise, le premier élément de la liste est sélectionné. i_variable est le nom d'une valeur d'entier court qui stocke la sélection finale de l'utilisateur (un, si le premier élément est sélectionné, etc.). Le mot-clé Disable désactive initialement la commande (grisée). Le mot-clé Hide cache initialement la commande. Description Si l'Instruction Dialog contient une clause Control RadioGroup, un groupe de boutons radio est inclus dans la boîte de dialogue. Chaque bouton radio est une étiquette à droite d'un cercle vide ou rempli. L'élément sélectionné est indiqué par un cercle rempli. Un seul bouton radio peut être sélectionné à la fois. La clause Title indique la liste d'étiquettes qui apparaît dans le menu. Si la clause Title indique une expression de chaîne qui contient une liste d'éléments délimités par des points-virgules. Chacun apparaît comme un élément distinct dans la liste. L'exemple suivant de clause Title utilise cette syntaxe : Title "&Full Details;&Partial Details" Autrement, si la clause Title indique un tableau contenant des variables chaîne, chaque entrée du tableau apparaît comme un élément de liste. L'exemple suivant de clause Title utilise cette syntaxe : Title From Variable s_optionlist Exemple Control RadioGroup Title "&Full Details;&Partial Details" Value 2 ID 2 Into i_details Calling rg_handler Position 15, 42 Voir également Instruction Alter Control, Instruction Dialog, Fonction ReadControlValue( ) Clause Control StaticText Objectif Partie d'une Instruction Dialog ; elle ajoute une étiquette à une boîte de dialogue. 164 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Syntaxe Control StaticText [ Position x, y ] [ Width w ] [ Height h ] [ ID control_ID ] [ Title title_string ] [ Hide ] x, y indique la position de la commande dans la boîte de dialogue. w indique la largeur de la commande dans la boîte de dialogue. w indique la hauteur de la commande dans la boîte de dialogue. control_ID est un entier ; il ne peut pas être identique à celui d'une autre commande dans la boîte de dialogue. title_string est une chaîne de texte qui apparaît dans la boîte de dialogue en tant qu'étiquette. Le mot-clé Hide cache initialement la commande. Description Si vous voulez que la chaîne de texte se déroule sur plusieurs lignes, intégrez les clauses optionnelles Width et Height. Si vous omettez les clauses Width et Height, la commande de texte statique ne s'affiche que sur une ligne du texte. Exemple Control StaticText Title "Enter map title:" Position 5, 10 Voir également Instruction Alter Control, Instruction Dialog Fonction ConvertToPline( ) Objectif Renvoie un objet polyligne qui se rapproche de la forme d'un autre objet. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ConvertToPline( object ) object est l'objet à convertir. Il ne peut pas s'agir d'objets point ou texte. Valeur renvoyée Objet polyligne Référence 165 Fonction ConvertToRegion( ) Description La fonction ConvertToPline( ) renvoie un objet polyligne qui se rapproche du paramètre d'objet. Ainsi, si le paramètre d'objet représente un objet polygone, la fonction ConvertToPline( ) renvoie une polyligne de même forme et disposant du même nombre de nœuds que le polygone. Les résultats de la fonction ConvertToPline( ) sont semblables à ceux obtenus en sélectionnant la commande Objets > Convertir en polygone de MapInfo Professional. Cependant, la fonction ConvertToPline( ) n'altère pas l'objet original. Voir également Instruction Objects Enclose Fonction ConvertToRegion( ) Objectif Renvoie un objet polygone qui se rapproche de la forme d'un autre objet. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ConvertToRegion( object ) object est l'objet à convertir. Il ne peut pas s'agir d'objets point, ligne ou texte. Valeur renvoyée Objet polygone Description Conserve la plupart des attributs de style. Les autres attributs sont déterminés par les styles Pen ou Brush sélectionnés. Le dernier nœud des polylignes dont le premier nœud et le dernier nœud sont identiques n'est pas copié. Sinon, MapInfo Professional ajoute un dernier nœud dont les sommets sont identiques au premier nœud. La fonction ConvertToRegion( ) renvoie un objet polygone qui se rapproche du paramètre d'objet. Par conséquent, si le paramètre d'objet représente un rectangle, la fonction ConvertToRegion( ) renvoie une région qui ressemble à un rectangle. Les résultats de la fonction ConvertToRegion( ) sont semblables à ceux obtenus en sélectionnant la commande Objets > Convertir en polygone de MapInfo Professional. Cependant, la fonction ConvertToRegion( ) n'altère pas l'objet original. Voir également Instruction Objects Enclose 166 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction ConvexHull( ) Objectif Renvoie un polygone enveloppant le contour d'un ensemble de points. L'enveloppe créée est convexe, c'est à dire qu'elle ne contient pas d'inflexion concave, tout comme un ruban élastique entourant au plus serré un ensemble de points. Les points utilisés pour constituer une enveloppe convexe peuvent être des nœuds issus d'une région, d'une polyligne ou des points. Le polygone crée sera convexe, c'est à dire qu'il n'y aura pas d'angle intérieur supérieur à 180 degrés. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ConvexHull( inputobject ) inputobject est une expression d'objet. Valeur renvoyée Objet polygone Description La fonction ConvexHull( ) renvoie une région représentant l'enveloppe convexe de l'ensemble de points intégrant l'objet d'entrée. La fonction ConvexHull( ) agit sur un seul objet à la fois. Pour créer une enveloppe convexe autour d'un ensemble d'objets, utilisez l'instruction Create Object As ConvexHull. Exemple L'exemple de programmation suivant sélectionne New York dans le fichier States, puis crée une enveloppe convexe autour de la sélection. Dim Resulting_object as object select * from States where State_Name = "New York" Resulting_object = ConvexHull(selection.obj) Insert Into States(obj) Values (Resulting_object) Voir également Instruction Create Object Clause CoordSys Objectif Définit un système de coordonnées. Vous pouvez utiliser cette clause dans la fenêtre MapBasic dans MapInfo Professional (voir CoordSys Earth and NonEarth Projection, CoordSys Layout Units, CoordSys Table et CoordSys Window). Référence 167 Clause CoordSys CoordSys projection Earth et NonEarth Syntaxe 1 (Projection Earth) CoordSys Earth [ Projection type, datum, unitname [ , origin_longitude ] [ , origin_latitude ] [ , standard_parallel_1 [ , standard_parallel_2 ] ] [ , azimuth ] [ , scale_factor ] [ , false_easting ] [ , false_northing ] [ , range ] ] [ Affine Units unitname, A, B, C, D, E, F ] [ Bounds ( minx, miny ) ( maxx, maxy ) ] Syntaxe 2 (Projection NonEarth) CoordSys Nonearth [ Affine Units unitname, A, B, C, D, E, F ] Units unitname [ Bounds ( minx, miny ) ( maxx, maxy ) ] type est une valeur entière positive représentant le système de coordonnées à utiliser. datum est une valeur entière positive identifiant le datum à référencer. unitname est une chaîne représentant une unité de mesure de distance (m pour mètres, par exemple). Pour obtenir une liste des noms d'unités, reportez-vous à la section Instruction Set Distance Units. origin_longitude est une valeur de longitude à virgule flottante, en degrés. origin_latitude est une valeur de latitude à virgule flottante, en degrés. standard_parallel_1 et standard_parallel_2 sont des valeurs de latitude à virgule flottante, en degrés. azimuth est une mesure d'angle à virgule flottante, en degrés. scale_factor est un facteur d'échelle à virgule flottante. range est une valeur à virgule flottante comprise entre 1 et 180, qui indique la plage terrestre affichée. minx est une valeur à virgule flottante définissant la valeur x minimale. miny est une valeur à virgule flottante définissant la valeur y minimale. maxx est une valeur à virgule flottante définissant la valeur x maximale. maxy est une valeur à virgule flottante définissant la valeur y maximale. A procède à la mise à l'échelle ou à l'étirement le long de l'axe des X. B procède à la rotation ou à l'inclinaison le long de l'axe des X. C procède au déplacement le long de l'axe des X. D procède à la mise à l'échelle ou à l'étirement le long de l'axe des Y. E procède à la rotation ou à l'inclinaison le long de l'axe des Y. F procède au déplacement le long de l'axe des Y. 168 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description La clause CoordSys définit un système de coordonnées, voire même une projection de carte à utiliser en association avec le système de coordonnées. Notez que CoordSys est une clause, pas une instruction MapBasic complète. Différentes instructions peuvent inclure la clause CoordSys clause. Par exemple, une instruction Set Map peut comporter une clause CoordSys, auquel cas l'instruction Set Map réinitialise la projection utilisée par la fenêtre Carte correspondante. Utilisez CoordSys Earth (syntaxe 1) pour définir de manière explicite le système de coordonnées d'une carte terrestre (une carte dont les coordonnées sont définies par rapport à un emplacement sur la surface de la Terre). Les paramètres Projection facultatifs identifient la projection de carte à utiliser en association avec le système de coordonnées (le cas échéant). Si la clause Projection est omise, MapBasic utilise le datum 0. La clause Affine décrit la transformation affine permettant de créer le système de coordonnées dérivées. Si la clause Projection est omise, le système de coordonnées de base est Longitude/Latitude. Les coordonnées dérivées pouvant utiliser des unités différentes de celles des coordonnées de base, vous devez définir les unités des coordonnées dérivées dans la clause Affine. Utilisez CoordSys Nonearth (syntaxe 2) pour définir de manière explicite un système de coordonnées non terrestres, tel qu'un système de coordonnées utilisé pour un plan au sol ou autre dessin de CAO. Si la clause CoordSys définit des coordonnées non terrestres, le système de coordonnées de base est une grille cartésienne arbitraire. La clause Units définit les unités des coordonnées de base et la clause Affine les unités des coordonnées dérivées. Quand une clause CoordSys apparaît comme partie d'une instruction Set Map ou d'une instruction Set Digitizer, la sous-clause Bounds est ignorée. La sous-clause Bounds est requise pour les cartes non terrestres lorsque la clause CoordSys apparaît dans une autre instruction, uniquement pour les cartes non terrestres. La clause Bounds définit les limites de la carte ; il n'est pas possible de créer des objets au-delà des limites définies. Lors de la sélection d'un système de coordonnées terrestres, vous pouvez omettre la clause Bounds, auquel cas MapInfo Professional utilise des limites par défaut qui englobent l'ensemble de la Terre. Remarque: Dans une instruction Create Map, vous pouvez augmenter la précision des coordonnées de la carte en sélectionnant des limites plus restreintes. Chaque projection de carte est définie sous la forme d'une équation. Étant donné que ces équations de projection disposent d'ensembles de paramètres différents, plusieurs clauses CoordSys peuvent inclure un nombre variable de paramètres dans la clause Projection facultative. Par exemple, la formule d'une projection Robinson utilise les paramètres datum, unitname et origin_latitude, tandis que la formule d'une projection transverse de Mercator utilise les paramètres datum, unitname, origin_longitude, origin_latitude, scale_factor, false_easting et false_northing. Pour plus d'informations sur les projections et les systèmes de coordonnées, reportez-vous à la documentation de MapInfo Professional. Chaque application MapBasic dispose de son propre paramètre CoordSys, qui définit le système de coordonnées utilisé par l'application. Si une application MapBasic émet une instruction Set CoordSys, les autres applications MapBasic utilisées ne sont pas affectées. Référence 169 Clause CoordSys Exemples L'instruction Set Map contrôle les paramètres d'une fenêtre Carte existante. L'instruction Set Map demande à MapInfo Professional d'afficher la fenêtre Carte à l'aide de la projection Robinson : Set Map CoordSys Earth Projection 12, 12, "m", 0. Le premier 12 spécifie la projection Robinson, le deuxième 12 spécifie le datum Sphère, la lettre « m » indique que le système de coordonnées est en mètres et le dernier zéro indique que l'origine de la carte doit être située à une longitude de zéro degré. L'instruction suivante demande à MapInfo Professional d'afficher la fenêtre Carte sans aucune projection. Set Map CoordSys Earth L'exemple suivant ouvre la table World, puis utilise une instruction Commit Table pour enregistrer une copie de cette table sous le nom WorldR. La nouvelle table est enregistrée avec la projection Robinson. Open Table "world" As World Table world As "RWORLD.TAB" CoordSys Earth Projection 12, 12, "m", 0. L'exemple suivant définit un système de coordonnées appelé DCS, dérivé du système de coordonnées UTM Zone 10 utilisant la transformation affine. x1 = 1.57x - 0.21y + 84120.5 y1 = 0.19x + 2.81y - 20318.0 Dans cette transformation, (x1, y1) représente les coordonnées dérivées DCS et (x, y) les coordonnées de base UTM Zone 10. Si les coordonnées DCS sont mesurées en pieds, la clause CoordSys du système DCS est la suivante : CoordSys Earth Projection 8, 74, "m", -123, 0, 0.9996, 500000, 0 Affine Units "ft", 1.57, -0.21, 84120.5, 0.19, 2.81, -20318.0 CoordSys Layout Units Syntaxe CoordSys Layout Units paperunitname paperunitname est une chaîne représentant une unité de mesure de papier (in pour pouces, par exemple). Pour obtenir une liste des noms d'unités, reportez-vous à la section Instruction Set Paper Units. Description Utilisez CoordSys Layout pour définir un système de coordonnées qui représente une fenêtre Mise en page de MapInfo Professional. Le programme MapBasic doit émettre une instruction Set CoordSys Layout avant de rechercher, créer ou manipuler de quelque manière que ce soit des objets de mise en page. Le paramètre nom_unité est le nom d'une unité papier, tel que « in » pour pouces ou « cm » pour centimètres. 170 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exemples L'instruction Set CoordSys attribue un système de coordonnées, utilisant les pouces comme unité de mesure, à une fenêtre Mise en page : Set CoordSys Layout Units "in" Table CoordSys Syntaxe CoordSys Table tablename tablename est le nom d'une table ouverte. Description Utilisez CoordSys Table pour faire référence au système de coordonnées dans lequel une table a été enregistrée. CoordSys Window Syntaxe CoordSys Window window_id window_id est un identifiant de fenêtre entier correspondant à une fenêtre Carte ou Mise en page. Description Utilisez CoordSys Window pour faire référence au système de coordonnées déjà utilisé dans une fenêtre. Exemples L'exemple suivant définit la projection d'une fenêtre Carte en fonction de la projection d'une autre fenêtre Carte. Cet exemple part du principe que les identifiants des deux fenêtres Carte sont déjà inclus dans deux variables entières (first_map_id et second_map_id). Set Map Window second_map_winid CoordSys Window first_map_winid Voir également Instruction Commit Table, Instruction Set CoordSys, Instruction Set Map Fonction CoordSysName$( ) Objectif Renvoie une chaîne correspondant au nom du système de coordonnées à partir de la clause du système de coordonnées de MapBasic. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Référence 171 Fonction CoordSysStringToEPSG( ) Syntaxe CoordSysName$ ( string ) Valeur renvoyée Chaîne Exemple Note CoordSysName$("Coordsys Earth Projection 1, 62") Renvoie cette chaîne dans la boîte de dialogue MapInfo : Longitude / Latitude (NAD 27 for Continental US) Remarque: Si le nom d'un système de coordonnées n'est pas présent dans le fichier MapInfow.prj, lorsque la carte utilise un système non terrestre en pieds américains (Survey), par exemple, la fonction renvoie une chaîne vide. Note CoordSysName$("CoordSys NonEarth Units " + """survey ft""" + "Bounds (0, 0) (10, 10)") En cas de transmission d'une clause CoordSys non valide (utilisant des unités non valides), telle que celle-ci : Note CoordSysName$("CoordSys Earth Projection 3, 74, " + """foo""" + "-90, 42, 42.7333333333, 44.0666666667, 1968500, 0") Une erreur indiquant un système de coordonnées non valide doit alors être renvoyée (erreur n°727). Invalid Coordinate System: CoordSys Earth Projection <content> Fonction CoordSysStringToEPSG( ) Objectif Convertit une clause de système de coordonnées MapBasic en valeur entière EPSG utilisable avec n'importe quelle fonction ou instruction MapBasic. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CoordSysStringToEPSG ( coordsys_string ) coordsys_string est une clause CoordSys MapBasic. La valeur EPSG (European Petroleum Survey Group) est un entier. Par exemple, la clause CoordSys « Earth Projection 1, 104 » renvoie le code EPSG 4326. Pour obtenir une liste complète des codes EPSG utilisés avec MapInfo Professional, reportez-vous au fichier MAPINFOW.PRJ de votre installation MapInfo Professional. Les codes EPSG sont identifiés par un « \p » suivi d'un nombre. Valeur renvoyée Entier. Si aucune valeur EPSG n'est trouvée, -1 est renvoyé. 172 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description La fonction CoordSysStringToWKT$() convertit une Clause CoordSys MapBasic en valeur de chaîne WKT. Exemple L'exemple suivant affiche le code EPSG correspondant au système de coordonnées pour une projection terrestre 1, 104. print CoordSysStringToEPSG("Earth Projection 1, 104")) Voir également Clause CoordSys Fonction CoordSysStringToPRJ$( ) Objectif Convertit une clause de système de coordonnées MapBasic en chaîne PRJ. Le format de chaîne PRJ sert à décrire les systèmes de coordonnées MapInfo dans le fichier mapinfow.prj. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CoordSysStringToPRJ$( coordsys_string ) coordsys_string est une clause CoordSys MapBasic. La chaîne PRJ est une autre définition du système de coordonnées utilisé dans le fichier mapinfow.prj. Par exemple, la clause CoordSys « Earth Projection 1, 104 » renvoie la chaîne PRJ « 1,104 ». Valeur renvoyée chaîne Description La fonction CoordSysStringToEPSG( ) convertit une Clause CoordSys MapBasic en valeur EPSG entière. Exemple L'exemple suivant affiche la chaîne PRJ correspondant au système de coordonnées pour une projection terrestre 1, 104. print CoordSysStringToPRJ$("Earth Projection 1, 104") Voir également Clause CoordSys Référence 173 Fonction CoordSysStringToWKT$( ) Fonction CoordSysStringToWKT$( ) Objectif Convertit une clause CoordSys en valeur de chaîne WKT (Well-Known Text). Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CoordSysStringToWKT$( coordsys_string ) coordsys_string est une clause CoordSys. Valeur renvoyée Chaîne WKT. Si aucune chaîne WKT n'est trouvée, une chaîne vide est renvoyée. Exemple L'exemple suivant : Print coordsysstringtowkt$("CoordSys Earth Projection 8, 74, " + """m""" + ", -123, 0, 0.9996, 500000, 0 Affine Units " + """ft""" + ", 1.57, -0.21, 84120.5, 0.19, 2.81, -20318.0") produit la chaîne WKTsuivante : PROJCS["_MI_0",GEOGCS[ ,DATUM["North_American_Datum_1983",SPHEROID["Geodet ic Reference System of 1980",6378137,298.2572221009113],AUTHORITY["EPSG","6269"]],PRIMEM["Greenw ich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Transverse_Mercato r"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",123],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],P ARAMETER["false_northing",0],UNIT["METER",1]] Voir également Clause CoordSys Fonction Cos( ) Objectif Renvoie le cosinus d'un nombre. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Cos( num_expr ) num_expr est une expression numérique, qui représente un angle exprimé en radians. 174 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Valeur renvoyée Nombre à virgule flottante Description La fonction Cos( ) renvoie le cosinus de la valeur numérique num_expr value, qui représente un angle exprimé en radians. Le résultat renvoyé par Cos( ) est compris entre un (1) et moins un (-1). Pour convertir une valeur exprimée en degrés en radians, multipliez cette valeur par DEG_2_RAD. Pour convertir une valeur exprimée en radians en degrés, multipliez cette valeur par RAD_2_DEG. Remarque: Votre programme doit inclure le fichier MAPBASIC.DEF pour référencer DEG_2_RAD ou RAD_2_DEG. Exemple Include "MAPBASIC.DEF" Dim x, y As Float x = 60 * DEG_2_RAD y = Cos(x) ' y will now be equal to 0.5 ' since the cosine of 60 degrees is 0.5 Voir également Fonction Acos( ), Fonction Asin( ), Fonction Atn( ), Fonction Sin( ), Fonction Tan( ) Instruction Create Adornment Objectif Crée et affiche des habillages, tels qu'une barre d'échelle, sur une fenêtre Carte. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Adornment From Window map_window_id Type adornment_type [ Position { [ Fixed [ ( x, y ) [ Units paper_units ] ] ] | [ win_position [ Offset (x, y) ] [Units paper_units ] ] } ] [ Layout Fixed Position { Frame | Geographic } ] [ Size [ Width win_width ] [ Height win_height ] [ Units paper_units ] ] [ Background [ Brush ... ] [ Pen ... ] ] [ < SCALEBAR CLAUSE > ] Où SCALEBAR CLAUSE représente : [ [ [ [ [ BarType type ] Ground Units distance_units ] Display Units paper_units ] BarLength paper_length ] BarHeight paper_height ] Référence 175 Instruction Create Adornment [ BarStyle [ Pen .... ] [ Brush ... ] [ Font ... ] ] [ Scale [ { On | Off } ] ] [ Auto [ { On | Off } ] ] adornment_type peut avoir pour valeur scalebar. La valeur (x, y) dans la clause Fixed représente la position mesurée du coin supérieur gauche de la fenêtre Carte, soit (0, 0). Grâce à cette version du positionnement de l'habillage, l'habillage occupera cette position dans la fenêtre Carte au fur et à mesure que celle-ci sera redimensionnée. Par exemple, une position de (3, 3) pouces serait située vers le coin inférieur droit d'une petite fenêtre Carte, mais au milieu d'une grande fenêtre Carte. Lorsque la taille de cette fenêtre change, l'habillage tente de rester entièrement dans la fenêtre Carte affichée. Par défaut, paper_units adopte l'unité papier de MapBasic. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. win_position spécifie l'un des codes suivants, définis dans le fichier MAPBASIC.DEF. ADORNMENT_INFO_MAP_POS_TL ADORNMENT_INFO_MAP_POS_TC ADORNMENT_INFO_MAP_POS_TR ADORNMENT_INFO_MAP_POS_CL ADORNMENT_INFO_MAP_POS_CC ADORNMENT_INFO_MAP_POS_CR ADORNMENT_INFO_MAP_POS_BL ADORNMENT_INFO_MAP_POS_BC ADORNMENT_INFO_MAP_POS_BR (0) (1) (2) (3) (4) (5) (6) (7) (8) La valeur (x, y) dans la clauseOffsetest mesurée à partir de la position d'ancrage. Par exemple, si la position win_position est ADORNMENT_INFO_MAP_POS_TL (en haut à gauche), le x se trouve à droite et le y, en bas. Si la position win_position est ADORNMENT_INFO_MAP_POS_BR, le x est situé à gauche et le y, en haut. Au centre gauche (ADORNMENT_INFO_MAP_POS_CL) et au centre droit (ADORNMENT_INFO_MAP_POS_CR), le décalage du y est ignoré. En position centrée (ADORNMENT_INFO_MAP_POS_CC), le décalage est complètement ignoré (x et y). Au centre en haut (ADORNMENT_INFO_MAP_POS_TC) et au centre en bas (ADORNMENT_INFO_MAP_POS_BC), le décalage du x est ignoré. Pour savoir comment définir ADORNMENT_INFO_MAP_POS_, reportez-vous à win_position. win_width et win_height définissent la taille de l'habillage. MapInfo Professional ignore ces paramètres s'il s'agit d'un habillage de barre d'échelle, car la taille de l'habillage de barre d'échelle est déterminée par certains éléments de la barre d'échelle, comme BarLength. type spécifie l'un des codes suivants (définis dans le fichier MAPBASIC.DEF). SCALEBAR_INFO_BARTYPE_CHECKEDBAR SCALEBAR_INFO_BARTYPE_SOLIDBAR SCALEBAR_INFO_BARTYPE_LINEBAR SCALEBAR_INFO_BARTYPE_TICKBAR (0) (1) (2) (3) 0 Barre de vérification, 1 Barre pleine, 2 Barre de ligne ou 3 Barre à repères distance_units correspond à l'unité de mesure dans laquelle la barre d'échelle sera affichée : 176 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Valeur de distance Unité représentée « ch » chains « cm » centimètres « ft » pieds (également appelée pieds internationaux, 1 pied international étant égal à exactement 30,48 cm) « in » pouces « km » kilomètres « li » links «m» mètres « mi » miles « mm » millimètres « nmi » miles nautiques (1 mile nautique représente 1 852 mètres) « rd » rods « survey ft » pieds américains (unité utilisée pour les coordonnées « State Plane 1927 » ; un pied américain équivaut exactement à 12/39,37 mètres, soit approximativement 30,48006 cm) « yd » yards paper_length représente une valeur de paper_units permettant de spécifier la longueur d'affichage de la barre d'échelle. Indiquez la longueur de la barre d'échelle (jusqu'à 34 pouces ou 86,3 cm sur la carte). paper_height représente une valeur de paper_units permettant de spécifier la hauteur d'affichage de la barre d'échelle. Définissez la hauteur de l'habillage (jusqu'à 44 pouces ou 111,76 cm) sur la carte. Description La barre d'échelle apparaît sous forme de barre paper_length en unités paper_units. Le paramètre Position peut avoir pour valeur Fixed par rapport au coin supérieur gauche de la fenêtre Carte (quelle que soit la taille de cette dernière), ou par rapport à un point d'ancrage de la fenêtre Carte spécifié par win_position. Offset correspond à la valeur dont l'habillage sera décalé de la fenêtre Carte lorsque l'une des positions win_position ancrées est utilisée. Layout Fixed Position détermine la façon dont un habillage est positionné dans une mise en page lorsqu'il utilise une position fixe. Si cette valeur est définie sur Geographic, l'habillage est placé au même endroit géographique sur le cadre de carte de la mise en page que dans la fenêtre Carte. Si la taille du cadre de la mise en page change, l'habillage se déplace par rapport au cadre pour correspondre à la position géographique. Si elle est définie sur Frame, l'habillage reste à une position fixe par rapport au cadre, conformément à la clause Position. Si la clause Position place l'habillage à (1,0, 1,0) pouces, l'habillage est situé à 1 pouce sur la gauche et à un pouce vers le bas du coin supérieur gauche du Référence 177 Instruction Create Adornment cadre. Modifier la taille du cadre n'entraîne pas la modification de la position de l'habillage. La valeur par défaut est Geographic. Offset correspond à la valeur dont l'habillage sera décalé de la fenêtre Carte lorsque l'une des positions win_positions ancrées est utilisée. La clause Background lorsqu'elle est utilisée avec Brush indique la trame de remplissage à utiliser en arrière-plan pendant la création ou modification d'une barre d'échelle. Lorsqu'elle est utilisée avec la clause Pen, elle indique la bordure à utiliser en arrière-plan pendant la création ou modification d'une barre d'échelle. Brush représente une Brush clause valide. Seuls les styles Brush pleins sont autorisés. Si d'autres valeurs que les valeurs pleines peuvent être entrées sans générer d'erreur, le type doit toujours être plein. Cette clause sert uniquement à fournir la couleur de fond de l'habillage. Pen représente une Pen clause valide. En raison des pochoirs (l'habillage est une fenêtre au sein de la fenêtre Carte), les largeurs de crayon (Pen) autres que 1 risquent de ne pas s'afficher correctement. Les styles Pen autres que pleins risquent également de ne pas s'afficher correctement. Cette clause permet d'activer (plein) ou de désactiver (vide) et de définir la couleur de la bordure de l'habillage. Font représente une Font clause valide. Si la clause Auto est activée (On), les valeurs qui ont été arrondies automatiquement s'affichent dans la barre d'échelle. Si la clause est désactivée (Off), les valeurs ne sont pas arrondies et s'affichent comme dans les versions antérieures. La valeur par défaut est Auto Off, si elle n'est pas déjà spécifiée. Le paramètre Scale doit être activé (On) pour inclure une fraction représentative avec la barre d'échelle. (Dans MapInfo Professional, une échelle qui n'inclut pas les unités de distance, comme 1:63 360 ou 1:1 000 000, est appelée échelle cartographique.) Exemple Si la valeur paper_length est 1 et la valeur paper_unit , des pouces, la barre d'échelle apparaît sous la forme 1 pouce. Elle est étiquetée dans l'unité distance_unit pour la quantité actuelle de paper_unit et se met à jour de manière dynamique au fil des modifications de la carte (zoom et panoramique, par exemple). La valeur distance_unit par défaut représente l'unité de distance actuelle dans la fenêtre Carte. La valeur paper_height détermine la hauteur d'affichage de la barre d'échelle. Les styles Pen et Brush définissent le style du dessin de la barre d'échelle et Font, le style du texte des étiquettes et des annotations de la barre d'échelle. Le paramètre Scale fait apparaître une échelle cartographique. L'exemple suivant affiche les paramètres par défaut : create adornment from window 261763624 type scalebar position 6 offset (0.000000, 0.000000) units "in" background Brush (2,16777215,16777215) Pen (1,2,0) bartype 0 ground units "mi" display units "in" barlength 1.574803 barheight 0.078740 barstyle Pen (1,2,0) Brush (2,0,16777215) Font ("Arial",0,8,0) scale on Voir également Instruction Set Adornment 178 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Instruction Create Arc Objectif Crée un objet arc. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Arc [ Into { Window window_id | Variable var_name } ] ( x1, y1 ) ( x2, y2 ) start_angle end_angle [ Pen... ] window_id est un identifiant de fenêtre. var_name est le nom d'une variable objet. x1, y1 définit un coin du rectangle intérieur d'encadrement d'une ellipse. L'arc sera une section de cette ellipse. x2, y2 définit le coin opposé du rectangle. start_angle définit l'angle de départ de l'arc, en degrés. end_angle définit l'angle de fin de l'arc, en degrés. La clause Pen définit un style de ligne. Description L'instruction Create Arc crée un objet arc. Si l'instruction inclut la clause Into Variable facultative, l'objet est stocké dans la variable objet indiquée. Si la clause Into définit un identifiant de fenêtre, l'objet est stocké à l'emplacement correspondant de la fenêtre (la couche modifiable d'une fenêtre Carte, par exemple). Si la clause Into n'est pas définie, MapBasic tente de stocker l'objet dans la fenêtre au premier plan. S'il n'est pas possible de stocker des objets dans la fenêtre au premier plan (s'il s'agit d'une fenêtre Graphique, par exemple), aucun objet n'est créé. Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic. Par défaut, MapBasic utilise un système de coordonnées Longitude/latitude. L'instruction Set CoordSys peut cependant reconfigurer MapBasic de manière à ce qu'il utilise un autre système de coordonnées. Notez que le système de coordonnées de MapBasic ne dépend pas des systèmes de coordonnées des fenêtres Carte. Les objets créés au niveau d'une fenêtre Mise en page sont néanmoins définis en unités papier. chaque coordonnée x représente une distance à partir du bord gauche de la page tandis que chaque coordonnée y représente une distance à partir du bord supérieur de la page. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Par défaut, MapBasic utilise les pouces comme unité papier. L'instruction Set Paper Units permet de sélectionner une autre unité papier. Avant de créer des objets au niveau d'une fenêtre Mise en page, vous devez émettre une instruction Set CoordSys Layout. Référence 179 Instruction Create ButtonPad La clause facultative Pen définit un style de ligne. Si elle est omise, l'instruction Create Arc utilise le style de ligne actuellement défini dans MapInfo Professional (le style qui apparaît dans la boîte de dialogue Options > Style ligne). Voir également Instruction Insert, Clause Pen, Instruction Update, Instruction Set CoordSys Instruction Create ButtonPad Objectif Crée un ButtonPad (barre d'outils). Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create ButtonPad { title_string | ID pad_num } As button_definition [ button_definition ... ] [ Title title_string ] [ Width width ] [ Position ( x, y ) [ Units unit_name ] ] [ ToolbarPosition ( row, column ) ] [ { Show | Hide } ] [ { Fixed | Float | Top | Left | Right | Bottom } ] title_string est le titre du ButtonPad (« Dessin », par exemple). pad_num est le numéro d'identification de la barre d'outils standard que vous souhaitez redéfinir : • • • • • • • 1 pour la barre d'outils Général 2 pour la barre d'outils Dessin 3 pour la barre d'outils Outils 4 pour la barre d'outils Standard 5 pour la barre d'outils Système de gestion de base de données (DBMS) 6 pour les services Web 7 Réservé width correspond à la largeur de la barre en termes de boutons inclus. x, y spécifient la position de la barre lorsqu'elle est flottante, exprimée en unités papier. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. unit_name est une chaîne représentant le nom des unités papier (par exemple, « in » pour pouces, « cm » pour centimètres). row et column définissent la position de la barre lorsqu'elle est ancrée en tant que barre d'outils (par exemple, les coordonnées 0, 0 placent la barre sur le côté gauche de la ligne supérieure des barres d'outils et les coordonnées 0, 1 représentent la deuxième barre de la ligne supérieure). • La position row démarre au niveau supérieur et sa valeur augmente au fur et à mesure qu'elle descend vers le niveau inférieur. Il s'agit d'une valeur relative aux lignes qui se trouvent à cette position (supérieure ou inférieure). Lorsqu'une barre de menus se trouve à la même position, les nombres deviennent alors relatifs à cette barre. Si une barre d'outils est située juste en dessous de la barre de 180 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z menus, sa valeur row est 0. Si elle est située directement au-dessus de la barre de menus, sa valeur row est -1. • La position column démarre à gauche et sa valeur augmente au fur et à mesure qu'elle se déplace vers la droite. Il s'agit d'une valeur relative aux colonnes qui se trouvent à cette position (à gauche ou à droite). Par exemple, si une barre d'outils est ancrée à gauche et que la barre de menus est ancrée sur la position gauche, le numéro de la colonne à gauche de la barre de menus est -1. Le numéro de la colonne à droite de la barre de menus est 0. Chaque clause button_definition peut être composée du mot-clé Separator ou disposer de la syntaxe suivante : { PushButton | ToggleButton | ToolButton } Calling { procedure | menu_code | OLE methodname | DDE server, topic } [ ID button_id ] [ Icon icon_code [ File file_spec ] ] [ Cursor cursor_code [ File file_spec ] ] [ DrawMode dm_code ] [ HelpMsg msg ] [ ModifierKeys { On | Off } ] [ { Enable | Disable } ] [ { Check | Uncheck } ] procedure correspond à la procédure de gestionnaire qui doit être appelée lors de l'utilisation d'un bouton. menu_codeest un code de menu standard de MapInfo Professional, issu du fichier MENU.DEF (M_FILE_OPEN, par exemple). MapInfo Professional exécute la commande de menu lorsque l'utilisateur clique sur le bouton. methodname est une chaîne définissant un nom de méthode OLE. server, topic sont des chaînes définissant un serveur DDE et un nom de rubrique. ID button_id indique un numéro de bouton unique. Ce numéro peut être employé comme paramètre permettant au gestionnaire d'identifier le bouton utilisé (dans les cas où un même gestionnaire peut être appelé par différents boutons) ou comme paramètre utilisé en association avec l'instruction Alter Button. Icon icon_code spécifie l'icône devant s'afficher sur le bouton icon_code peut correspondre à l'un des codes d'icône MapInfo standard répertoriés dans ICONS.DEF, (MI_ICON_RULER (11), par exemple). Si la sous-clause File spécifie le nom d'un fichier qui contient des ressources d'icône, icon_code est un identifiant de ressource entier indiquant une ressource dans le fichier. Il est possible de définir la taille des boutons avec un identifiant de fichier de ressources de icon_code pour les boutons de petite taille et icon_code+1 pour les boutons de grande taille (avec des identifiants de fichier de ressources de icon_code et icon_code+1 respectivement). Cursor cursor_code spécifie la forme du pointeur de la souris lorsque l'utilisateur se sert de l'outil ToolButton. cursor_codeest un code (MI_CURSOR_ARROW (0), par exemple) provenant d'ICONS.DEF. Cette clause s'applique uniquement aux boutons d'outils. Si la sous-clause File définit le nom d'un fichier contenant des ressources de type icône, cursor_code est un identifiant entier correspondant à une ressource du fichier. DrawMode dm_code indique si l'utilisateur peut cliquer et faire glisser ou uniquement cliquer avec l'outil. dm_code est un code issu du fichier ICONS.DEF (DM_CUSTOM_LINE, par exemple). La clause DrawMode s'applique uniquement aux boutons d'outils. Référence 181 Instruction Create ButtonPad HelpMsg msg définit le message d'aide de la barre d'état et, éventuellement, celui de l'info-bulle. La première partie de la chaîne msg correspond au message d'aide de la barre d'état. Si la chaîne msg inclut les caractères \n, le texte qui suit apparaîtra comme message d'aide dans l'info-bulle. La clause ModifierKeys détermine si les touches Maj et Ctrl affectent le tracé élastique lorsque l'utilisateur fait glisser la souris tout en utilisant un bouton d'outil. La valeur par défaut Off indique que les touches Maj et Ctrl n'affectent pas le dessin. Description L'instruction Create ButtonPad permet de créer un ButtonPad personnalisé. Une fois créé, vous pouvez le modifier à l'aide des instructions Alter Button et instructions Alter ButtonPad. Il est possible de masquer toutes les barres d'outils. Pour créer une barre d'outils masquée, ajoutez le mot-clé Hide. Pour indiquer si la barre est fixée en haut de l'écran (« ancrage ») ou est flottante comme une fenêtre, incluez respectivement le mot-clé Fixed ou le mot-clé Float. L'utilisateur peut également indiquer si la barre peut être ancrée ou non en la faisant glisser vers le sommet de l'écran ou à partir de celui-ci. Pour un plus grand contrôle de l'endroit de l'écran où la barre est ancrée, servez-vous des mots-clés Top (équivalent de Fixed), Left, Right ou Bottom. Lorsque la barre d'outils est flottante, sa position est contrôlée par la clause Position. Lorsqu'elle est ancrée, sa position est contrôlée par la clause ToolbarPosition. Pour plus d'informations sur ces boutons, reportez-vous au Guide de l'utilisateur MapBasic. Pour plus d'informations sur les fonctions des boutons d'outils, reportez-vous à la section Instruction Alter ButtonPad À propos de la taille des icônes Dans les versions antérieures à MapInfo Professional 10.0, les icônes personnalisées étaient rectangulaires : les petites mesuraient 18x16 et les grandes, 26x24. Les fonctionnalités de barre d'outils et de menu introduites dans MapInfo Professional 10.0 exigent des icônes carrées : 16x16 pour les petites et 24x24 pour les grandes. Dans MapInfo Professional 10.0 et les versions ultérieures, les icônes personnalisées apparaissent sous leur forme carrée et sont donc déformées. Pour corriger cette déformation, MapInfo Professional fait disparaître les première et dernière colonnes de pixels, ce qui revient à recadrer l'image. Il risque donc de manquer certaines informations sur l'image de l'icône obtenue. Pour de meilleurs résultats, créez vos icônes en 16x16 (petites icônes) et en 24x24 (grandes icônes). Les icônes de ces dimensions ne sont pas compatibles avec les versions antérieures à la version 10.0.1 et génèrent un message d'erreur. Pour des raisons de compatibilité avec les versions antérieures à la version 10.0.1, utilisez la dimension 18x16 pour les petites icônes et 26x24 pour les grandes. Ces icônes sont déformées dans la version 10.0 et recadrées dans les versions ultérieures. À propos des icônes des options de menu Cette section décrit la façon dont MapInfo Professional 10.0 gère les icônes des options de menu : • Les icônes des options de menu sont dynamiques et dépendent de celles des barres d'outils. • Si un bouton d'une barre d'outils a une icône, vous pouvez l'utiliser pour une option de menu si elle remplit l'une de ces conditions : 182 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z • Le bouton de la barre d'outils et l'option de menu doivent se trouver dans le même fichier MBX. • Même combinaison gestionnaire/ID utilisateur ; toute option de menu qui appelle cette combinaison depuis le fichier MBX est associée à cette icône. • Même ID utilisateur appelant des gestionnaires différents. • Même gestionnaire, pas d'ID utilisateur. • L'ID doit être <= 32767. • Pour les gestionnaires intégrés, il s'agit de rechercher en priorité une icône d'une barre d'outils intégrée. Si aucune icône n'est trouvée, la recherche s'étend alors aux icônes de barre d'outils des fichiers MBX pour trouver une correspondance. • Les petites icônes apparaissent en regard des options de menu. • Lorsqu'un fichier MBX est fermé, toutes les icônes associées le sont également et ne peuvent plus être utilisées pour les options de menu. Cette section décrit la façon dont MapInfo Professional 10.0.1 et les versions ultérieures gèrent les icônes des options de menu : • Il n'existe pas d'icône pour l'option de menu Table > Zones d'accessibilité car il n'y a pas de bouton de barre d'outils correspondant. L'option de menu Objets > Zones d'accessibilité possède une icône et un bouton de barre d'outils. • Les autres options de menu peuvent désormais afficher une icône si une application MapBasic crée un bouton de barre d'outils et une option de menu remplissant les conditions précédemment répertoriées pour les icônes d'options de menu. Options de la clause Calling La clause Calling définit les opérations à déclencher lorsque l'utilisateur clique sur le bouton personnalisé. Le tableau suivant détaille la syntaxe disponible. Exemple de clause Calling Description Calling M_FILE_NEW Si la mention Calling est suivie d'un code numérique issu du fichier MENU.DEF, MapInfo Professional gère l'événement en exécutant une commande de menu MapInfo Professional ( Fichier > Nouveau dans cet exemple). Calling my_procedure Si vous définissez un nom de procédure, l'événement appelle celle-ci. La procédure doit appartenir au même programme MapBasic. Calling OLE "methodname" Effectue un appel de méthode en direction de l'objet OLE Automation défini par la méthode SetCallback de MapInfo Professional. Reportez-vous à l' Guide de l'utilisateur MapBasic. Calling DDE "server","topic" Se connecte à « server »,« topic » via DDE et envoie un message d'exécution au serveur DDE. Dans les deux derniers cas, la chaîne envoyée au serveur OLE ou DDE commence par « MI: », de manière à ce que le serveur puisse détecter que le message provient de MapInfo Professional. Le reste Référence 183 Instruction Create ButtonPad As Default de la chaîne contient une liste de valeurs séparées par des virgules et renvoyées par les appels de fonction CommandInfo(1) à CommandInfo(8). Pour des détails complets sur la syntaxe de la chaîne, reportez-vous au Guide de l'utilisateur MapBasic. Exemples Créez une barre de boutons d'utilitaires : Create ButtonPad "Utils" As PushButton HelpMsg "Choose this button to display query dialog" Calling button_sub_proc Icon MI_ICON_ZOOM_QUESTION ToolButton HelpMsg "Use this tool to draw a new route" Calling tool_sub_proc Icon MI_ICON_CROSSHAIR DrawMode DM_CUSTOM_LINE ToggleButton HelpMsg "Turn proximity checking on/off" Calling toggle_prox_check Icon MI_ICON_RULER Check Title "Utilities" Width 3 Show Créez un bouton de barre d'outils qui lance la boîte de dialogue Préférences de la fenêtre Données qui a un menu command ID de 222 : Create ButtonPad "Prefs" As PushButton HelpMsg "Browser Preferences.\nBrowser Prefs" Calling 222 Icon 99 Voir également Instruction Alter Button, Instruction Alter ButtonPad, Fonction ButtonPadInfo( ) Instruction Create ButtonPad As Default Objectif Rétablit l'état par défaut d'un ButtonPad standard (par exemple, Général). Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create ButtonPad { title_string | ID pad_num } As Default title_string représente le titre du ButtonPad (par exemple, Général, Standard ou Outils personnalisés). pad_num est le numéro d'identification du ButtonPad (barre d'outils) standard que vous souhaitez redéfinir : • 1 pour la barre d'outils Général 184 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z • • • • • • 2 pour la barre d'outils Dessin 3 pour la barre d'outils Outils 4 pour la barre d'outils Standard 5 pour la barre d'outils Système de gestion de base de données (DBMS) 6 pour les services Web 7 Réservé Les ButtonPads personnalisés utilisent uniquement la chaîne title_string. Description Cette instruction rétablit l'état par défaut des ButtonPads standard (Général, Dessin et Outils) de MapInfo Professional. Les ButtonPads personnalisés sont détruits. Voir également Instruction Alter Button,Instruction Alter ButtonPad, Instruction Create ButtonPad, Instruction Create ButtonPads As Default Instruction Create ButtonPads As Default Objectif Rétablit l'état par défaut des ButtonPads standard (le ButtonPad Général, par exemple). Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create ButtonPads As Default Description Cette instruction rétablit l'état par défaut des ButtonPads standard (Général, Dessin et Outils) de MapInfo Professional. Les ButtonPads personnalisés sont détruits. Utilisez cette instruction avec prudence. L'instruction Create ButtonPads As Default annule tous les boutons personnalisés, même ceux définis par d'autres applications MapBasic. Voir également Instruction Alter Button,Instruction Alter ButtonPad, Instruction Create ButtonPad, Instruction Create ButtonPad As Default Instruction Create Cartographic Legend Objectif Crée et affiche les légendes de style cartographique, ainsi que les légendes thématiques d'une fenêtre Carte active. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Référence 185 Instruction Create Cartographic Legend Syntaxe Create Cartographic Legend [ From Window map_window_id ] [ Behind ] [ Position ( x, y ) [ Units paper_units ] ] [ Width win_width [ Units paper_units ] ] [ Height win_height [ Units paper_units ] ] [ Window Title { legend_window_title } [ ScrollBars { On | Off } ] [ Portrait | Landscape | Custom ] [ Style Size { Small | Large } [ Default Frame Title { def_frame_title } [ Font... ] } ] [ Default Frame Subtitle { def_frame_subtitle } [ Font... ] } ] [ Default Frame Style { def_frame_style } [ Font... ] } ] [ Default Frame Border Pen [ [ pen_expr ] Frame From Layer { map_layer_id | map_layer_name [ Using [ Column { column | Object } [ FromMapCatalog { On | Off }]] [ Label { expression | Default } ] [ Position ( x, y ) [ Units paper_units ] ] [ Title { frame_title [ Font... ] } [ SubTitle { frame_subtitle [ Font... ] } ] [ Border Pen pen_expr ] [ Style [ Font...] [ Norefresh ] [ Text { style_name } { Line Pen... | Region Pen... Brush...| Symbol Symbol... } | Collection [ Symbol ... ] [ Line Pen... ] [ Region Pen... Brush ...] } ] [ , ... ] map_window_id est un identifiant de fenêtre entier que vous pouvez obtenir en appelant la fonction FrontWindow( ) et la fonction WindowID( ). x indique la distance souhaitée entre la partie supérieure du document et celle de la fenêtre. y indique la distance souhaitée entre la partie gauche du document et celle de la fenêtre. Remarque: Le document désigne ici l'espace client (la barre de titre, la barre d'outils et la barre d'état sont donc exclues). paper_units est une chaîne qui représente le nom d'une unité papier (par exemple, « cm » pour centimètres). win_width est la largeur de fenêtre souhaitée. win_height est la hauteur de fenêtre souhaitée. legend_window_title est une expression de type chaîne représentant le titre de la fenêtre. La valeur par défaut est « Légende de xxx » où xxx correspond au titre de la fenêtre Carte. def_frame_title est une chaîne qui définit un titre de cadre par défaut. Elle peut inclure le caractère spécial « # » qui sera remplacé par le nom de la couche active. def_frame_subtitle est une chaîne qui définit un sous-titre de cadre par défaut. Elle peut inclure le caractère spécial « # » qui sera remplacé par le nom de la couche active. def_frame_style est une chaîne qui s'affiche en regard des symboles dans chaque cadre. Le caractère « # » sera remplacé par le nom de la couche. Le caractère « % » sera remplacé par le texte « Ligne », 186 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z « Point » ou « Région », selon le symbole. Par exemple, « % of # » "deviendra "Region of States" pour la couche STATES.TAB. pen_expr est une expression Pen, MakePen( width, pattern, color ) par exemple. Si une bordure par défaut est définie, elle devient alors la valeur par défaut du cadre. S'il existe une clause de bordure au niveau du cadre, elle est utilisée à la place de la valeur par défaut. map_layer_id ou map_layer_name identifie une couche de la carte. Il peut s'agir d'un entier court ; par exemple, utilisez 1 pour indiquer la couche de carte supérieure (autre que la couche Dessin) ou une chaîne représentant le nom d'une table affichée sur la carte. Pour une couche thématique, vous devez spécifier l'expression map_layer_id. frame_title est une chaîne qui définit un titre de cadre. Si une clause Title est définie ici pour un cadre, elle sera utilisée à la place de l'expression def_frame_title. frame_subtitle est une chaîne qui définit un sous-titre de cadre. Si une clause Subtitle est définie ici pour un cadre, elle sera utilisée à la place de l'expression def_frame_subtitle. column est le nom d'une colonne d'attributs de la table de couches du cadre. style_name est une chaîne qui s'affiche près de chaque symbole, ligne ou région dans un cadre personnalisé. Description L'instruction Create Cartographic Legend vous permet de créer et d'afficher les légendes de style cartographique, ainsi que les légendes thématiques associées à une fenêtre Carte active. Chaque légende de style cartographique ou thématique n'est associée qu'à une seule fenêtre Carte. Il est donc possible que plusieurs fenêtres Légende soient ouvertes à la fois. Vous pouvez créer un cadre pour chaque couche de carte cartographique ou thématique que vous souhaitez inclure à la légende. Les cadres cartographiques et thématiques incluent un titre et un sous-titre de légende. Les cadres cartographiques affichent les styles d'une couche de carte. Les cadres de légende affichent les couleurs, les symboles et les tailles représentés par le thème. Vous pouvez créer des cadres dont les styles sont basés sur le style de la fenêtre Carte. Vous pouvez également créer des cadres personnalisés. Au moins une clause Frame est requise. Toutes les clauses en rapport avec la légende complète (barres de défilement, largeur, etc.) doivent traiter la première clause Frame. La clause From Layer doit être la première clause après la clause Frame. La clause Behind facultative place la légende derrière la fenêtre Analyse thématique. La clause Position facultative détermine la position de la fenêtre au niveau du document MapInfo Professional. La position du coin supérieur gauche du document MapInfo Professional est 0, 0. Les clauses Width et Height facultatives contrôlent la taille de la fenêtre. Les valeurs de taille et de position de la fenêtre utilisent les paramètres des unités papier, tels que « in » pour pouces ou « cm » pour centimètres. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Le paramètre d'unités papier actuelles de MapBasic est défini par défaut en pouces. Un programme MapBasic peut modifier ce paramètre au moyen de l'instruction Set Paper Units. Une instruction Create Cartographic Legend peut remplacer les unités papier en cours en intégrant la sous-clause Units facultative dans les clauses Position, Width et/ou Height. Référence 187 Instruction Create Cartographic Legend Utilisez la clause ScrollBars pour afficher ou masquer les barres de défilement dans une fenêtre Carte. Portrait et Landscape indiquent l'orientation des cadres de légende dans la fenêtre. Portrait permet d'obtenir une orientation verticale. Landscape permet d'obtenir une orientation horizontale. Indiquez la mention Custom pour personnaliser la clause Position d'un cadre. La clause Position au niveau d'un cadre définit la position du cadre si la mention Custom apparaît. La coordonnée X permet d'effectuer des mesures en partant de la gauche de la fenêtre Légende, tandis que la coordonnée Y permet d'effectuer des mesures en partant du bas de la fenêtre Légende (le point d'origine (0,0) se trouve donc en bas à gauche de la fenêtre Légende). La clause Style Size facultative détermine la taille des exemples qui apparaissent dans les fenêtres Légende. Si vous indiquez Style Size Small, des exemples de petite taille apparaîtront dans les fenêtres Légende. Si vous indiquez Style Size Large, vous obtiendrez des exemples de grande taille. Les clauses Position, Title, SubTitle, Border Pen et Style, utilisées au niveau du cadre, concernent uniquement les couches de carte. Elles ne sont pas utilisées pour les couches thématiques. Dans le cadre des couches thématiques, ces informations sont obtenues automatiquement à partir du thème. La clause Font indique un style de texte. Si la police par défaut d'un nom de style, d'un sous-titre ou d'un titre de cadre est définie, elle devient la police par défaut du cadre. Si une clause Title, Subtitle ou Style existe au niveau du cadre et inclut une clause Font, la police définie au niveau du cadre est utilisée. Si aucune police n'est définie à aucun niveau, le style de texte actuel est utilisé et les tailles en points pour le titre, le sous-titre et le nom du style sont respectivement 10, 9 et 8. La clause Style et le mot-clé NoRefresh vous permettent de créer des cadres personnalisés qui ne sont pas remplacés lors de l'actualisation de la légende. Si le mot-clé NoRefresh est utilisé dans la clause Style, les styles de la table ne sont pas analysés. Dans ce cas, la clause Style doit contenir votre liste de définitions personnalisée pour les styles qui figurent dans le cadre. Pour ce faire, utilisez la clause Text et la clause Line, Region ou Symbol appropriée. Les objets multipoint sont considérés comme des objets point. Les objets collection sont traités séparément. Lorsque MapInfo Professional crée une légende basée sur des types d'objets, il commence par tracer les symboles point, puis les lignes et les régions. Les objets collection sont dessinés en dernier. Dans les objets collection, l'ordre du tracé est le suivant : point, ligne et région. La mention column est le nom d'une colonne d'attributs de la table de couche du cadre. Object fait référence à la colonne d'objets (cela signifie que les styles de légende sont basés sur les styles uniques du fichier de carte). La valeur par défaut est Object. FromMapCatalog ON récupère les styles de MapCatalog pour une table en accès direct. Si la table n'est pas en accès direct, MapBasic revient au comportement par défaut d'une table sans accès direct plutôt que de générer une erreur. Le comportement par défaut d'une table sans accès direct est FromMapCatalog Off (styles de la carte, par exemple). FromMapCatalog OFF récupère les styles uniques d'une carte pour la table en accès direct du serveur. Pour que cela fonctionne, il doit s'agir d'une table en accès direct qui prend en charge les styles par enregistrement. Si la table en accès direct ne prend pas en charge les styles par enregistrement, le système revient au comportement par défaut des tables en accès direct, qui consiste à obtenir les styles par défaut de MapCatalog (FromMapCatalog ON). 188 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Si Label est défini, indiquez une expression valide ou une valeur par défaut ; cela signifie que le style du cadre par défaut est utilisé à la création de chaque texte de style, à moins que la clause Style ne contienne du texte. La valeur par défaut est « Default ». Le programme commence par rechercher des valeurs de métadonnées pour le titre, le sous-titre, la colonne et l'étiquette dans le fichier TAB de chaque couche de cadre. S'il n'existe aucune valeur de métadonnées pour la colonne, la valeur par défaut est Object. S'il n'existe aucune valeur de métadonnées pour l'étiquette, la valeur par défaut est celle du style du cadre. S'il existe des clés de métadonnées de légende et que vous souhaitez les modifier, vous devez utiliser la syntaxe MapBasic correspondante. Exemple L'exemple suivant indique comment créer le cadre de la légende cartographique d'une fenêtre Carte. Les fenêtres Légende constituent une exception : pour créer le cadre d'une de ces fenêtres, vous devez utiliser la clause Title à la place de la clause From Window. Dim i_layout_id, i_map_id As Integer Dim s_title As String ' here, you would store the Map window's ID in i_map_id, ' and store the Layout window's ID in i_layout_id. ' To obtain an ID, call FrontWindow( ) or WindowID( ). s_title = "Legend of " + WindowInfo(i_map_id, WIN_INFO_NAME) Set CoordSys Layout Units "in" Create Frame Into Window i_layout_id (1,2) (4, 5) Title s_title Cette procédure permet de créer le cadre d'une fenêtre Légende cartographique. Pour créer le cadre d'une fenêtre Légende, modifiez le titre comme suit. S_title="Theme Legend of " + WindowInfo (I_map_id, WW_INFO_NAME) Voir également Instruction Set Cartographic Legend, Instruction Alter Cartographic Frame, Instruction Add Cartographic Frame, Instruction Remove Cartographic Frame, Instruction Create Legend, Instruction Set Window , Fonction WindowInfo( ) Fonction CreateCircle( ) Objectif Renvoie une valeur Objet représentant un cercle. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CreateCircle( x, y, radius ) x est une valeur à virgule flottante indiquant la position x (longitude, par exemple) du centre du cercle. y est une valeur à virgule flottante indiquant la position y (latitude, par exemple) du centre du cercle. radius est une valeur à virgule flottante indiquant le rayon du cercle. Référence 189 Fonction CreateCircle( ) Valeur renvoyée Objet Description La fonction CreateCircle( ) renvoie une valeur Objet représentant un cercle. Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic. Par défaut, MapBasic utilise un système de coordonnées Longitude/latitude. L'instruction Set CoordSys peut cependant reconfigurer MapBasic de manière à ce qu'il utilise un autre système de coordonnées. Remarque: Le système de coordonnées de MapBasic ne dépend pas des systèmes de coordonnées des fenêtres Carte. Le paramètre radius définit le rayon du cercle, exprimé dans l'unité de distance actuellement utilisée par MapBasic. Par défaut, MapBasic utilise les miles comme unité de distance. L'instruction Set Distance Units permet cependant de reconfigurer MapBasic de manière à ce qu'il utilise une autre unité de distance. Le cercle utilise le style Brush actuellement sélectionné. Pour créer un objet cercle à l'aide d'un style Brush spécifique, vous pouvez émettre une instruction Set Style avant d'appeler CreateCircle( ). Autrement, au lieu d'appeler CreateCircle( ), vous pouvez émettre une instruction Create Ellipse, qui dispose des clauses facultatives Pen et Brush. L'objet cercle créé à l'aide de la fonction CreateCircle( ) peut être attribué à une variable Object stockée dans une ligne existante (à l'aide de l'instruction Update) ou insérée dans une nouvelle ligne (à l'aide de l'instruction Insert). Remarque: Avant de créer des objets au niveau d'une fenêtre Mise en page, vous devez émettre une instruction Set CoordSys Layout. Conditions d'erreur L'erreur ERR_FCN_ARG_RANGE (644) est générée si un argument se trouve en dehors de la plage valide. Exemples L'exemple suivant utilise l'instruction Insert pour insérer une nouvelle ligne dans la table Sites. La fonction CreateCircle( ) est ajoutée au corps de l'instruction Insert pour définir l'objet graphique joint à la nouvelle ligne. Open Table "sites" Insert Into sites (obj) Values ( CreateCircle(-72.5, 42.4, 20) ) L'exemple suivant part du principe que la table Towers dispose de trois colonnes : CoordX, CoordY et Rayon La colonne CoordX contient les valeurs de longitude, la colonne CoordY les valeurs de latitude et la colonne Rayon les valeurs de rayon. Chaque ligne de la table décrit une tour de radiodiffusion et la colonne Rayon indique le périmètre d'émission de chaque tour. L'instruction Update utilise la fonction CreateCircle( ) afin de créer un objet cercle pour chaque ligne de la table. Une fois l'instruction Update émise, un objet cercle est joint à chaque ligne de la table Towers. 190 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Le rayon de chaque objet cercle est obtenu à partir de la colonne Rayon et le centre de chaque cercle se trouve à l'emplacement indiqué par les colonnes CoordX et CoordY. Open Table "towers" Update towers Set obj = CreateCircle(xcoord, ycoord, radius) Voir également Instruction Create Ellipse, Instruction Insert, Instruction Update Instruction Create Collection Objectif Associe des points, des objets linéaires et des objets fermés dans un seul objet. Un objet collection s'affiche dans la fenêtre Données comme un seul enregistrement. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Collection [ num_parts ] [ Into { Window window_id | Variable var_name } ] Multipoint [ num_points ] ( x1, y1 ) ( x2, y2 ) [ ... ] [ Symbol... ] Region num_polygons [ num_points1 ( x1, y1 ) ( x2, y2 ) [ ... ] ] [ num_points2 ( x1, y1 ) ( x2, y2 ) [ ... ] ... ] [ Pen... ] [ Brush... ] [ Center ( center_x, center_y ) ] Pline [ Multiple num_sections ] num_points ( x1, y1 ) ( x2, y2 ) [ ... ] [ Pen... ] [ Smooth... ] num_parts correspond au nombre de parties non vides d'une collection. Ce nombre est compris entre 0 et 3 et facultatif pour le code MapBasic (il est obligatoire pour les fichiers MIF). num_polygons correspond au nombre de polygones de l'objet collection. num_sections définit le nombre de sections incluses dans la polyligne à sections multiples. Pen est une clause Pen qui définit le style de ligne. Brush est une clause Brush qui définit le style de remplissage. Exemple create collection multipoint 2 (0,0) (1,1) region 3 3 (1,1) (2,2) (3,4) 4 (11,11) (12,12) (13,14) (19,20) 3 (21,21) (22,22) (23,24) pline 3 (-1,1) (3,-2) (4,3) dim a as object create collection into variable a multipoint 2 (0,0) (1,1) region 1 3 Référence 191 Instruction Create Cutter (1,1) (2,2) (3,4) pline 3 (-1,1) (3,-2) (4,3) insert into test (obj) values (a) create collection region 2 4 (-5,-5) (5,-5) (5,5) (-5,5) 4 (-3,-3) (3,-3) (3,3) (-3,3) pline multiple 2 2 (-6,-6) (6,6) 2 (-6,6) (6,-6) multipoint 6 (2,2) (-2,-2) (2,-2) (-2,2) (4,1) (-1,-4) Voir également Instruction Create Multipoint Instruction Create Cutter Objectif Crée un objet région qui peut être utilisé comme pochoir dans le cadre d'une opération de découpage des objets, ainsi qu'un nouvel ensemble d'objets cible qui peut constituer un sous-ensemble de l'ensemble original d'objets cible. Vous devez fournir un ensemble d'objets cible et un ensemble de polylignes en tant qu'objet de sélection. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Cutter Into Target Description Avant d'utiliser l'instruction Create Cutter, vous devez sélectionner au moins un objet polyligne et disposer d'une cible modifiable. Pour ce faire, sélectionnez Objets > Définir cible, ou utilisez l'Instruction Set Target. Les objets polyligne inclus dans la sélection doivent représenter une section unique et contiguë. La sélection ne doit contenir aucune rupture ni intersection. Pour que la cible soit un objet valide à découper, la polyligne doit couper le rectangle intérieur d'encadrement de la cible. Il n'est cependant pas nécessaire que la polyligne coupe l'objet cible. L'objet cible peut être une série d'îles (Hawaï, par exemple) et la polyligne peut être utilisée pour répartir les îles en deux ensembles sans couper aucune d'entre elles. Si le rectangle intérieur d'encadrement d'une cible ne coupe pas la polyligne, la cible en question est supprimée de la liste des cibles. Conformément à cet ensemble modifié d'objets cible, le rectangle intérieur d'encadrement cumulé de l'ensemble des objets est calculé et représente l'espace total à découper. La polyligne est alors prolongée, si nécessaire, de manière à recouvrir le rectangle intérieur d'encadrement. Pour ce faire, la polyligne est prolongée dans la direction cartésienne des deux derniers points de chaque extrémité, jusqu’à ce qu'elle coupe le rectangle intérieur d'encadrement. La polyligne prolongée doit alors diviser l'espace cible en deux sections. Un objet région, représentant une des deux sections, est créé et renvoyé. Cette instruction renvoie l'ensemble modifié des objets cible (toujours définis comme cible), ainsi que le nouvel objet pochoir Région. Cet objet région sera inséré dans la table cible (qui doit être une table modifiable). Les objets polyligne originaux sont conservés mais ne sont plus sélectionnés. L'objet sélectionné est le nouvel objet région. Si l'objet région obtenu est satisfaisant, cette action peut être immédiatement suivie d'une opération de découpage, étant donné que les objets cible adaptés sont définis et qu'un objet pochoir Région convenable est sélectionné. Remarque: L'objet pochoir reste dans la couche cible. Vous devez supprimer l'objet pochoir manuellement de la couche modifiable. 192 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exemple Open Table "C:\MapInfo_data\TUT_USA\USA\STATES.TAB" Open Table "C:\MapInfo_data\TUT_USA\USA\US_HIWAY.TAB" Map from States, Us_hiway select * from States where state = "NY" Set target On select * from Us_hiway where highway = "I 90" Create Cutter Into Target Objects Split Into Target Voir également Instruction Set Target Instruction Create Designer Legend Objectif Crée une nouvelle fenêtre de conception de légende permettant d'afficher des cadres de style cartographique pour les couches de carte et des cadres de légende thématique pour les couches de carte thématique d'une fenêtre Carte active. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Designer Legend [ From Window map_window_id ] [ Behind ] [ Position ( x, y ) [ Units paper_units ] ] [ Width win_width [ Units paper_units ] ] [ Height win_height [ Units paper_units ] ] [ Window Title { legend_window_title } [ Portrait | Landscape | Custom ] [ Default Frame Title { def_frame_title } [ Font... ] } ] [ Default Frame Subtitle { def_frame_subtitle } [ Font... ] } ] [ Default Frame Style { def_frame_style } [ Font... ] } ] [ Default Frame Line Width width [ Units paper_units ] ] [ Default Frame Region Width width [ Units paper_units ] ] [ Default Frame Region Height height [ Units paper_units ] ] [ Default Frame Auto Font Size { On | Off } ] [ Legend Text Frame [ Text { frame_text [ Font... ] } [ Position ( x, y ) [ Units paper_units ] ] ] ] Frame From Layer { map_layer_id | map_layer_name [ Using [ Column { column | Object } [ FromMapCatalog { On | Off }]] [ Label { expression | Default } ] [ Position ( x, y ) [ Units paper_units ] ] [ Region [ Height region_height [ Units paper_units ] ] ] [ Region [ Width region_width [ Units paper_units ] ] ] [ Line [ Width line_width [ Units paper_units ] ] ] [ Auto Font Size { On | Off } ] [ Title { frame_title [ Font... ] } [ SubTitle { frame_subtitle [ Font... ] } ] [ Columns number_of_columns ] | [ Height frame_height [ Units paper_units ] ] [ Order { Default | Ascending | Descending | Référence 193 Instruction Create Designer Legend { Custom id | id : id [ , id | id : id ... ] ... } } ] [ Style [ Font...] [ Norefresh ] [ Text { style_name } { Line Pen... | Region Pen... Brush...| Symbol Symbol... } | Collection [ Symbol... ] [ Line Pen... ] [ Region Pen... Brush...] } ] [ , ... ] map_window_id est un identifiant de fenêtre entier que vous pouvez obtenir en appelant la fonction FrontWindow( ) et la fonction WindowID( ). x indique la distance souhaitée entre la partie supérieure du document et celle de la fenêtre. y indique la distance souhaitée entre la partie gauche du document et celle de la fenêtre. Remarque: Le document désigne ici l'espace client (la barre de titre, la barre d'outils et la barre d'état sont donc exclues). paper_units est une chaîne qui représente le nom d'une unité papier. Pour obtenir une liste des unités papier, reportez-vous à la section Instruction Set Paper Units. win_width est la largeur de fenêtre souhaitée. win_height est la hauteur de fenêtre souhaitée. legend_window_title est une expression de type chaîne représentant le titre de la fenêtre. La valeur par défaut est « Légende de xxx » où xxx correspond au titre de la fenêtre Carte. def_frame_title est une chaîne qui définit un titre de cadre par défaut. Elle peut inclure le caractère spécial « # » qui sera remplacé par le nom de la couche active. def_frame_subtitle est une chaîne qui définit un sous-titre de cadre par défaut. Elle peut inclure le caractère spécial « # » qui sera remplacé par le nom de la couche active. def_frame_style est une chaîne qui s'affiche en regard des symboles dans chaque cadre. Le caractère « # » sera remplacé par le nom de la couche. Le caractère « % » sera remplacé par le texte « Ligne », « Point » ou « Région », selon le symbole. Par exemple, "% of #" deviendra "Region of States" pour la couche STATES.TAB. width, en unités papier (voir paper_units), est la largeur souhaitée utilisée pour afficher les pavés d'exemples de régions à l'intérieur de la fenêtre. height value, en unités papier (voir paper_units) est la hauteur souhaitée utilisée pour afficher les pavés d'exemples de régions à l'intérieur de la fenêtre. frame_text est un texte pour un titre de légende, un sous-titre ou un texte descriptif (des informations sur le copyright par exemple). map_layer_id ou map_layer_name identifie une couche de la carte. Il peut s'agir d'un entier court ; par exemple, utilisez 1 pour indiquer la couche de carte supérieure (autre que la couche Dessin) ou une chaîne représentant le nom d'une table affichée sur la carte. Pour une couche thématique, vous devez spécifier l'expression map_layer_id. frame_title est une chaîne qui définit un titre de cadre. Si une clause Title est définie ici pour un cadre, elle sera utilisée à la place de l'expression def_frame_title. frame_subtitle est une chaîne qui définit un sous-titre de cadre. Si une clause Subtitle est définie ici pour un cadre, elle sera utilisée à la place de l'expression def_frame_subtitle. 194 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z number_of_columns est le nombre de colonnes à afficher dans un cadre (à ne pas confondre avec le nombre de colonnes d'une mise en page au format portrait). frame_height remplace la clause Columns lorsque l'utilisateur redimensionne un cadre de légende. Hauteur du cadre en unités papier. Valeur écrite dans le document WOR lorsque le cadre a été manuellement redimensionné. column est le nom d'une colonne d'attributs de la table de couches du cadre. region_height est une valeur qui représente la nouvelle hauteur d'un pavé dans le cadre de la carte de la fenêtre de conception de légende. Vous pouvez spécifier de 8 à 144 points, de 0,666667 à 12 picas, de 0,111111 à 2 pouces, de 0,282222 à 5,08 millimètres ou de 0,282222 à 5,08 centimètres. Si elle n'est pas spécifiée, la valeur par défaut de 32 points est utilisée (peut être définie comme une préférence). region_width est une valeur qui représente la nouvelle largeur d'un pavé dans le cadre de la carte de la fenêtre de conception de légende. Vous pouvez spécifier de 8 à 144 points, de 0,666667 à 12 picas, de 0,111111 à 2 pouces, de 0,282222 à 5,08 millimètres ou de 0,282222 à 5,08 centimètres. Si elle n'est pas spécifiée, la valeur par défaut de 32 points est utilisée (peut être définie comme une préférence). line_width est une valeur qui représente la nouvelle largeur d'un segment de ligne dans le cadre de la carte de la fenêtre de conception de légende. Vous pouvez spécifier de 12 à 144 points, de 1 à 12 picas, de 0,666667 à 2 pouces, de 4,23333 à 50,80 millimètres ou de 4,23333 à 50,80 centimètres. Si elle n'est pas spécifiée, la valeur par défaut de 36 points est utilisée (peut être définie comme une préférence). style_name est une chaîne qui s'affiche près de chaque symbole, ligne ou région dans un cadre personnalisé. Description L'instruction Create Designer Legend vous permet de créer et d'afficher les légendes cartographiques ainsi que les légendes thématiques associées à une fenêtre Carte active. Chaque légende cartographique ou thématique n'est associée qu'à une seule fenêtre Carte. Il est donc possible que plusieurs fenêtres de conception de légende soient ouvertes à la fois. Vous pouvez créer un cadre de légende pour chaque couche de carte cartographique ou thématique que vous souhaitez inclure à la fenêtre de conception de légende. Les légendes peuvent inclure un titre et un sous-titre. Elles peuvent afficher les styles d'une couche de carte, ou les couleurs, symboles et tailles représentés par un thème. Vous pouvez également créer des légendes définissant vos propres styles personnalisés à l'aide de l'instruction Create Designer Legend. Au moins une clause Frame est requise. Chaque clause Frame représente une légende créée dans la fenêtre de conception de légende. Toutes les clauses en rapport avec la fenêtre de conception de légende complète (largeur, etc.) doivent traiter la première clause Frame. La clause From Layer doit être la première clause après la clause Frame. La clause Behind facultative place la légende derrière la fenêtre Carte. La clause Position facultative détermine la position de la fenêtre au niveau du document MapInfo Professional. La position du coin supérieur gauche du document MapInfo Professional est 0, 0. Les clauses Width et Height facultatives contrôlent la taille de la fenêtre. Les valeurs de taille et de position de la fenêtre utilisent les paramètres des unités papier, tels que « in » pour pouces ou « cm » pour centimètres. Le paramètre d'unités papier actuelles de MapBasic est défini par défaut en pouces. Un Référence 195 Instruction Create Designer Legend programme MapBasic peut modifier ce paramètre au moyen de l'instruction Set Paper Units. Une instruction Create Designer Legend peut remplacer les unités papier en cours en intégrant la sous-clause Units facultative aux clauses Position, Width et/ou Height. La clause Region Height indique une hauteur spécifique pour un pavé dans le cadre de légende de la fenêtre de conception de légende. La clause Region Width indique une largeur spécifique pour un pavé dans le cadre de légende de la fenêtre de conception de légende. La clause Line Width indique une largeur spécifique pour un échantillon de ligne dans le cadre de légende de la fenêtre de conception de légende. Auto Font Size active ou désactive le redimensionnement du pavé de la légende en fonction du paramètre de taille de police. Portrait ou Landscape décrit l'orientation ou la disposition automatique des cadres de la fenêtre de conception de légende. Portrait permet d'obtenir une orientation verticale. Landscape permet d'obtenir une orientation horizontale. Si vous sélectionnez Custom, vous pouvez spécifier une clause Position personnalisée pour chaque cadre. La clause Position au niveau d'un cadre définit la position du cadre si la mention Custom apparaît. La coordonnée x permet d'effectuer des mesures en partant de la gauche de la fenêtre de conception de légende, tandis que la coordonnée y permet de le faire en partant du bas de la fenêtre de conception de légende (le point d'origine (0,0) se trouve donc en bas à gauche de la fenêtre de conception de légende). Les clauses Position, Default Frame Title, Default Frame SubTitle et Default Frame Style au niveau du cadre sont utilisées uniquement pour les légendes de couches de carte. Elles ne sont pas utilisées pour les légendes de couches thématiques. Pour une légende thématique, ces informations sont obtenues automatiquement à partir du thème. Les paramètres de cadre par défaut sont facultatifs. Si ces paramètres ne sont pas spécifiés, les valeurs par défaut des préférences de l'application sont utilisées (dans les limites des valeurs minimale et maximale). Les nouveaux paramètres des pavés remplacent les paramètres de cadre par défaut. • Default Frame Line Width est la largeur en unités papier des exemples de style de ligne. • Default Frame Region Width est la largeur en unités papier des exemples de style de région. • Default Frame Region Height est la hauteur en unités papier des exemples de style de région. paper_units est une chaîne qui représente le nom d'une unité papier. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Legend Text Frame crée un cadre de texte dans la fenêtre de conception de légende. Si Text n'indique pas la clause Font, la police par défaut est utilisée. Si Column est défini, column correspond au nom d'une colonne d'attributs de la table de couche du cadre. Object fait référence à la colonne objet (cela signifie que les styles de légende sont basés sur les styles uniques du fichier de carte). La valeur par défaut est Object. FromMapCatalog ON récupère les styles de MapCatalog pour une table en accès direct. Si la table n'est pas en accès direct, MapBasic revient au comportement par défaut d'une table sans accès direct 196 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z plutôt que de générer une erreur. Le comportement par défaut d'une table sans accès direct est FromMapCatalog Off (styles de la carte, par exemple). FromMapCatalog OFF récupère les styles uniques d'une carte pour la table en accès direct du serveur. Pour que cela fonctionne, il doit s'agir d'une table en accès direct qui prend en charge les styles par enregistrement. Si la table en accès direct ne prend pas en charge les styles par enregistrement, le système revient au comportement par défaut des tables en accès direct, qui consiste à obtenir les styles par défaut de MapCatalog (FromMapCatalog ON). Si Label est défini, indiquez expression comme une expression valide ou valeur par défaut ; cela signifie que la trame de style du cadre par défaut est utilisée à la création de chaque texte de style, à moins que la clause Style ne contienne du texte. La valeur par défaut est « Default ». La clause Height remplace la clause Columns lorsque l'utilisateur redimensionne un cadre. Cela s'applique aux cadres de légende de carte ainsi qu'aux cadres de légende thématique, qui sont mutuellement exclusifs. En présence des deux types de cadres, la clause Columns est utilisée. La clause Order permet d'ajouter la fonctionnalité de tri ou de personnalisation de l'ordre des lignes des légendes. Vous pouvez trier les légendes par étiquette de style ou suivant votre propre ordre. Les options d'ordre de tri sont les suivantes : Par défaut, Ordre Croissant, Ordre Décroissant et Ordre Personnalisé. La clause Order est uniquement écrite dans un document si la légende est triée dans l'ordre croissant, décroissant ou personnalisé. Un ordre de tri Par défaut correspond à l'ordre que l'assistant Créer une légende utilise pour créer les lignes de légende. Si vous créez une légende en fonction de styles uniques, cet ordre s'applique à ces styles, qui sont alors affichés sous forme de lignes dans la légende. Si vous sélectionnez l'ordre de tri Personnalisé, les valeursid sont des identifiants de ligne commençant par 1, triés de haut en bas. Si vous regardez la liste de lignes de la boîte de dialogue Propriétés du cadre de légende, l'identifiant de la première ligne est égal à 1, et ainsi de suite, dans l'ordre croissant jusqu'en bas de la liste. Pour plus d'informations, reportez-vous à la section Options d'ordre personnalisé et aux options d'ordre personnalisé de l'instruction Alter Designer Frame. La clause Display contrôle l'affichage de chaque ligne. Chaque ligne de MapBasic commence par la clause Style. À la fin de chaque clause Style se trouve une clause Display facultative. Display On rend la ligne visible. Display Off masque la ligne. Si la clause Display est absente, la ligne est visible. La clause Display est écrite uniquement dans un fichier de document pour des styles non visibles dans un cadre de légende. Remarque: Les instructions Shade et Set Legend continuent à créer et à modifier les légendes thématiques, mais seule l'instruction Create Designer Legend ajoute des légendes thématiques à une fenêtre de conception de légende (en spécifiant l'ID de couche thématique via la clause Frame From Layer id). Remarque: La clause Columns ou Height s'applique aux légendes et aux légendes thématiques. Cependant, il convient de spécifier l'ensemble des autres propriétés de légende thématique via l'instruction Set Legend. La clause Style et le mot-clé NoRefresh vous permettent de créer des cadres personnalisés qui ne sont pas remplacés lors de l'actualisation de la légende. Si le mot-clé NoRefresh est utilisé dans la clause Style, les styles de la table ne sont pas analysés. Dans ce cas, la clause Style doit contenir votre liste de définitions personnalisée pour les styles qui figurent dans le cadre. Pour ce faire, utilisez la clause Référence 197 Instruction Create Designer Legend Text et la clause Line, Region ou Symbol appropriée. Les objets multipoint sont considérés comme des objets point. Les objets collection sont traités séparément. Lorsque MapInfo Professional crée une légende basée sur des types d'objets, il commence par tracer les symboles point, puis les lignes et les régions. Les objets collection sont dessinés en dernier. Dans les objets collection, l'ordre du tracé est le suivant : point, ligne et région. La clause Font indique un style de texte. Si la police par défaut d'un nom de style, d'un sous-titre ou d'un titre de cadre est définie, elle devient la police par défaut du cadre. Si une clause Default Frame Title, Default Frame Subtitle ou Default Frame Style existe au niveau du cadre et inclut une clause Font, la police définie au niveau du cadre est utilisée. Si aucune police n'est spécifiée à aucun niveau, les styles de police des préférences de la fenêtre Légende sont utilisés pour le titre, le sous-titre et le nom de style. Le programme commence par rechercher des valeurs de métadonnées pour le titre, le sous-titre, la colonne et l'étiquette dans le fichier TAB de chaque couche de cadre. S'il n'existe aucune valeur de métadonnées pour la colonne, la valeur par défaut est Object. S'il n'existe aucune valeur de métadonnées pour l'étiquette, la valeur par défaut est celle du style du cadre. S'il existe des clés de métadonnées de légende et que vous souhaitez les modifier, vous devez utiliser la syntaxe MapBasic correspondante. Reportez-vous aux sections Fonction GetMetadata$( ) et Instruction Metadata. Exemple Open Table ApplicationDirectory$() + "MyTable.tab" As mytable Open Table ApplicationDirectory$() + "States.tab" As states Open Table ApplicationDirectory$() + "City_125.tab" As cities Open Table ApplicationDirectory$() + "Us_hiway.tab" As hiway Map From cities, hiway, states, mytable Create Designer Legend From Window FrontWindow() Position (8, 0) Units "in" Width 3 Units "in" Height 6 Units "in" Window Title "Legend Designer Window Test" Custom Default Frame Title "# Legend" Font ("Calibri",1,12,16711680) Default Frame Subtitle "#" Font ("Arial",2,10,255) Default Frame Style "%" Font ("Lucida Calligraphy",0,8,16732240) Frame From Layer Cities Using column object label default Position (.5, 0) Units "in" Subtitle "125 Largest Cities" Frame From Layer hiway Using column object label default Position (.5, .75) Units "in" Title "US Highways" Subtitle "Interstates" Frame From Layer states Using column object label default Position (.5, 1.5) Units "in" Title "United States" Subtitle "State Boundaries" Frame From Layer mytable Using column object 198 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z label default Position (.5, 2.5) Units "in" Title "MyTable Objects" Subtitle "Special Objects" Columns 4 Voir également Instruction Alter Designer Frame, Instruction Add Designer Frame, Instruction Remove Designer Frame, Instruction Set Designer Legend, Instruction Set Window, Fonction WindowInfo( ) Options d'ordre personnalisé Les deux instructions Create Designer Legend et Alter Designer Frame incluent maintenant une clause Order avec la possibilité de spécifier un ordre de tri personnalisé. Custom id | id : id [ , id | id : id ... ] Où ce qui suit indique une plage d'identifiants de ligne dans l'ordre croissant (Id2 > Id1) : Id1 : Id2 Modification de l'ordre d'une liste La syntaxe d'un ordre personnalisé de lignes de légende est similaire à la clause Order (pour modifier l'ordre des couches) dans l'instruction Set Map. Elle est relativement facile à utiliser si vous souhaitez modifier l'ordre en début de liste ; il est par contre plus compliqué de le faire en fin de liste. Par exemple, si vous souhaitez inverser l'ordre des trois premières lignes, il vous suffit d'utiliser la commande suivante : Order Custom 3, 2, 1 Vous n'avez pas besoin de mentionner les autres lignes. Si vous disposez de 10 lignes et que vous souhaitez intervertir les deux dernières, vous devez mentionner tous les identifiants comme suit : Order Custom 1, 2, 3, 4, 5, 6, 7, 8, 10, 9 Pour rendre cette commande plus compacte, utilisez la syntaxe suivante : Order Custom 1:8, 10, 9 Indication d'une plage de valeurs Pour indiquer une plage de valeurs, utilisez les deux points (:), comme dans les exemples suivants : Long form: Order Custom 2, 5, 6, 7, 8, 9, 10, 1, 3, 4 Short Order Order Order form: Custom 2, 5:10, 1, 3, 4 Custom 2, 5:10, 1, 3:4 (same as above but also valid) Custom 2, 5:10, 1 (same as above but also valid) Long form: Order Custom 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 11 Short form: Order Custom 1:10, 12:20, 11 Référence 199 Instruction Create Ellipse La liste de valeurs ne doit pas comporter de doublons : cela entraînerait une erreur. L'exemple suivant provoque une erreur : Order Custom 1:5, 8, 4:7 les ID des lignes 4 et 5 sont des doublons. Pour voir cela, développez la syntaxe suivante (qui provoque une erreur) : Order Custom 1, 2, 3, 4, 5, 8, 4, 5, 6, 7 Il est possible d'utiliser la syntaxe alternative pour créer ou modifier une légende dans la fenêtre de conception de légende. Pour les documents, la syntaxe courte est utilisée lorsque les légendes de la fenêtre de conception de légende comportent plus de 50 lignes triées dans un ordre personnalisé. Instruction Create Ellipse Objectif Crée un objet ellipse ou cercle. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Ellipse [ Into { Window window_id | Variable var_name } ] ( x1, y1 ) ( x2, y2 ) [ Pen... ] [ Brush... ] window_id est un identifiant de fenêtre. var_name est le nom d'une variable objet. x1, y1 définit le coin du rectangle qui sera rempli par l'ellipse. x2, y2 définit le coin opposé du rectangle. Pen est une clause Pen qui définit le style de ligne. Brush est une clause Brush qui définit le style de remplissage. Description L'instruction Create Ellipse crée un objet ellipse ou cercle. Si le rectangle intérieur d'encadrement de l'objet est défini de telle manière que le rayon x est équivalent au rayon y, l'objet est un cercle. Sinon, il s'agit d'une ellipse. Si l'instruction inclut la clause Into Variable facultative, l'objet est stocké dans la variable objet indiquée. Si la clause Into définit un identifiant de fenêtre, l'objet est stocké à l'emplacement correspondant de la fenêtre (la couche modifiable d'une fenêtre Carte, par exemple). Si la clause Into n'est pas définie, MapBasic tente de stocker l'objet dans la fenêtre au premier plan. S'il n'est pas possible de stocker des objets dans la fenêtre au premier plan (s'il s'agit d'une fenêtre Graphique, par exemple), aucun objet n'est créé. Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic. Par défaut, MapBasic utilise un système de coordonnées Longitude/latitude. L'instruction Set CoordSys peut cependant 200 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z reconfigurer MapBasic de manière à ce qu'il utilise un autre système de coordonnées. Notez que le système de coordonnées de MapBasic ne dépend pas des systèmes de coordonnées des fenêtres Carte. Les objets créés au niveau d'une fenêtre Mise en page sont néanmoins définis en unités papier. chaque coordonnée x représente une distance à partir du bord gauche de la page tandis que chaque coordonnée y représente une distance à partir du bord supérieur de la page. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Par défaut, MapBasic utilise les pouces comme unité papier. L'instruction Set Paper Units permet de sélectionner une autre unité papier. Avant de créer des objets au niveau d'une fenêtre Mise en page, vous devez émettre une instruction Set CoordSys Layout. La clause Pen facultative définit un style de ligne. Si elle est omise, l'instruction Create Ellipse utilise le style de ligne actuellement défini dans MapInfo Professional (celui qui apparaît dans la boîte de dialogue Options > Style ligne). De même, la clause Brush facultative définit un style de remplissage. Voir également Clause Brush, Fonction CreateCircle( ), Instruction Insert, Clause Pen, Instruction Update Instruction Create Frame Objectif Crée un nouveau cadre dans une fenêtre Mise en page. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Frame [ Into { Window layout_win_id | Variable var_name } ] ( x1, y1 ) ( x2, y2 ) [ Pen... ] [ Brush... ] [ Title title ] [ From Window contents_win_id ] [ FillFrame { On | Off } ] x1, y1 définit un coin du cadre à créer. x2, y2 définit l'autre coin. layout_win_id est un identifiant de fenêtre entier représentant la fenêtre Mise en page. var_name est le nom d'une variable objet. Pen est une clause Pen qui définit le style de ligne. Brush est une clause Brush qui définit le style de remplissage. title est une chaîne identifiant le contenu du cadre (« Carte WORLD », par exemple). Cette chaîne n'est pas nécessaire lorsque la clause From Window est utilisée. contents_win_id est un identifiant de fenêtre entier définissant la fenêtre qui apparaît dans le cadre. Référence 201 Instruction Create Frame Description L'instruction Create Frame crée un nouveau cadre dans une fenêtre Mise en page existante. Si aucun identifiant layout_win_id n'est défini, le nouveau cadre est ajouté à la fenêtre Mise en page au premier plan. Avant de créer des objets au niveau d'une fenêtre Mise en page, vous devez émettre une instruction Set CoordSys Layout. D'une session à l'autre, MapInfo Professional conserve les paramètres des fenêtres Mise en page en stockant des instructions Create Frame dans le fichier de document. Pour afficher un exemple d'instruction Create Frame, créez une mise en page, enregistrez le document et étudiez le fichier de document dans un éditeur de texte. La clause Pen indique le style de ligne utilisé pour afficher le cadre et la clause Brush définit le style de remplissage du cadre. La clause From Window permet de sélectionner la fenêtre qui doit apparaître dans le cadre. Par exemple, si vous souhaitez qu'une fenêtre Carte apparaisse dans le cadre, spécifiez Window i_map (où i_map est une variable entière contenant l'identifiant de la fenêtre Carte). Pour créer un cadre contenant la fenêtre, vous devez tout d'abord ouvrir cette dernière. La clause Title propose une autre syntaxe permettant de sélectionner la fenêtre qui apparaîtra dans le cadre. Par exemple, pour identifier une fenêtre Carte affichant la table World, la clause Title doit indiquer Title "Carte WORLD". Si la chaîne titre ne fait pas référence à une fenêtre existante, ou si la chaîne title est vide (""), le cadre sera vide. Si vous définissez à la fois la clause Title et la clause From Window, c'est la seconde qui est prise en compte. La clause FillFrame indique comment la fenêtre remplit le cadre. Si vous définissez FillFrame On, une image de la fenêtre remplit l'intégralité du cadre (cette fonction est comparable à la case Plein cadre de la boîte de dialogue Objet Cadre de MapInfo Professional, qui apparaît lorsque vous double-cliquez sur un cadre). Si vous définissez FillFrame Off (ou si vous omettez complètement la clause FillFrame), le rapport hauteur/largeur de la fenêtre affecte l'apparence du cadre. En d'autres termes, le fait de redimensionner une fenêtre Carte de manière à ce qu'elle soit plus grande et moins large entraîne l'affichage d'un cadre plus grand et moins large. Exemple Les exemples suivants indiquent comment créer le cadre de la légende thématique d'une fenêtre Carte ou d'une fenêtre Légende cartographique. Les fenêtres Légende thématique constituent une exception : pour créer un cadre dans celles-ci, vous devez utiliser la clause Title à la place de la clause From Window. Dim i_layout_id, i_map_id As Integer Dim s_title As String ' here, you would store the Map window's ID in i_map_id, ' and store the Layout window's ID in i_layout_id. ' To obtain an ID, call FrontWindow( ) or WindowID( ). s_title = "Theme Legend of " + WindowInfo(i_map_id, WIN_INFO_NAME) Set CoordSys Layout Units "in" Create Frame Into Window i_layout_id (1,2) (4, 5) Title s_title 202 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Pour créer le cadre de la légende cartographique d'une fenêtre Carte, vous devez utiliser la clause From Window, une carte pouvant contenir plusieurs fenêtres de légende cartographique. Dim i_cartlgnd_id As Integer ' here, you would store the Cartographic Legend window's ID ' in i_cartlgnd _id, ' To obtain an ID, call FrontWindow( ) or WindowID( ). Create Frame Into Window i_layout_id (1,2) (4, 5) From Window i_cartlgnd_id Voir également Clause Brush, Instruction Insert, Instruction Layout, Clause Pen, Instruction Set CoordSys, Instruction Set Layout, Instruction Update Instruction Create Grid Objectif Produit un fichier de grille raster que MapBasic affiche en tant que table raster dans une fenêtre Carte. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Grid From tablename With expression [ Ignore value_to_ignore ] Into filespec [ Type grid_type ] [ Coordsys... ] [ Clipping { Object obj } | { Table tablename } ] Inflect num_inflections [ By Percent ] at color : inflection_value [ color : inflection_value ...] [ Round rounding_factor ] {[ Cell Size cell_size [ Units distance_unit ]] | [ Cell Min n_cells ]} [ Border numcells ] Interpolate With interpolator_name Version version_string Using num_parameters parameter_name : parameter_value [ parameter_name : parameter_value ... ] tablename est l'alias d'une table ouverte, à partir de laquelle les points de données sont obtenus. expression est l'expression qui servira à analyser la table, par exemple un nom de colonne. value_to_ignore est une valeur à ne pas prendre en compte. Il s'agit généralement de la valeur zéro. Aucune coloration continue ne sera créée pour les lignes dont la valeur correspond à la valeur à ignorer. filespec définit les chemin et nom complets du nouveau fichier de grille. Il portera l'extension .MIG. grid_type est une expression de type chaîne qui définit le type de fichier de grille à créer. Par défaut, les fichiers au format .MIG sont créés à l'aide de « mig.ghl ». Si vous utilisez un gestionnaire de grilles personnalisé, fournissez le nom de ce gestionnaire, par exemple, « dted.ghl ». Référence 203 Instruction Create Grid Coordsys est une clause CoordSys facultative qui correspond au système de coordonnées utilisé pour créer la grille. Si cette clause n'est pas définie, la grille est créée à l'aide du même système de coordonnées que la table source. Reportez-vous à la section Clause CoordSys pour plus d'informations. obj est l'objet qui servira de pochoir aux cellules de la grille. Seule la section de la coloration continue incluse dans l'objet sera affichée. Si une cellule de la grille n'est pas incluse dans l'objet, la valeur de cette cellule ne sera pas indiquée. Une valeur nulle sera utilisée à la place. tablename est le nom de la table des objets région qui seront associés de manière à ne former qu'un seul objet région, puis utilisés comme pochoir pour les cellules de la grille. num_inflections est une expression numérique, qui spécifie le nombre de paires color:inflection_value. color est une expression de couleur appartenant à une paire color:value inflection. inflection_value est une expression numérique qui définit la valeur d'une paire color:inflection_value sous forme de nombre ou de pourcentage. rounding_factor est une expression numérique qui définit le facteur d'arrondi appliqué aux valeurs d'inflexion. cell_size est une expression numérique définissant la taille d'une cellule de la grille en unités de distance. distance_unit est une expression de type chaîne qui définit les unités utilisées pour la taille des cellules susmentionnées. Il s'agit d'un paramètre facultatif. S'il n'est pas défini, l'unité de distance du système de coordonnées de la table est utilisée. n_cells est une expression numérique qui définit la hauteur ou la largeur des cellules de la grille. numcells définit le nombre de cellules qui doivent être ajoutées autour des limites de la grille originale. numcells est ajouté à gauche, à droite, en haut et en bas par rapport aux dimensions de la grille d'origine. interpolator_name est une expression de type chaîne qui définit le nom de l'interpolation utilisée pour créer la grille. Les interpolations MapInfo intégrées sont IDW ou TIN. version_string est une expression de type chaîne qui définit la version de l'interpolation à laquelle les paramètres sont destinés. (Version 100 de l'interpolation IDW jointe à MapInfo Professional 5.0 et Version 200 des interpolations TIN et IDW jointe à MapInfo Professional 5.5 et aux versions ultérieures.) num_parameters est une expression numérique qui définit le nombre de paires parameter_name : parameter_value à utiliser. • parameter_name est une expression de type chaîne qui définit l'élément nom de cette paire. • parameter_value est une expression numérique qui définit l'élément valeur de cette paire. Description Une analyse thématique par coloration continue est une grille raster continue produite par interpolation des données de point. L'instruction Create Grid extrait une colonne de données d'une table de points et soumet ces points et leurs valeurs à une interpolation. L'interpolation produit un fichier de grille raster que MapBasic affiche en tant que table raster dans une fenêtre Carte. L'instruction Create Grid lit les valeurs (x, y, z) de la table définie dans la clause From. Elle obtient les valeurs z en évaluant l'expression définie dans la clause With par rapport à la table. Il est possible de définir les dimensions de la grille de deux manières. L'une consiste à définir la taille d'une cellule de la grille en unités de distance, telles que des miles. L'autre consiste à définir une hauteur 204 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z ou largeur minimale de grille en termes de cellules. Par exemple, si vous souhaitez que la grille couvre au moins 200 cellules en largeur et 200 cellules en hauteur, indiquez "cell min 200". Selon le rapport hauteur/largeur de la zone couverte par la grille, les dimensions réelles ne sont pas 200 x 200. La grille dispose cependant d'une largeur et d'une hauteur d'au moins 200 cellules. By Percent at indique que les paires color:Inflection_value qui suivent représentent une valeur de couleur et une valeur de pourcentage. S'il n'est pas utilisé, Inflection_value représente une valeur numérique comme l'élévation ou la température. Pour plus d'informations sur les grilles, reportez-vous à la section Description des grilles. Pour plus d'informations sur les interpolations spécifiques, reportez-vous aux sections Interpolation IDW et Interpolation TIN. Exemple Open Table "C:\States.tab" Interactive Map From States Open Table "C:\Us_elev.tab" Interactive Add Map Auto Layer Us_elev set map redraw off Set Map Layer 1 Display Off set map redraw on create grid from Us_elev with Elevation_FT into "C:\Us_elev_grid" clipping table States inflect 5 at RGB(0, 0, 255) : 13 RGB(0, 255, 255) : 3632.5 RGB(0, 255, 0) : 7252 RGB(255, 255, 0) : 10871.5 RGB(255, 0, 0) : 14491 cell min 200 interpolate with "IDW" version "100" using 4 "EXPONENT": "2" "MAX POINTS": "25" "MIN POINTS": "1" "SEARCH RADIUS": "100" Voir également Fonction GetGridCellValue( ), GridTableInfo( ), Fonction IsGridCellNull( ), Fonction RasterTableInfo( ), Instruction Set Map Description des grilles Une analyse thématique par coloration continue est une grille raster continue produite par interpolation des données de point. L'instruction Create Grid extrait une colonne de données d'une table de points et soumet ces points et leurs valeurs à une interpolation. L'interpolation produit un fichier de grille raster que MapBasic affiche en tant que table raster dans une fenêtre Carte. L'instruction Create Grid lit les valeurs (x, y, z) de la table définie dans la clause From tablename. Elle obtient les valeurs z en évaluant l'expression spécifiée dans la clause With (un nom de colonne) par rapport à la table et calcule une Référence 205 Instruction Create Grid valeur de cellule de grille à l'aide des paramètres fournis par l'interpolation spécifique choisie par ces points. Il est possible de définir les dimensions de la grille de deux manières. L'une consiste à définir la taille d'une cellule de la grille en unités de distance, telles que des miles, des mètres, des pieds, etc. L'autre consiste à définir une hauteur ou largeur minimale de la grille en nombre de cellules. Par exemple, si vous souhaitez que la grille couvre au moins 200 cellules en largeur et 200 cellules en hauteur, indiquez "cell min 200". Selon le rapport hauteur/largeur de la zone couverte par la grille, les dimensions réelles de celle-ci ne sont pas exactement 200 x 200. La grille dispose cependant d'une largeur et d'une hauteur d'au moins 200 cellules. Exemple d'interpolation IDW avec des inflexions définies sur certaines valeurs d'élévation : Open Table "C:\MyData\States.tab" Interactive Map From States Open Table "C:\ MyData\Us_elev.tab" Interactive Add Map Auto Layer Us_elev Set map redraw off Set Map Layer 1 Display Off Set map redraw on Create Grid From Us_elev with Elevation_FT ignore 0 into "C:\ MapData\Us_elev_grid.mig" Type "mig.ghl" CoordSys Earth Projection 1, 74 clipping table States Inflect 6 at RGB(64, 0, 128) : -32808 RGB(0, 128, 192) : -16404 RGB(151, 255, 239) : -98 RGB(254, 248, 199) : 33 RGB(244, 171, 100) : 6566 RGB(235, 95, 1) : 32808 round 100 cell min 200 interpolate with "IDW" version "100" using 7 "AGGREGATION METHOD": "1" "BORDER": "0" "CELL SIZE": "8" "EXPONENT": "2" "MAX POINTS": "25" "MIN POINTS": "1" "SEARCH RADIUS": "800" Exemple d'interpolation TIN avec des inflexions définies sous forme de valeurs de pourcentage : inflect 5 by Percent at RGB(0, 0, 255) : 0 RGB(0, 255, 255) : 25 RGB(0, 255, 0) : 50 RGB(255, 255, 0) : 75 RGB(255, 0, 0) : 100 Round 10 cell min 200 interpolate with "TIN" version "100" 206 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z using 8 "BORDER": "0" "CELL SIZE": "15" "DISTANCE": "80" "EXPONENT": "2" "FEATURE ANGLE": "45" "SEARCH RADIUS": "53" "TOLERANCE": "0.01 " "READ ONLY": "T" Apparence de la grille et méthodes d'inflexion Une fois les valeurs des cellules calculées, MapInfo Professional les regroupe dans un spectre de couleurs limité par les valeurs minimale et maximale de la table définie par le nombre de paires de couleurs et de valeurs d'inflexion. Vous pouvez décider de la façon dont la couleur est répartie en précisant une méthode d'inflexion et le nombre de points d'inflexion. Le nombre de points d'inflexion doit être compris entre 2 et 255. Vous pouvez également appliquer un facteur d'arrondi aux valeurs d'inflexion. Lors de l'interpolation via l'interface utilisateur, vous disposez de quatre modes de calcul des valeurs d'inflexion : • Même nombre de cellules : définit les inflexions de sorte qu'il y ait approximativement un nombre égal de cellules de grille entre chaque valeur d'inflexion. • Classes de même amplitude : répartit les inflexions de manière égale entre les valeurs minimale et maximale de la plage de données. • Nombre de cellules manuel : utilisez cette méthode pour indiquer vos propres pourcentages. • Intervalles manuels : utilisez cette méthode pour indiquer vos propres valeurs. Lorsque vous utilisez l'instruction Create Grid, vous devez calculer les valeurs et couleurs d'inflexion manuellement à l'aide de vos propres méthodes afin d'obtenir des valeurs à partir de vos propres données d'entrée. Modèles de grilles Lorsque vous créez une analyse thématique par coloration continue dans MapInfo Professional, le modèle par défaut de coloration continue attribue la couleur bleue à la valeur minimale et la couleur rouge à la valeur maximale. Ces valeurs minimale et maximale s'expriment également en pourcentages de plage. Ces paramètres/valeurs de couleurs sont connus sous le nom de points d'inflexion et apparaissent dans la légende avec une couleur, une valeur et un pourcentage donnés. Si une cellule présente la même valeur que le point d'inflexion, elle se dote de cette couleur sur la carte. Une cellule dont la valeur se trouve entre deux points d'inflexion arbore la couleur se trouvant entre les couleurs de ces points d'inflexion. Voir également Interpolation IDW, Interpolation TIN Interpolation IDW L'interpolation IDW convient particulièrement aux valeurs de données produisant des valeurs arbitraires sur la grille, c'est-à-dire des données n'ayant aucune relation avec les valeurs de données voisines ni aucune influence sur elles, comme la population. Cette méthode d'interpolation fonctionne également correctement pour les données rares. L'interpolation IDW calcule la valeur des cellules de la grille qui Référence 207 Instruction Create Grid couvrent la surface d'analyse. Chaque valeur de point de donnée de votre table source est prise en compte dans le calcul d'une valeur de cellule et pondérée en fonction de sa distance par rapport au centre de la cellule. Étant donné que l'interpolation utilise une méthode de calcul pondéré de la distance inversée, plus le point est loin de la cellule, moins sa valeur exerce d'influence sur la valeur de la cellule finale. Le processus d'analyse par coloration continue de MapInfo Professional commence par déterminer le rectangle intérieur d'encadrement (MBR) de la table source. La grille est divisée en cellules carrées d'une taille précise identique. Par exemple, à l'aide du modèle par défaut de coloration continue, la table States de l'ensemble de données d'exemple de MapInfo Professional crée une dimension de grille de 200 cellules sur 303. En calculant le nombre de cellules de la grille et en sachant la dimension du MBR, MapInfo Professional sait que chaque cellule doit mesurer 29,1 sur 29,1 km². (La taille de votre cellule s'affiche dans l'unité de distance que vous avez définie dans la fenêtre Carte. Pour modifier les unités, sélectionnez Carte > Options > Unités de la carte.) Lors de la création d'une analyse thématique par coloration continue, il est possible de contrôler les paramètres d'interpolation IDW via le bouton Paramètres de la boîte de dialogue Créer carte thématique - Étape 3 sur 3. Le numéro de taille de cellule de cette boîte de dialogue d'interpolation représente à la fois la hauteur et la largeur de la cellule. Si vous modifiez la taille de la cellule, les dimensions de la grille sont automatiquement mises à jour. Une fois la taille de cellule et les points et valeurs sources connus, MapInfo Professional peut calculer la valeur de chaque cellule. Celle-ci est déterminée en calculant une moyenne pondérée de la distance des points figurant dans le rayon de recherche spécifié. Les points sont pondérés à l'opposé par leur distance du centre de la cellule. Avec l'interpolation IDW, l'exposant détermine l'influence de chaque point sur le résultat. Plus l'exposant est élevé, plus l'influence sur la valeur de la cellule des points les plus proches est élevée. Les exposants peuvent varier entre 1 et 10. Vous pouvez également choisir une méthode d'agrégation pour les valeurs z des points de données source coïncidents (ceux qui se trouvent dans la même cellule de grille). Il est possible d'agréger ces points de données sous forme de moyenne, de nombre, de somme, de minimum et de maximum. La méthode d'agrégation par défaut utilise une moyenne. Paramètres d'interpolation IDW de l'instruction Create Grid Pour l'interpolation IDW MapInfo Professional, lors de la définition des paramètres de la syntaxe de l'instruction Create Grid : Using num_parameters parameter_name : parameter_value [ parameter_name : parameter_value ... ] Les paires parameter_name : parameter_values suivantes peuvent être utilisées. • "EXPONENT": « nombre » – La valeur minimale est 1, la valeur maximale 10 et l'exposant par défaut 2. Plus l'exposant est élevé, plus l'influence sur la valeur de la cellule des points les plus proches est élevée. • "SEARCH RADIUS": « nombre » – Cette valeur doit être supérieure à zéro et la valeur par défaut est de 10 unités. • "MIN POINTS": « nombre » – Cette valeur doit être supérieure à zéro et la valeur par défaut est 1. Il s'agit du nombre minimal de points requis pour calculer la valeur d'une cellule de grille. • "MAX POINTS": « nombre » – Cette valeur doit être supérieure à zéro et la valeur par défaut est 25. Il s'agit du nombre maximal de points utilisés pour calculer la valeur d'une cellule de grille. • "GRID HEIGHT": « nombre » – Cette valeur doit être supérieure à zéro et la valeur par défaut est 100. Il s'agit de la hauteur minimale des cellules de la grille. Le résultat est affecté par le rapport hauteur/largeur, mais le résultat de la hauteur des cellules doit être égal au minimum de cette valeur. 208 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z • "GRID WIDTH": « nombre » – Cette valeur doit être supérieure à zéro et la valeur par défaut est 100. Il s'agit de la largeur minimale des cellules de la grille. Le résultat est affecté par le rapport hauteur/largeur, mais le résultat de la largeur des cellules doit être égal au minimum de cette valeur. • "CELL SIZE": « nombre » – Taille de la cellule de grille en unités de distance. Cette valeur doit être supérieure à zéro et la valeur par défaut est 100. • "BORDER": « nombre » – Nombre de cellules au-delà du rectangle d'encadrement de la table en fonction duquel étendre la grille. Cette valeur s'avère utile si vous procédez à l'interpolation de données d'une table de points tout en découpant une table de région. • "AGGREGATION METHOD": « nombre » – Méthode d'agrégation de points coïncidents se trouvant dans une même cellule. La méthode d'agrégation par défaut utilise une moyenne ou 0. La plupart des paramètres de l'interpolation correspondent aux boutons de contrôle de la boîte de dialogue des paramètres d'interpolation. Cependant, pour l'agrégation, au lieu de transmettre une chaîne, le système utilise un nombre. Moyenne 0 Nombre 1 Minimum 2 Maximum 3 Somme 4 Si la valeur parameter name : parameter n'est pas fournie, la valeur par défaut est utilisée. Si vous souhaitez conserver tous les paramètres d'interpolation par défaut, définissez Using num_parameters sur 0. Voir également Instruction Create Grid, Paramètre READ ONLY des interpolations TIN et IDW Interpolation TIN L'interpolation TIN convient le mieux aux données terrain et aux points de données présentant une progression linéaire ou une relation entre eux sur la grille, comme l'élévation ou la température. L'interpolation TIN produit des triangles depuis un réseau de points qui reproduisent mieux le terrain de la carte d'origine que l'interpolation IDW. Elle permet de dessiner des lignes entre des points, de les diviser en triangles et de connecter tous les points possibles. Ceci crée une grande connectivité. Ainsi les points de la grille peuvent être interpolés. L'interpolation n'est pas influencée par les valeurs de données d'origine voisines. Contrairement à l'interpolation IDW, vous n'obtenez ainsi aucun « faux résultat » de données. Vous pouvez modifier les paramètres TIN pour donner plus ou moins de détails au terrain de la carte. Le paramètre Tolérance contrôle la prise en charge ou non des points rapprochés. La tolérance correspond à une fraction de la longueur diagonale du cadre englobant des points. La valeur Distance contrôle le résultat. Pour des valeurs différentes de zéro, seuls les bords ou les triangles contenus dans une sphère centrée aux sommets des mailles sont prises en compte. Ceci permet de contraindre l'interpolation TIN à une distance indiquée, sans quoi la triangulation croiserait des régions concaves. Le paramètre Angle contrôle l'angle (en degrés) qui définit un bord pointu. Ce paramètre est utile pour lisser la grille finale. Si la différence d'angle entre des polygones limitrophes est supérieure à cette valeur, le bord partagé est considéré comme étant pointu. Référence 209 Instruction Create Grid Lors de la création d'une analyse thématique par coloration continue, il est possible de contrôler les paramètres d'interpolation TIN via le boutonParamètres de la boîte de dialogue Créer carte thématique - Étape 3 sur 3. Comme pour la méthode IDW, le numéro de taille de cellule de cette boîte de dialogue de paramètres d'interpolation représente à la fois la hauteur et la largeur de la cellule. Si vous modifiez la taille de la cellule, les dimensions de la grille sont automatiquement mises à jour. Paramètres d'interpolation TIN de l'instruction Create Grid Pour l'interpolation TIN MapInfo Professional, lors de la définition des paramètres de la syntaxe de l'instruction Create Grid : Using num_parameters parameter_name : parameter_value [ parameter_name : parameter_value ... ] Les paires parameter_name : parameter_values suivantes peuvent être utilisées. • "TOLERANCE": « nombre » – Cette valeur doit être supérieure ou égale à .00001 et inférieure ou égale à .01, la valeur par défaut étant .005. • "DISTANCE": « nombre » – Cette valeur doit être supérieure à zéro et inférieure à la hauteur et à la largeur de la grille. • "FEATURE ANGLE": « nombre » – Cette valeur doit être supérieure ou égale à zéro et inférieure ou égale à 180, la valeur par défaut étant 25 degrés. • "MIN POINTS": « nombre » – Cette valeur doit être supérieure à zéro et la valeur par défaut est 1. Il s'agit du nombre minimal de points requis pour calculer la valeur d'une cellule de grille. • "MAX POINTS": « nombre » – Cette valeur doit être supérieure à zéro et la valeur par défaut est 25. Il s'agit du nombre maximal de points utilisés pour calculer la valeur d'une cellule de grille. • "GRID HEIGHT": « nombre » – Cette valeur doit être supérieure à zéro et la valeur par défaut est 100. Il s'agit de la hauteur minimale des cellules de la grille. Le résultat est affecté par le rapport hauteur/largeur, mais le résultat de la hauteur des cellules doit être égal au minimum de cette valeur. • "GRID WIDTH": « nombre » – Cette valeur doit être supérieure à zéro et la valeur par défaut est 100. Il s'agit de la largeur minimale des cellules de la grille. Le résultat est affecté par le rapport hauteur/largeur, mais le résultat de la largeur des cellules doit être égal au minimum de cette valeur. • "CELL SIZE": « nombre » – Taille de la cellule de grille en unités de distance. Cette valeur doit être supérieure à zéro et la valeur par défaut est 100. Remarque: Si la valeur parameter name : parameter n'est pas fournie, la valeur par défaut est utilisée. Si vous souhaitez conserver tous les paramètres d'interpolation par défaut, définissez Using num_parameters sur 0. Voir également Paramètre READ ONLY des interpolations TIN et IDW Paramètre READ ONLY des interpolations TIN et IDW Si vous souhaitez définir une grille en lecture seule afin que personne ne puisse l'altérer ni l'interpoler de nouveau, spécifiez "READ ONLY": "T" pour la paire parameter name : parameter value pair, qui peut être transmise à l'interpolation TIN ou IDW MapInfo Professional. Si vous utilisez cette valeur de paramètre, la balise de métadonnées "\Interpolator\Parameter\READ ONLY" = "0" 210 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z est écrite dans le fichier .TAB et l'utilisateur ne sera pas en mesure de modifier ni d'interpoler de nouveau la grille via l'interface utilisateur. Instruction Create Index Objectif Crée l'index d'une colonne d'une table ouverte. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Index On table ( column ) table est le nom d'une table ouverte. column est le nom d'une colonne de la table ouverte. Description L'instruction Create Index crée un index au niveau de la colonne indiquée. MapInfo Professional utilise les index dans le cadre d'opérations telles que Sélection > Rechercher. Les index permettent également d'améliorer les performances générales des requêtes. Remarque: MapInfo Professional ne peut pas créer d'index si la table inclut des modifications non enregistrées. Utilisez l'instruction Commit Table pour enregistrer les modifications. Exemple L'exemple suivant crée un index pour le champ Capitale de la table World. Open Table "world" Interactive Create Index on World(Capital) Voir également Instruction Alter Table, Instruction Create Table, Instruction Drop Index, Instruction Commit Table Instruction Create Legend Objectif Crée une nouvelle fenêtre Légende thématique rattachée à la fenêtre Carte indiquée. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Si vous utilisez MapInfo Professional version 5.0 et ultérieure, l'instruction Create Cartographic Legend vous permet de créer et d'afficher des légendes de style cartographique. Reportez-vous à la section Instruction Create Cartographic Legend pour plus d'informations. Référence 211 Fonction CreateLine( ) Syntaxe Create Legend [ From Window window_ID ] [ { Show | Hide } ] window_ID est un entier représentant l'identifiant MapInfo Professional d'une fenêtre Carte. Description Cette instruction crée une fenêtre Légende thématique flottante spéciale, parallèlement à la fenêtre Légende standard de MapInfo Professional. Pour ouvrir cette dernière, utilisez l'instruction Open Window Legend. L'instruction Create Legend est utile si vous souhaitez que la légende d'une fenêtre Carte soit toujours visible, même lorsque la fenêtre Carte n'est pas active. De même, cette instruction est utile pour les applications à "cartographie intégrée", dans lesquelles les fenêtres MapInfo Professional sont intégrées à une autre application, par exemple Visual Basic. Pour plus d'informations sur la cartographie intégrée, consultez le Guide de l'utilisateur MapBasic. Si vous incluez la clause From Window, la nouvelle fenêtre Légende thématique est rattachée à la fenêtre définie, sinon à la carte utilisée en dernier. Si vous incluez le mot-clé Hide facultatif, la fenêtre créée est masquée. Pour afficher une fenêtre masquée, utilisez l'instruction Set Window...Show. Une fois l'instruction Create Legend émise, déterminez l'identifiant entier de la nouvelle fenêtre en appelant WindowID( 0 ). Utilisez l'identifiant de fenêtre obtenu dans les instructions suivantes (telles que l'instruction Set Window). La nouvelle fenêtre Légende thématique est créée en fonction des paramètres de parent et de style définis via l'instruction Set Next Document. Voir également Instruction Create Cartographic Legend, Instruction Open Window, Instruction Set Next Document, Instruction Set Window Fonction CreateLine( ) Objectif Renvoie une valeur de type objet représentant une ligne. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CreateLine( x1, y1, x2, y2 ) x1 est une valeur à virgule flottante indiquant la position x du point de départ de la ligne (longitude, par exemple). y1 est une valeur à virgule flottante indiquant la position y du point de départ de la ligne (latitude, par exemple). x2 est une valeur à virgule flottante indiquant la position x du point final de la ligne. 212 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z y2 est une valeur à virgule flottante indiquant la position y du point final de la ligne. Valeur renvoyée Objet Description La fonction CreateLine( ) renvoie la valeur objet représentant une ligne. Les paramètres x et y utilisent le système de coordonnées défini. Par défaut, MapBasic utilise un système de coordonnées Longitude/Latitude. Sélectionnez un autre système à l'aide de l'instruction Set CoordSys. L'objet ligne utilisera le style actuellement sélectionné. Pour créer un objet ligne avec un style spécifique, vous pouvez émettre l'instruction Set Style avant d'appeler CreateLine( ) ou bien émettre une instruction Create Line, comportant une clause Pen facultative. L'objet point créé à l'aide de la fonction CreateLine( ) peut être attribué à une variable objet stockée dans la ligne existante d'une table (à l'aide de l'instruction Update) ou insérée dans la nouvelle ligne d'une table (à l'aide de l'instruction Insert). Si vous devez créer des objets au niveau d'une fenêtre Mise en page, vous devez d'abord émettre une instruction Set CoordSys Layout. Exemple L'exemple suivant utilise l'instruction Insert pour insérer une nouvelle ligne dans la table Routes. La fonction CreateLine( ) apparaît dans le corps de l'instruction Insert. Open Table "Routes" Insert Into routes (obj) Values (CreateLine(-72.55, 42.431, -72.568, 42.435)) Voir également Instruction Create Line, Instruction Insert, Instruction Update Instruction Create Line Objectif Crée un objet ligne. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Line [ Into { Window window_id | Variable var_name } ] ( x1, y1) ( x2, y2) [ Pen... ] window_id est un identifiant de fenêtre. var_name est le nom d'une variable objet. x1, y1 définit le point de départ d'une ligne. x2, y2 définit le point final de la ligne. Référence 213 Instruction Create Map La clause Pen définit un style de ligne. Description L'instruction Create Line crée un objet ligne. Si l'instruction inclut la clause Into Variable facultative, l'objet est stocké dans la variable objet indiquée. Si la clause Into définit un identifiant de fenêtre, l'objet est stocké à l'emplacement correspondant de la fenêtre (la couche modifiable d'une fenêtre Carte, par exemple). Si la clause Into n'est pas définie, MapBasic tente de stocker l'objet dans la fenêtre au premier plan. S'il n'est pas possible de stocker des objets dans la fenêtre au premier plan (s'il s'agit d'une fenêtre Graphique, par exemple), aucun objet n'est créé. Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic. Par défaut, MapBasic utilise un système de coordonnées Longitude/latitude. L'instruction Set CoordSys peut cependant reconfigurer MapBasic de manière à ce qu'il utilise un autre système de coordonnées. Notez que le système de coordonnées de MapBasic ne dépend pas des systèmes de coordonnées des fenêtres Carte. Les objets créés au niveau d'une fenêtre Mise en page sont néanmoins définis en unités papier. chaque coordonnée x représente une distance à partir du bord gauche de la page tandis que chaque coordonnée y représente une distance à partir du bord supérieur de la page. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Par défaut, MapBasic utilise les pouces comme unité papier. L'instruction Set Paper Units permet de sélectionner une autre unité papier. Remarque: Si vous devez créer des objets au niveau d'une fenêtre Mise en page, vous devez d'abord émettre une instruction Set CoordSys Layout. La clause Pen définit un style de ligne. Reportez-vous à la section clause Pen pour plus de détails. Si aucune clause Pen n'est définie, l'instruction Create Line utilise le style de ligne actuellement défini pour MapInfo Professional. Voir également Fonction CreateLine( ), Instruction Insert, Clause Pen, Instruction Update Instruction Create Map Objectif Modifie la structure d'une table de manière à ce qu'elle puisse être cartographiée. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Map For table [ CoordSys... ] Using from_table] table est le nom d'une table ouverte. from_table est le nom d'une table ouverte à partir de laquelle le système de coordonnées est copié. 214 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description L'instruction Create Map permet de rendre la table ouverte cartographiable afin de l'afficher dans une fenêtre Carte. Cette instruction n'ouvre pas de nouvelle fenêtre Carte. Utilisez l'instruction Map pour ouvrir une nouvelle fenêtre Carte. Vous ne devez pas émettre d'instruction Create Map pour une table pouvant déjà être cartographiée, faute de quoi tous les objets cartographiques de la table seront supprimés. Si une carte est déjà jointe à la table et que vous souhaitez modifier de manière permanente la projection de la carte, utilisez une instruction Table As. En revanche, si vous souhaitez modifier de manière temporaire la projection d'affichage d'une carte, émettez une instruction Set Map avec uneclause CoordSys. L'instruction Create Map ne fonctionne pas sur les tables liées. Pour modifier une table liée de manière à ce qu'elle puisse être cartographiée, utilisez l'instruction Server Create Map. Définition du système de coordonnées Définissez le système de coordonnées à l'aide de l'une des deux méthodes suivantes : • Utilisez le nom d'une table pouvant être cartographiée déjà ouverte pour la section from_table de la clause Using. Le système de coordonnées utilisé est alors le même que celui de la table source. Celle-ci doit être une table actuellement ouverte et pouvant être cartographiée, faute de quoi une erreur sera générée. • Fournissez de manière explicite les informations relatives au système de coordonnées à l'aide d'une clause CoordSys (définie dans les préférences). Si vous omettez les clauses CoordSys et Using, la table utilise le système de coordonnées actuellement défini pour MapBasic. Notez que la clause CoordSys affecte la précision de la carte. La clause CoordSysinclut une clause Bounds, qui définit les coordonnées minimales et maximales pouvant être stockées dans la carte. Si vous omettez la clause Bounds, MapInfo Professional utilise des limites par défaut, qui englobent la Terre entière (la précision des coordonnées est d'alors un millionième de degré, soit environ 10 cm). Si vous savez d'avance que la carte créée est limitée à une zone particulière (une zone métropolitaine spécifique, par exemple), vous pouvez augmenter la précision des coordonnées en définissant des limites qui restreignent la carte à la zone en question. Pour un aperçu de la syntaxe complète de CoordSys, reportez-vous à la section Clause CoordSys. Voir également Instruction Commit Table, Clause CoordSys, Instruction Create Table, Instruction Drop Map, Instruction Map, Instruction Server Create Map , Instruction Set Map Instruction Create Map3D Objectif Crée une fenêtre Vue3D avec les paramètres souhaités. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Map3D [ From Window window_id | MapString mapper_creation_string ] [ Camera [ Pitch angle | Roll angle | Yaw angle | Elevation angle ] | [ Position ( x, y, z ) | FocalPoint ( x, y, z ) ] | Référence 215 Instruction Create Map3D [ Orientation ( vu_1, vu_2, vu_3, vpn_1, vpn_2, vpn_3, clip_near, clip_far )]] [ Light [ Position ( x, y, z ) | Color lightcolor ] ] [ Resolution ( res_x, res_y ) ] [ Scale grid_scale ] [ Background backgroundcolor ] [ Units unit_name ] window_id est un identifiant de fenêtre pour une fenêtre Carte contenant une couche Grille. Un message d'erreur s'affiche si la couche Grille est introuvable. mapper_creation_string définit une chaîne de commande qui crée la carte posée sur la texture de la grille. Camera définit la position et l'orientation de la perspective. angle est une mesure d'angle en degrés. L'angle horizontal de la boîte de dialogue est compris entre 0 et 360 degrés et fait pivoter les cartes autour du point central de la grille. L'angle vertical de la boîte de dialogue est compris entre 0 et 90 et mesure la rotation en fonction de l'élévation par rapport au point de départ au-dessus de la carte. Pitch règle la rotation de la perspective par rapport à l'axe des x depuis une position centrale. Roll règle la rotation de la perspective par rapport à l'axe des z depuis une position centrale. Yaw règle la rotation de la perspective par rapport à l'axe des y depuis une position centrale. Elevation règle la rotation de la perspective sur l'axe des X depuis le foyer. Position indique la position de la perspective/de l'éclairage. FocalPoint indique le foyer de la perspective/de l'éclairage. Orientation définit les perspectives ViewUp (vu_1, vu_2, vu_3), ViewPlane Normal (vpn_1, vpn_2, vpn_3), et Clipping Range (clip_near, clip_far) (utilisées pour la persistance de la vue). Resolution indique le nombre d'échantillons à prendre dans les directions X et Y. Ces valeurs sont limitées au maximum à la résolution de la grille, c'est-à-dire les dimensions x,y de la grille. Par exemple, si la grille mesure 200 x 200, les valeurs de résolution sont limitées à un maximum de 200 x 200. Vous ne pouvez pas augmenter la résolution de la grille, vous pouvez seulement spécifier une valeur de sous-échantillon. grid_scale est le facteur d'échelle en Z de la grille. Une valeur supérieure à 1 accentuera la topologie en Z ; une valeur inférieure à 1 diminuera le facteur d'échelle Z. backgroundcolor correspond à la couleur utilisée pour l'arrière-plan ; elle est définie à l'aide de la fonction RGB( ). unit_name définit les unités des valeurs de la grille. Ne définissez pas ce paramètre lors de l'utilisation de grilles sans unités (par exemple, des grilles générées à l'aide de températures ou de densités). Cette option doit être spécifiée lors de la création. Vous ne pourrez plus la modifier plus tard via l'instruction Set Map3D ou la boîte de dialogue Propriétés. Description Une fois créée, la fenêtre Vue3D est une fenêtre autonome. Étant donné qu'elle est basée sur les mêmes tables que la fenêtre Carte originale, si ces tables sont modifiées et que la fenêtre Vue3D est rafraîchie ou recréée manuellement à partir d'un document, les modifications apportées sont affichées au niveau 216 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z de la grille. La création échoue si le paramètre window_id ne correspond pas à une fenêtre Carte ou si la fenêtre Carte n'inclut aucune couche Grille. Si la fenêtre Carte inclut plusieurs grilles, chacune sera représentée dans la fenêtre Vue3D. La fenêtre Vue3D conserve une chaîne de création de carte en tant que générateur de texture. Cette chaîne prévaut également dans le document lorsque la fenêtre Vue3D est conservée. L'initialisation lira dans la couche Grille pour créer les objets de topologie et de géométrie 3D. Exemple Create Map3D Resolution(75,75) Crée une fenêtre Vue3D de la fenêtre Carte la plus récente. La fonction échoue si la fenêtre ne contient aucune couche Grille continue. Autre exemple : Create Map3D From Window FrontWindow( ) Resolution(100,100) Scale 2 Background RGB(255,0,0) Units "ft". Crée une fenêtre Vue3D avec un arrière-plan rouge. Les unités Z sont des pieds, le facteur d'échelle Z est de 2 et la résolution de la grille est définie sur 100 x 100. Voir également Instruction Set Map3D Instruction Create Menu Objectif Crée un nouveau menu ou redéfinit un menu existant. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe 1 Create Menu newmenuname [ ID menu_id ] [ Context ] As menuitem [ ID menu_item_id ] [ HelpMsg help ] { Calling handler | As menuname } [ , menuitem ... ] Syntaxe 2 Create Menu newmenuname As Default newmenuname est une chaîne qui représente le nom du menu à définir ou à redéfinir. menuitem est une chaîne qui représente le nom d'une option à inclure dans le nouveau menu. L'élément Context est réservé à un usage interne ; il est impossible de l'utiliser dans les programmes MapBasic. menu_id est un identifiant entier court, compris entre un et quinze, qui identifie un menu standard. menu_item_id est un identifiant entier qui identifie une option de menu personnalisée. help est une chaîne qui apparaît dans la barre d'état lorsque l'option de menu est mise en surbrillance. handler est le nom d'une procédure, le code d'une commande de menu standard ou une syntaxe permettant de gérer l'événement de menu en appelant OLE ou DDE. Reportez-vous à la section Options Référence 217 Instruction Create Menu de la clause Calling. Si vous définissez le code d'une commande d'affichage MapInfo Professional standard (telle que M_WINDOW_STATISTICS), la chaîne menuitem doit commencer par un point d'exclamation et inclure un caret (^) afin de préserver le comportement d'affichage de l'élément. menuname est le nom d'un menu existant à inclure en tant que sous-menu hiérarchique. Description Si le paramètre newmenuname correspond au nom d'un menu MapInfo Professional existant (tel que Fichier), l'instruction redéfinit le menu en question. Si le paramètre newmenuname ne correspond pas au nom d'un menu existant, l'instruction Create Menu définit un menu entièrement nouveau. Pour obtenir la liste des noms de menus de MapInfo Professional, reportez-vous à la section Instruction Alter Menu. L'instruction Create Menu n'affiche pas automatiquement le menu nouvellement créé. Celui-ci n'apparaît qu'une fois l'Instruction Alter Menu Bar ou l'Instruction Create Menu Bar. Cependant, si l'instruction Create Menu altère un menu existant et si ce dernier fait déjà partie de la barre de menus, la modification est immédiatement visible. Remarque: MapInfo Professional ne peut conserver plus de 96 définitions de menu à la fois. Cela inclut les menus automatiquement définis par MapInfo Professional (Fichier, etc.). Ce seuil ne dépend pas du nombre de menus simultanément affichés au niveau de la barre de menus. Le paramètre menuitem identifie le nom de l'option de menu. Le nom de l'option peut contenir des caractères de commande spéciaux, permettant de définir les attributs de l'option de menu (si elle peut être cochée ou non, par exemple). Reportez-vous aux tableaux ci-dessous pour plus de détails. Les caractères suivants nécessitent un traitement spécifique : barre oblique (/), barre oblique inversée (\)et inférieur à (<). Si vous souhaitez inclure un de ces caractères spéciaux dans le menu ou l'aide de la barre d'état, vous devez ajouter une barre oblique supplémentaire à la chaîne menuitem ou help. Par exemple, l'instruction suivante crée l'option de menu Client/Serveur : Create Menu "Data" As "Client\/Server" Calling cs_proc Si un paramètre menuitem commence par le caractère @, le menu personnalisé est divisé en deux colonnes. L'option dont le nom commence par @ est la première de la seconde colonne. Attribution de gestionnaires aux options de menu personnalisées La plupart des options de menu incluent la clause Calling handler clause; où handler est le nom d'une procédure MapBasic ou un code numérique identifiant une opération MapInfo Professional (telle que M_FILE_SAVE pour définir la commande Fichier > Enregistrer). Si l'utilisateur sélectionne une option de menu disposant d'un gestionnaire, MapBasic appelle automatiquement celui-ci (qu'il s'agisse d'une sous-procédure ou d'un code de commande). Si vous envisagez de faire référence à des codes de menu tels que M_FILE_SAVE, le programme doit inclure le fichier MENU.DEF. La clause ID facultative vous permet d'attribuer un identifiant entier unique à chaque option de menu personnalisée. Les identifiants d'options de menu sont utiles lorsque plusieurs options de menu peuvent appeler la même procédure de gestionnaire. Au sein de la procédure de gestionnaire, vous pouvez déterminer l'option de menu sélectionnée par l'utilisateur en appelant CommandInfo(CMD_INFO_MENUITEM). Les identifiants d'options de menu peuvent être utilisés par d'autres instructions, comme par exemple l'Instruction Alter Menu Item. Les options de menu ne 218 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z disposant ni d'un paramètre handler, ni d'un paramètre menuname sont inertes. Dans ce cas, elles sont utilisées à des fins cosmétiques, pour afficher des lignes horizontales de saut d'un menu par exemple. Création de menus hiérarchiques Pour inclure un menu hiérarchique dans le nouveau menu, utilisez la sous-clause As à la place de la sous-clause Calling. La sous-clause As doit définir le nom d'un menu existant à associer au nouveau menu. L'exemple suivant crée un menu personnalisé contenant une option de menu conventionnelle et un menu hiérarchique. Create Menu "Special" As "Configure" Calling config_sub_proc, "Objects" As "Objects" Lorsque vous ajoutez un menu hiérarchique, son nom apparaît au niveau du menu parent, à la place de la chaîne menuitem. Propriétés d'une option de menu Les options de menu peuvent être activées ou désactivées. Les options désactivées sont grisées. Certaines options de menu peuvent être cochées, ce qui signifie qu'une coche peut apparaître à côté de l'option. Ces options ne connaissent que deux états : actif et inactif. Pour définir les propriétés d'une option de menu, incluez des codes de commande (du tableau ci-dessous) au début du paramètre menuitem. Code de commande Effet ( L'option de menu est initialement désactivée. Exemple : (Fermer (- L'option de menu est une ligne de séparation horizontale. Une telle option de menu ne peut pas disposer d'un gestionnaire. Exemple : (- ($ Ce code spécial représente la liste des éléments récents du menu Fichier. Il ne peut apparaître qu'une seule fois dans le système de menus et il ne peut pas être utilisé pour un menu contextuel. Pour supprimer la liste des éléments récents du menu Fichier, supprimez ce code du fichier MAPINFOW.MNU ou recréez le menu Fichier en émettant une instruction Create Menu. (> Ce code spécial représente la liste des fenêtres ouvertes du menu Fenêtre. Il ne peut apparaître qu'une seule fois dans le système de menus. ! L'option de menu peut être cochée mais ne l'est pas par défaut. Exemple : !Confirmer suppression ! ... ^ ... Référence Si un caret (^) apparaît dans la chaîne de texte d'une option de menu pouvant être cochée, l'option ne passe pas du statut activé ou statut désactivé (et inversement). À la place, le texte de l'option change (par exemple, Afficher 219 Instruction Create Menu Code de commande Effet ou Masquer). Le texte situé avant le caret apparaît lorsque l'option est cochée. Exemple: !Cacher barre d'état^Afficher barre d'état !+ L'option de menu peut être cochée et l'est par défaut. Exemple : !+Confirmer suppression Définition des raccourcis clavier Les options de menu peuvent disposer de deux types différents de raccourcis clavier, qui permettent à l'utilisateur de les sélectionner à l'aide du clavier plutôt qu'en cliquant avec la souris. Un des types de raccourcis clavier permet à l'utilisateur de dérouler un menu ou de sélectionner une option de menu à l'aide de touches. Par exemple, dans MapInfo Professional, l'utilisateur peut afficher le menu Fenêtre en appuyant sur Alt+W, puis appuyer sur M (ou Alt-M) pour sélectionner Carte. Pour créer ce type de raccourcis clavier, ajoutez une esperluette (&) à la chaîne newmenuname ou menuitem. Par exemple, tapez « &Map » pour le paramètre menuitem de l'instruction Create Menu). Placez l'esperluette juste avant le caractère à utiliser comme raccourci. L'autre type de raccourcis clavier permet à l'utilisateur d'activer une option sans passer par le menu. Si une option de menu dispose de la séquence de touches de raccourci Alt+F5, l'utilisateur peut activer l'option de menu en appuyant sur Alt+F5. Pour créer ce type de raccourcis, utilisez les séquences de touches suivantes. Remarque: Les codes des tableaux suivants doivent apparaître à la fin du nom de l'option de menu. Code de raccourci Windows Effet /W {letter | %number} Définit une touche de raccourci Windows qui peut être activée lorsque vous appuyez sur la touche adéquate. Exemples : Zap /WZ ou Zap /W%120 /W# {letter | %number} Définit une touche de raccourci Windows qui nécessite également la touche Maj. Exemples : Zap /W#Z ou Zap /W#%120 /W@ {letter | %number} Définit une touche de raccourci Windows qui nécessite également la touche Alt. Exemples : Zap /W@Z ou Zap /W@%120 /W^ {letter | %number} Définit une touche de raccourci Windows qui nécessite également la touche Ctrl. Exemples : Zap /W^Z ou Zap /W^%120 Pour utiliser une touche fonctionnelle comme raccourci Windows, vous devez ajouter le signe pour cent (%) suivi d'un nombre au code de raccourci. Le nombre 112 correspond à F1, 113 à F2, etc. 220 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Remarque: L'instruction Create Menu Bar As Default supprime et annule la définition de l'ensemble des menus personnalisés créés à l'aide de l'instruction Create Menu. Si vous souhaitez annuler la définition d'un des menus personnalisés ajoutés par l'application, vous pouvez émettre une instruction du type Create Menu nom_menu As Default. Une fois un menu MapInfo Professional standard modifié (le menu Fichier, par exemple), vous pouvez rétablir l'état original en émettant une instruction Create Menu menuname As Default. Options de la clause Calling La clause Calling définit les opérations à déclencher lorsque l'utilisateur utilise la commande personnalisée. Le tableau suivant détaille la syntaxe disponible. Exemple de clause Calling Description Calling M_FILE_NEW Si la mention Calling est suivie d'un code numérique issu du fichier MENU.DEF, MapInfo Professional gère l'événement en exécutant une commande de menu MapInfo Professional (Fichier > Nouveau dans cet exemple). Calling my_procedure Si vous indiquez un nom de procédure, MapInfo Professional gère l'événement en appelant celle-ci. Calling OLE "methodname" MapInfo Professional gère l'événement en effectuant un appel de méthode en direction de l'objet OLE Automation défini par la méthode SetCallback. Calling DDE "server","topic" Windows uniquement. MapInfo Professional gère l'événement en se connectant à “server|topic” via le serveur DDE et en envoyant un message d'exécution à ce serveur. Dans les deux derniers cas, la chaîne envoyée au serveur OLE ou DDE commence par « MI: », de sorte que le serveur puisse détecter que le message provient de MapInfo Professional. Le reste de la chaîne inclut une liste de valeurs séparées par des virgules et renvoyées par les appels appropriés de la Fonction CommandInfo( ). Pour des détails complets sur la syntaxe de la chaîne, reportez-vous au Guide de l'utilisateur MapBasic. Exemples L'exemple suivant utilise l'instruction Create Menu pour créer un menu personnalisé, puis ajoute ce dernier à la barre de menus de MapInfo Professional. Cet exemple supprime le menu Fenêtre (ID 6) et le menu Aide (ID 7), puis ajoute le menu personnalisé, le menu Fenêtre et le menu Aide à la barre de menus. Cette méthode permet de garantir que les deux derniers menus sont toujours les menus Fenêtre et Aide. Declare Declare Declare Declare Référence Sub Sub Sub Sub Main addsub editsub delsub 221 Instruction Create Menu Bar Sub Main Create Menu "DataEntry" As "Add" Calling addsub, "Edit" Calling editsub, "Delete" Calling delsub Alter Menu Bar Remove ID 6, ID 7 Alter Menu Bar Add "DataEntry", ID 6, ID 7 End Sub L'exemple suivant crée une version abrégée du menu Fichier. Le caractère de commande « ( » indique que les options Fermer, Enregistrer et Imprimer sont initialement désactivées. Les options Ouvrir et Enregistrer disposent de séquences de touches de raccourci Windows (respectivement Ctrl+O et Ctrl+S). Notez que les options Ouvrir et Enregistrer utilisent toutes deux la fonction Chr$(9) pour insérer une tabulation dans le nom de l'option de menu, de sorte que le texte restant soit déplacé vers la droite. Include "MENU.DEF" Create Menu "File" As "New" Calling M_FILE_NEW, "Open" +Chr$(9)+"Ctrl+O/W^O" Calling M_FILE_OPEN, "(-", "(Close" Calling M_FILE_CLOSE, "(Save" +Chr$(9)+"Ctrl+S /W^S" Calling M_FILE_SAVE, "(-", "(Print" Calling M_FILE_PRINT, "(-", "Exit" Calling M_FILE_EXIT Si vous ne souhaitez pas que l'utilisateur puisse accéder aux menus de raccourci de MapInfo Professional, recréez le menu adapté à l'aide d'une instruction Create Menu, puis définissez le menu en tant que simple code de commande de séparation, c'est-à-dire : « (- ». L'exemple suivant utilise cette méthode pour désactiver le menu de raccourci de la fenêtre Carte. Create Menu "MapperShortcut" As "(-" Voir également Instruction Alter Menu Item, Instruction Create Menu Bar Instruction Create Menu Bar Objectif Redéfinit entièrement la barre de menus à l'aide des menus disponibles. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe 1 Create Menu Bar As { menu_name | ID menu_number } [ , { menu_name | ID menu_number } ... ] Syntaxe 2 Create Menu Bar As Default 222 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z menu_name est le nom d'un menu MapInfo Professional standard ou d'un menu personnalisé créé à l'aide d'une Instruction Create Menu. menu_number est le numéro associé à un menu MapInfo Professional standard (1 pour le menu Fichier, par exemple). Description L'instruction Create Menu Bar permet à MapInfo Professional d'identifier les menus qui doivent apparaître dans la barre de menus, ainsi que leur ordre d'affichage. Si l'instruction omet le nom d'un ou plusieurs menus standard, le menu obtenu risque d'être plus court que le menu MapInfo Professional standard. Inversement, si l'instruction inclut le nom d'un ou de plusieurs menus personnalisés (créés via l'Instruction Create Menu), l'instruction Create Menu Bar peut créer une barre de menus plus longue que celle du menu MapInfo Professional standard. Il est possible d'identifier les menus par leur nom (Fichier, par exemple), qu'il s'agisse d'un menu standard ou personnalisé. Il est également possible de faire référence aux menus standard de MapInfo Professional par leur identifiant de menu. Le menu Fichier dispose par exemple de l'identifiant ID 1. Reportez-vous à la section Instruction Alter Menu Item pour obtenir une liste des noms et numéros d'identification des menus de MapInfo Professional. Une fois la barre de menus personnalisée, l'instruction Create Menu Bar As Default permet de rétablir la barre de menus MapInfo Professional standard. Notez que l'instruction Create Menu Bar As Default supprime toutes les options de menu personnalisées ajoutées par d'autres applications MapBasic exécutées simultanément. Si vous ne souhaitez pas désactiver accidentellement d'autres applications MapBasic, vous devez faire preuve de vigilance lorsque vous utilisez l'instruction Create Menu Bar As Default. Exemples L'exemple suivant réduit la barre de menus de manière à ce qu'elle inclut uniquement les menus Fichier, Édition, Sélection et les menus spécifiques à la fenêtre (Carte, Données, etc.). Create Menu Bar As "File", "Edit", "Query", "WinSpecific" D'ordinaire, la barre de menus MapInfo Professional n'affiche le menu Carte que si la fenêtre active est une fenêtre Carte. De même, MapInfo Professional affiche uniquement le menu Données lorsque la fenêtre active est une fenêtre Données. L'exemple suivant redéfinit la barre de menus de sorte qu'elle inclue toujours les menus Carte et Données, même lorsque l'écran n'affiche aucune fenêtre. Cependant, toutes les options du menu Carte sont désactivées (grisées) si la fenêtre affichée n'est pas une fenêtre Carte et toutes les options du menu Données sont désactivées si la fenêtre affichée n'est pas une fenêtre Données. Create Menu Bar As "File", "Edit", "Query", "Map", "Browse" L'exemple suivant crée un menu personnalisé, appelé Saisie Données, puis redéfinit la barre de menus de manière à ce qu'elle inclut uniquement les menus Fichier, Édition et Saisie Données. Declare Sub AddSub Declare Sub EditSub Declare Sub DelSub Référence 223 Instruction Create Multipoint Create Menu "DataEntry" As "Add" calling AddSub, "Edit" calling EditSub, "Delete" calling DelSub Create Menu Bar As "File", "Edit", "DataEntry" Voir également Instruction Alter Menu Bar, Instruction Create Menu, Instruction Menu Bar Instruction Create Multipoint Objectif Associe un certain nombre de points dans un seul objet. Tous les points disposent du même symbole. L'objet Multipoint est affiché comme un seul enregistrement dans la fenêtre Données. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Multipoint [ Into { Window window_id | Variable var_name } ] [ num_points ] ( x1, y1 ) ( x2, y2 ) [ ... ] [ Symbol... ] window_id est un identifiant de fenêtre. var_name est le nom d'une variable objet. num_points correspond au nombre de points de l'objet multipoints. x y définit l'emplacement du point. La clause Symbol spécifie un style de symbole. Remarque: Un seul symbole est utilisé pour l'ensemble des points inclus dans un objet multipoints. MapInfo Professional utilise actuellement les quatre syntaxes suivantes pour définir le symbole utilisé par les points : Syntaxe 2 (syntaxe des symboles MapInfo Professional 3.0) Symbol ( shape, color, size ) shape (forme) correspond à un entier (31 u plus), qui indique le caractère à utiliser à partir du jeu de symboles standard de MapInfo Professional. Les symboles MapInfo 3.0 font référence au jeu de symboles initialement publié avec MapInfo pour Windows 3.0, conservé dans les versions suivantes de MapInfo Professional. Pour créer un symbole invisible, utilisez le nombre 31. Le jeu de symboles standard inclut les symboles 31 à 67, mais l'utilisateur peut personnaliser le jeu de symboles à l'aide de l'application Symbol. color (couleur) correspond à une valeur de couleur RVB sous forme d'entier. Reportez-vous à la section Fonction RGB( ). 224 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z size correspond à une taille en points sous forme d'entier, comprise entre 1 et 48. Syntaxe 3 (syntaxe des polices TrueType) Symbol ( shape, color, size, fontname, fontstyle, rotation ) shape correspond à un entier (31 ou plus), qui indique le caractère à utiliser à partir d'une police TrueType. Pour créer un symbole invisible, utilisez le nombre 31. color (couleur) correspond à une valeur de couleur RVB sous forme d'entier. Reportez-vous à la section Fonction RGB( ). size correspond à une taille en points sous forme d'entier, comprise entre 1 et 48. fontname correspond à une chaîne qui représente un nom de police TrueType (par exemple, « Wingdings »). fontstyle est un code d'entier qui contrôle les attributs comme la mise en gras. rotation correspond à un nombre à virgule flottante, qui représente un angle de rotation, en degrés. Syntaxe 4 (syntaxe des fichiers bitmap personnalisés) Symbol ( filename, color, size, customstyle ) filename correspond à une chaîne ayant jusqu'à 31 caractères, qui représente le nom d'un fichier bitmap. Le fichier doit se trouver dans le répertoire CUSTSYMB (à moins qu'une Instruction Reload Symbols n'ait été utilisée pour sélectionner un autre répertoire). color (couleur) correspond à une valeur de couleur RVB sous forme d'entier. Reportez-vous à la section Fonction RGB( ). size correspond à une taille en points sous forme d'entier, comprise entre 1 et 48. customstyle est un code d'entier qui contrôle les attributs de couleur et de fond. Reportez-vous au tableau ci-dessous. Syntaxe 5 Symbol symbol_expr symbol_expr est une expression Symbol, représentant le nom d'une variable Symbol ou un appel de fonction qui renvoie une valeur Symbol, la Fonction MakeSymbol( ), par exemple. Exemple Create Multipoint 7 (0,0) (1,1) (2,2) (3,4) (-1,1) (3,-2) (4,3) Instruction Create Object Objectif Crée une ou plusieurs régions à l'aide d'une opération Buffer, Merge, Intersect, Union, Voronoi ou Isogram. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Référence 225 Instruction Create Object Syntaxe Create Object As { Buffer | Isogram | Union | Intersect | Merge | ConvexHull | Voronoi } From fromtable [ Into { Table intotable | Variable varname } ] [ Data column = expression [ , column = expression... ] ] [ Group By { column | RowID } ] fromtable est le nom d'une table ouverte, contenant un ou plusieurs objets graphiques. intotable est le nom d'une table ouverte dans laquelle les nouveaux objets seront stockés. varname est le nom d'une variable objet dans laquelle un nouvel objet sera stocké. column est le nom d'une colonne de la table. expression est une expression utilisée pour remplir le paramètre column. Description L'instruction Create Object crée un ou plusieurs objets région en effectuant une opération géographique (Buffer, Merge, Intersect, Union, ConvexHull, Voronoi ou Isogram) sur un ou plusieurs objets existants. La clause Into définit l'emplacement de stockage des résultats. Pour stocker les résultats dans une table, précisez Into Table. Pour stocker les résultats dans une variable objet, sélectionnez Into Variable. Si vous omettez la clause Into, les résultats sont stockés dans la table source. Remarque: Si vous définissez une clause Group By dans le but de procéder à l'agrégation des données, vous devez stocker les résultats dans une table plutôt que dans une variable. Le mot-clé qui suit As définit le type d'objet créé. Buffer et Isogram sont des paramètres détaillés dans les sections suivantes : Create Object As Buffer et Create Object As Isogram. Union Indiquez Union pour effectuer une opération d'association, qui supprime toutes les zones de chevauchement. Si vous réunissez deux régions qui se chevauchent (contenant chacune un polygone), vous pouvez obtenir un objet région ne contenant qu'un seul polygone. Les opérations d'association et de fusion sont similaires mais fonctionnent de manière très différente lorsque certains objets sont complètement inclus dans d'autres. Dans ce cas, l'opération de fusion supprime la zone du plus petit objet au niveau de l'objet plus grand, en laissant un trou à l'emplacement où se trouvait le plus petit objet. L'opération de regroupement ne supprime pas la zone du plus petit objet. Create Objects As Union est semblable à l'instruction Objects Combine. L'instruction Objects Combine supprime l'entrée et insère un nouvel objet associé.L'instruction Create Objects As Union insère uniquement le nouvel objet associé ; elle ne supprime pas les objets d'origine. L'association à l'aide d'une cible et de tables différentes est uniquement possible avec l'instruction Objects Combine. La fonctionnalité Fusionner des objets depuis une colonne est uniquement disponible lors de l'utilisation de l'instruction Create Objects As Union avec la clause Group By. Si une instruction Create Object As Union n'inclut pas la clause Group By, MapInfo Professional crée un objet associé pour tous les objets de la table. Si l'instruction inclut une clause Group By, elle doit désigner une colonne de la table pour permettre à MapInfo Professional de regrouper les objets source en fonction du contenu de la colonne et produire un objet associé pour chaque groupe d'objets. 226 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Si vous définissez une clause Group By, MapInfo Professional regroupe tous les enregistrements partageant la même valeur et effectue une opération (Merge, par exemple) au niveau du groupe. Si vous définissez une clause Data, MapInfo Professional procède à l'agrégation des données. Par exemple, si vous effectuez des opérations d'association ou de fusion, vous pouvez utiliser la clause Data pour attribuer des valeurs de données basées sur les fonctions d'agrégation Sum( ) ou Avg( ). Intersect Indiquez Intersect pour créer un objet représentant l'intersection d'autres objets (par exemple, si deux régions se chevauchent, l'intersection est la zone couverte par les deux objets). Appliquer Indiquez Merge pour créer un objet représentant la zone associée des objets source. L'opération Merge produit un résultat contenant l'ensemble des polygones appartenant aux objets originaux. Si ces derniers se chevauchent, l'opération de fusion ne supprime pas le chevauchement. Ainsi, si vous fusionnez deux régions qui se chevauchent (contenant chacune un polygone), vous pouvez obtenir un objet région contenant deux polygones se chevauchant. Dans ce cas, vous utiliserez plutôt l'opération Union. Enveloppe convexe L'opérateur ConvexHull crée un polygone enveloppant le contour d’un ensemble de points. L'enveloppe créée est convexe, c'est à dire qu'elle ne contient pas d'inflexion concave, tout comme un ruban élastique entourant au plus serré un ensemble de points. Ce polygone est composé d'un ensemble de points restreint, tel que tous les autres points se trouvent sur ou dans le polygone. Puisqu'il est convexe, il n'y aura pas d'angle intérieur supérieur à 180 degrés. Les points utilisés pour créer l'enveloppe convexe sont les nœuds des régions, polylignes ou points de la table source. Si une instruction Create Object As ConvexHull n'inclut pas la clause Group By, MapInfo Professional crée un seul polygone à enveloppe convexe Si l'instruction inclut une clause Group By désignant une colonne de la table, MapInfo Professional regroupe les objets source en fonction du contenu de la colonne et génère un polygone à enveloppe convexe pour chaque groupe d'objets. Si l'instruction inclut une clause Group By RowID, MapInfo Professional crée un polygone à enveloppe convexe pour chaque objet de la table source. Voronoi Indiquez Voronoi pour créer des régions qui représentent les solutions Voronoi des points d'origine. Il est possible d'attribuer les valeurs de données des points d'origine au polygone résultant des points en question en définissant les clauses de données. Exemple L'exemple suivant permet de fusionner les objets région de la table Parcels et de stocker les régions obtenues dans la table Zones. L'instruction Create Object incluant une clause Group By, MapBasic regroupe les régions de la table Parcels puis effectue une opération de fusion pour chaque groupe. La table Zones dispose ainsi d'un objet région pour chaque groupe d'objets de la table Parcels. Chaque groupe est composé de l'ensemble des parcelles disposant de la même valeur dans la colonne id_zone. Une fois l'instruction Create Object émise, la colonne nbre_parcelles de la table Zones indique le nombre de parcelles fusionnées pour produire la zone en question. La colonne valeur_zone de la table Zones indique la somme des valeurs des parcelles incluses dans la zone en question. Open Table "PARCELS" Open Table "ZONES" Référence 227 Instruction Create Object Create Object As Merge From PARCELS Into Table ZONES Data parcelcount=Count(*),zonevalue=Sum(parcelvalue) Group By zone_id L'exemple suivant présente une enveloppe convexe à objets multiples créée à l'aide de l'instruction Create Object As. Create Object As ConvexHull from state_caps into Table dump_table Create Object As Buffer Syntaxe Create Object As Buffer From fromtable [ Into { Table intotable | Variable varname } ] [ Width bufferwidth [ Units unitname ]]] [ Type { Spherical | Cartesian } ] ] [ Resolution smoothness ] [ Data column = expression [ , column = expression... ] ] [ Group By { column | RowID } ] bufferwidth est un nombre définissant le déplacement utilisé dans le cadre d'une opération Buffer. Si ce nombre est négatif et si l'objet source est fermé, le tampon obtenu est plus petit que l'objet source. Si width est négatif et si l'objet est un objet linéaire (ligne, polyligne, arc) ou un point, la valeur absolue de width est utilisée pour générer un tampon positif. unitname smoothness est un entier compris entre 2 et 100, indiquant le nombre de segments par cercle dans le cadre d'une opération Buffer. Description Si l'instruction Create Object effectue une création de zone tampon (opération Buffer), elle peut inclure les clauses Width et Resolution. La clause Width définit la largeur du tampon. La sous-clause Units facultative vous permet de définir le nom de l'unité de distance (« km » pour kilomètres) à appliquer à la clause Width. Si la clause Width n'inclut pas la sous-clause Units, l'unité de distance actuellement définie pour MapBasic est utilisée pour la largeur du tampon. Par défaut, MapBasic utilise les miles comme unité de distance. Pour modifier cette unité, utilisez l'instruction Set Distance Units. Type est la méthode utilisée pour calculer la largeur du tampon autour de l'objet. Les paramètres possibles sont Spherical et Cartesian. Notez que si le système de coordonnées de la table cible n'est pas un système terrestre, les calculs sont effectués à l'aide des méthodes cartésiennes, quelle que soit l'option sélectionnée. De même, si le système de coordonnées de la table cible est latitude/longitude, les calculs sont effectués à l'aide des méthodes sphériques, quelle que soit l'option sélectionnée. La sous-clause facultative Type vous permet de définir le type de calcul de distance utilisé pour créer le tampon. Si le type Spherical est spécifié, les calculs sont effectués en cartographiant les données dans une projection Latitude/Longitude sur la Terre et à l'aide de la largeur mesurée avec les calculs de distance sphériques. Si le type Cartesian est utilisé, les calculs sont effectués en prenant en compte les données à projeter sur une surface plane et les largeurs sont mesurées à l'aides des calculs de distance cartésiens. Si la clause Width n'inclut pas la sous-clause Type, le type de calcul de distance 228 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z par défaut Spherical est utilisé. Si les données disposent d'une projection Latitude/Longitude, des calculs sphériques sont utilisés, quel que soit le paramètre Type. Si les données disposent d'une projection non terrestre, des calculs cartésiens sont utilisés, quel que soit le paramètre Type. Le mot-clé Resolution vous permet de définir le nombre de segments inclus dans chaque cercle de la région tampon. Par défaut, les objets tampon disposent d'une valeur de lissage (smoothness) de douze (12), ce qui signifie qu'une région tampon en forme de cercle inclut douze segments. Si vous définissez une valeur smoothness plus élevée, vous pouvez obtenir des régions tampon plus homogènes. Notez cependant que plus la valeur de lissage est élevée, plus l'instruction Create Object nécessite de temps et plus l'espace disque occupé par l'objet obtenu est important. Si une instruction Create Object As Buffer n'inclut pas la clause Group By, MapInfo Professional crée un seul polygone tampon. Si l'instruction inclut une clause Group By désignant une colonne de la table, MapInfo Professional regroupe les objets source en fonction du contenu de la colonne et génère une région tampon pour chaque groupe d'objets. Si l'instruction inclut une clause Group By RowID, MapInfo Professional crée une région tampon pour chaque objet de la table source. Exemple L'exemple suivant crée un objet région représentant un tampon d'un quart de mile autour des objets actuellement sélectionnés. L'objet tampon est stocké dans la variable objet, corridor. Vous pouvez ensuite copier l'objet dans une table en utilisant l'instruction Update ou l'instruction Insert. Dim corridor As Object Create Object As Buffer From Selection Into Variable corridor Width 0.25 Units "mi" Resolution 60 Create Object As Isogram Syntaxe Create Object As Isogram From fromtable [ Into { Table intotable } ] [ Data column = expression [ , column = expression... ] ] Connection connection_handle [ Distance dist1 [[ Brush ... ] [ Pen ... ]] [ , dist2 [ Brush ... ] [ Pen ... ]] [ , distN [ Brush ... ] [ Pen ... ] [ ,...] Units dist_unit ] [ Time time1 [[ Brush ... ] [ Pen ... ]] [ , time2 [ Brush ... ] [ Pen ... ]] [ , timeN [ Brush ... ] [ Pen ... ]] [ ,...] Units time_unit ] connection_handle est une expression numérique renvoyée par l'instruction Open Connection et définissant la connexion à utiliser. dist1, dist2, distN sont des expressions numériques représentant les distances des isogrammes, exprimées à l'aide du paramètre dist_unit. Brush est une clause Brush qui définit le style de remplissage. Référence 229 Instruction Create Pline Pen est une clause Pen qui définit le style de ligne. dist_unit représente une unité de distance valide (par exemple, « km » pour kilomètres). Pour obtenir la liste complète des valeurs possibles, reportez-vous à la section Instruction Set Distance Units. time1, time2, timeN sont des valeurs numériques représentant les éléments temporels des isogrammes, exprimées à l'aide du paramètre time_unit. time_unit est une chaîne représentant une unité de temps valide : hr, min et sec. Description Si l'instruction Create Objecteffectue une opération Isogram, vous devez émettre un paramètre connection_handle correspondant à une connexion ouverte, créée à l'aide d'une instruction Open Connection. Vous devez définir une clause Distance ou Time pour créer un isogramme de la taille souhaitée. La clause Distance peut contenir une ou plusieurs expressions de distance avec un style de remplissage et/ou de ligne facultatif pour chacune. Si vous ne définissez aucune clause Brush ou clause Pen, les styles Brush et Pen actuels sont utilisés. Quel que soit le nombre d'instances Distance définies, une seule chaîne Units doit être fournie dans le cadre de la sélection des unités utilisées pour exprimer les distances. Si vous définissez une clause Time, vous pouvez créer des régions basées sur la durée, chacune disposant d'une clause Brush et/ou d'une clause Pen facultative. Si vous ne définissez aucune clause Brush ou clause Pen, les styles Brush et Pen actuels sont utilisés. Quel que soit le nombre d'instances Time définies, une seule chaîne Units doit être fournie dans le cadre de la sélection des unités utilisées pour exprimer les durées. La quantité maximum de valeurs est de 50. Chaque valeur crée une bande distincte, propre aux durées ou aux distances indiquées. Plus les valeurs sont élevées, plus la création est longue. De nombreux éléments entrent en ligne de compte. Cependant, en règle générale, le fait d'utiliser l'instruction Set Connection Isogram avec la clause MajorRoadsOnly permet d'obtenir une réponse beaucoup plus rapide que lors de l'utilisation du réseau routier entier. MapBasic autorise les distances de 35 miles avec la clause MajorRoadsOnly Off de 280 miles avec la clause MajorRoadsOnly On. De même, la durée maximale est de 0,5 heure avec la clause MajorRoadsOnly Off et de 4 heures avec la clause MajorRoadsOnly On. Voir également Fonction Buffer( ), Fonction ConvexHull( ), Instruction Objects Combine, Instruction Objects Erase, Instruction Objects Intersect, Instruction Open Connection Instruction Create Pline Objectif Crée un objet polyligne. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Pline [ Into { Window window_id | Variable var_name } ] [ Multiple num_sections ] num_points ( x1, y1 ) ( x2, y2 ) [ ... ] 230 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z [ Pen... ] [ Smooth ] window_id est un identifiant de fenêtre. var_name est le nom d'une variable objet. num_points définit le nombre de nœuds inclus dans la polyligne. num_sections définit le nombre de sections incluses dans la polyligne à sections multiples. Chaque paire x, y définit un nœud de la polyligne. La clause Pen définit un style de ligne. Description L'instruction Create Pline crée un objet polyligne. Si vous devez créer un objet polyligne mais ignorez jusqu'au moment de l'exécution le nombre de nœuds inclus dans l'objet, créez l'objet en deux étapes. Utilisez d'abord Create Pline pour créer un objet sans aucun nœud, puis émettez l'instruction Alter Object pour ajouter des détails à l'objet polyligne. Si l'instruction inclut la clause Into Variable facultative, l'objet est stocké dans la variable objet indiquée. Si la clause Into définit un identifiant de fenêtre, l'objet est stocké à l'emplacement correspondant de la fenêtre (la couche modifiable d'une fenêtre Carte, par exemple). Si vous omettez la clause Into, MapInfo Professional tente de stocker l'objet dans la fenêtre au premier plan. Si cela n'est pas possible, aucun objet n'est créé. Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic (par défaut, Longitude/Latitude). Les objets créés au niveau d'une fenêtre Mise en page sont néanmoins définis en unités papier. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Par défaut, MapBasic utilise les pouces comme unité papier. L'instruction Set Layout permet de sélectionner une autre unité papier. Si vous devez créer des objets au niveau d'une fenêtre Mise en page, vous devez d'abord émettre une instruction Set CoordSys Layout. La clause Pen facultative définit un style de ligne. Si aucune clause Pen n'est définie, l'instruction Create Pline utilise le style de ligne défini (celui figurant dans la boîte de dialogue Options > Style ligne de MapInfo Professional).La clause Smooth indique à MapInfo Professional qu'il doit lisser la ligne afin qu'elle s'affiche sous la forme d'une ligne continue, comportant des courbes plutôt que des angles. Une polyligne à section unique peut contenir jusqu'à 134 217 724 nœuds. Le nom maximal de segments d'une polyligne à plusieurs segments est 24 403 223. Voir également Instruction Alter Object, Instruction Insert, Clause Pen, Instruction Set CoordSys, Instruction Update Fonction CreatePoint( ) Objectif Renvoie une valeur objet représentant un point. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Référence 231 Fonction CreatePoint( ) Syntaxe CreatePoint( x, y ) x est une valeur à virgule flottante représentant une position x (longitude, par exemple). y est une valeur à virgule flottante représentant une position y (latitude, par exemple). Valeur renvoyée Objet Description La fonction CreatePoint( ) renvoie une valeur objet représentant un point. Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic, quel qu'il soit. Par défaut, MapBasic utilise un système de coordonnées Longitude/latitude. L'instruction Set CoordSys peut cependant reconfigurer MapBasic de manière à ce qu'il utilise un autre système de coordonnées. Notez que le système de coordonnées de MapBasic ne dépend pas des systèmes de coordonnées des fenêtres Carte. L'objet point utilisera le style de symbole actuellement sélectionné. Pour créer un objet point avec un style de symbole spécifique, vous pouvez émettre l'instruction Set Style avant d'appeler CreatePoint( ). Au lieu d'appeler CreatePoint( ), vous pouvez également émettre une instruction Create Point, qui dispose d'une clause Symbol facultative. L'objet point créé à l'aide de la fonction CreatePoint( ) peut être attribué à une variable objet stockée dans la ligne existante d'une table (à l'aide de l'instruction Update), ou insérée dans la nouvelle ligne d'une table (à l'aide de l'instruction Insert). Remarque: Si vous devez créer des objets au niveau d'une fenêtre Mise en page, vous devez d'abord émettre une instruction Set CoordSys. Exemples L'exemple suivant utilise l'instruction Insert pour insérer une nouvelle ligne dans la table Sites. La fonction CreatePoint( ) est ajoutée au corps de l'instruction Insert pour définir l'objet graphique joint à la nouvelle ligne. Open Table "sites" Insert Into sites (obj) Values ( CreatePoint(-72.5, 42.4) ) L'exemple suivant part du principe que la table Sites contient des colonnes coordX et coordY, qui indiquent la longitude et la latitude des données. L'instruction Update utilise la fonction CreatePoint( ) pour créer un objet point pour chaque ligne de la table. Une fois l'opération Update effectuée, un objet point est joint à chaque ligne de la table Sites. Chaque objet point est situé à l'emplacement indiqué dans les colonnes CoordX et CoordY. Open Table "sites" Update sites Set obj = CreatePoint(xcoord, ycoord) L'exemple ci-dessus part du principe que les colonnes CoordX et CoordY contiennent des valeurs réelles de longitude et de latitude en degrés. 232 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Instruction Create Point, Instruction Insert, Instruction Update Instruction Create Point Objectif Crée un objet point. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Point [ Into { Window window_id | Variable var_name } ] ( x, y ) [ Symbol... ] window_id est un identifiant de fenêtre. var_name est le nom d'une variable objet. x, y définit l'emplacement du point. La clause Symbol spécifie un style de symbole. Description L'instruction Create Point crée un objet point. Si l'instruction inclut la clause Into Variable facultative, l'objet est stocké dans la variable objet indiquée. Si la clause Into définit un identifiant de fenêtre, l'objet est stocké à l'emplacement correspondant de la fenêtre (la couche modifiable d'une fenêtre Carte, par exemple). Si la clause Into n'est pas définie, MapBasic tente de stocker l'objet dans la fenêtre au premier plan. S'il n'est pas possible de stocker des objets dans la fenêtre au premier plan (s'il s'agit d'une fenêtre Graphique, par exemple), aucun objet n'est créé. Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic. Par défaut, MapBasic utilise un système de coordonnées Longitude/latitude. L'instruction Set CoordSys peut cependant reconfigurer MapBasic de manière à ce qu'il utilise un autre système de coordonnées. Notez que le système de coordonnées de MapBasic ne dépend pas des systèmes de coordonnées des fenêtres Carte. Les objets créés au niveau d'une fenêtre Mise en page sont néanmoins définis en unités papier. chaque coordonnée x représente une distance à partir du bord gauche de la page tandis que chaque coordonnée y représente une distance à partir du bord supérieur de la page. Pour obtenir des détails sur les unités papier, reportez-vous à la section Instruction Set Paper Units. Par défaut, MapBasic utilise les pouces comme unité papier. L'instruction Set Paper Units permet de sélectionner une autre unité papier. Remarque: Si vous devez créer des objets au niveau d'une fenêtre Mise en page, vous devez d'abord émettre une instruction Set CoordSys Layout. La clause Symbol spécifie un style de symbole. Reportez-vous à la section Clause Symbol pour plus de détails. Si aucune clause Symbol n'est définie, l'instruction Create Point utilise le style de symbole actuellement défini (celui qui apparaît dans la boîte de dialogue Options > Style symbole). Référence 233 Instruction Create PrismMap Voir également Fonction CreatePoint( ), Instruction Insert, Clause Symbol, Instruction Update Instruction Create PrismMap Objectif Crée une carte prismatique. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create PrismMap [ From Window window_ID | MapString mapper_creation_string ] { layer_id | layer_name } With expr [ Camera [Pitch angle | Roll angle | Yaw angle | Elevation angle] | [ Position ( x, y, z ) | FocalPoint ( x, y, z ) ] | [ Orientation(vu_1, vu_2, vu_3, vpn_1, vpn_2, vpn_3, clip_near, clip_far) ] ] [ Light Color lightcolor ] [ Scale grid_scale ] [ Background backgroundcolor ] window_id est un identifiant de fenêtre pour une fenêtre Carte contenant une couche Région. Un message d'erreur s'affiche si aucune couche incluant des régions n'est localisée. mapper_creation_string définit une chaîne de commande qui crée la carte posée sur la texture de la carte prismatique. layer_id est l'identifiant d'une couche de la carte (à partir de 1). layer_name est le nom d'une couche dans la carte. expr est une expression évaluée pour chaque ligne de la table. Camera définit la position et l'orientation de la perspective. angle est une mesure d'angle en degrés. L'angle horizontal de la boîte de dialogue est compris entre 0 et 360 degrés et fait pivoter les cartes autour du point central de la grille. L'angle vertical de la boîte de dialogue est compris entre 0 et 90 et mesure la rotation en fonction de l'élévation par rapport au point de départ au-dessus de la carte. Pitch règle la rotation de la perspective sur l'axe des X depuis une position centrale. Roll règle la rotation de la perspective sur l'axe des Z depuis une position centrale. Yaw règle la rotation de la perspective sur l'axe des Y depuis une position centrale. Elevation règle la rotation de la perspective sur l'axe des X depuis le foyer. Position indique la position de la perspective et/ou de l'éclairage. FocalPoint indique le foyer de la perspective et/ou de l'éclairage. Orientation définit les perspectives ViewUp (vu_1, vu_2, vu_3), ViewPlane Normal (vpn_1, vpn_2, vpn_3) et Clipping Range (clip_near et clip_far), utilisées pour la persistance de la vue. 234 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z grid_scale est le facteur d'échelle en Z de la grille. Une valeur supérieure à 1 accentuera la topologie en Z ; une valeur inférieure à 1 diminuera le facteur d'échelle Z. backgroundcolor correspond à la couleur utilisée pour l'arrière-plan ; elle est définie à l'aide de la fonction RGB( ). Description L'instruction Create PrismMap crée une fenêtre Carte prismatique. La carte prismatique permet de réunir les différentes variables d'un objet dans un même visuel. Par exemple, la couleur associée à une région peut être le résultat de la coloration thématique alors que la hauteur de profilage de l'objet représente une valeur différente. L'instruction Create PrismMap correspond à l'option de menu Carte > Créer une carte prismatique de MapInfo Professional. D'une session à l'autre, MapInfo Professional conserve les paramètres des cartes prismatiques en stockant une instruction Create PrismMap dans le fichier de document. Pour découvrir un exemple de l'instruction Create PrismMap créez une carte, sélectionnez la commande Carte > Créer une analyse thématique, enregistrez le document (par exemple, PRISM.WOR) et examinez-le dans une fenêtre d'édition de texte MapBasic. Vous pouvez alors copier l'instruction Create PrismMap dans votre programme MapBasic. De même, vous pouvez découvrir des exemples de l'instruction Create PrismMap ouvrant la fenêtre MapBasic de MapInfo Professional avant de sélectionner Carte > Créer une carte prismatique. Chaque instruction Create PrismMap doit comporter une clause expr. MapInfo Professional évalue cette expression pour chaque objet de la couche. Suite à l'instruction Create PrismMap, MapInfo Professional sélectionne le style d'affichage de chaque objet en fonction de la valeur expr de l'enregistrement. L'expression inclut généralement les noms d'une ou plusieurs colonnes de la table analysée. La clause facultative window_id identifie la couche à utiliser dans la carte prismatique. Si aucun paramètre window_id n'est défini, MapBasic utilise la fenêtre Carte qui se trouve au premier plan. L'instruction Create PrismMap doit spécifier la couche à utiliser, même si la fenêtre Carte ne comporte qu'une seule couche. La couche peut être identifiée par un nombre (layer_id), auquel cas la couche de carte qui se trouve au premier plan possède une valeur layer_id égale à 1, la couche suivante possède une valeur layer_id égale à 2, etc. L'instruction Create PrismMap peut également identifier la couche de carte par un nom (par exemple, monde). Exemple Open Table "STATES.TAB" Interactive Map From STATES Create PrismMap From Window FrontWindow( ) STATES With Pop_1980 Background RGB(192,192,192) Voir également Instruction Set PrismMap, Fonction PrismMapInfo( ) Référence 235 Instruction Create Query Instruction Create Query Objectif Génère une table de requête représentant le contenu en cours de la fenêtre Données spécifiée. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Query From Window window_id Into query_name window_id est l'identifiant de fenêtre entier de la fenêtre Données. query_name est le nom de la table de requête à générer. Conditions d'erreur L'erreur ERR_TABLE_ALREADY_OPEN est générée s'il existe déjà une table ouverte portant le nom query_name et si cette table n'est pas une table de requête. Description Une fois que vous avez appliqué des conditions de tri et/ou de filtre dans une fenêtre Données, vous pouvez effectuer d'autres opérations sur les résultats du filtre. Utilisez l'instruction Create Query pour générer une table de requête représentant le contenu en cours de la fenêtre Données. La requête obtenue représente l'ensemble des lignes correspondant aux conditions de filtre. Vous pouvez ensuite utiliser la requête dans d'autres instructions MapBasic comme l'instruction Update, l'instruction Commit Table et l'instruction Map. Exemple Browse * From World Set Browse Filter Where (Continent = "North America" Or Continent = "South America") Create Query From Window Frontwindow() into Americas Map From Americas Voir également Instruction Set Browse, Instruction Select Instruction Create Ranges Objectif Calcule des plages thématiques et les stocke dans un tableau, qui peut ensuite être utilisé dans une instruction Shade. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. 236 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Syntaxe Create Ranges From table With expr [ Use { "Equal Ranges" | "Equal Count" | "Natural Break" | "StdDev" } ] [ Quantile Using q_expr ] [ Number num_ranges ] [ Round rounding_factor ] Into Variable array_variable table est le nom de la table qui doit être analysée thématiquement. expr est une expression évaluée pour chaque ligne de la table. q_expr est l'expression utilisée pour procéder à la définition des quantiles. num_ranges correspond au nombre de plages (la valeur par défaut est 4). rounding_factor est un facteur d'arrondi qui doit être utilisé pour les nombres de répartition de la plage (10 pour arrondir les valeurs selon la dizaine la plus proche, par exemple). array_variable est une variable de tableau à virgule flottante dans laquelle les informations de la plage seront stockées. Description L'instruction Create Ranges calcule un ensemble de valeurs de plage qui peut ensuite être utilisé dans une instruction Shade (pour créer une couche de carte thématique). Pour une présentation des cartes thématiques, reportez-vous à la documentation de MapInfo Professional. La clause Use facultative indique comment répartir les données en plages. Si vous définissez « Equal Ranges », chaque plage recouvre une section équivalente du spectre de valeurs (0-25, 25-50, 50-75, 75-100, par exemple). Si vous indiquez « Equal Count », les plages sont définies de telle manière qu'elles comportent approximativement le même nombre de lignes. Si vous définissez « Natural Break », les plages sont créées en fonction des répartitions automatiques de l'ensemble des valeurs de données. Si vous indiquez « StdDev », la répartition de la classe médiane se fait à la moyenne des valeurs. Les classes situées au-dessus et au-dessous de la classe médiane se trouvent respectivement à un écart type au-dessus et au-dessous de la moyenne. MapInfo Professional utilise l'écart type de la population (N - 1). La clause Into Variable définit le nom de la variable de tableau à virgule flottante dans laquelle les informations de la plage seront stockées. Il n'est pas nécessaire de définir la taille du tableau au préalable. Si nécessaire, MapInfo Professional l'agrandit automatiquement en fonction de la quantité d'informations de la plage. La taille finale du tableau correspond au double du nombre de plages. MapInfo Professional calcule en effet une valeur élevée et une valeur faible pour chaque plage. Une fois l'instruction Create Ranges émise, appelez l'instruction Shade pour créer la carte thématique et utilisez la clause From Variable facultative de l'instruction Shade pour lire le tableau des plages. L'instruction Shade utilise généralement le même nom de table et la même expression de colonne que l'instruction Create Ranges. Quantiles de plage Si la clause Quantile Using facultative est présente, la clause Use n'est pas prise en compte et les limites de la plage sont définies en fonction du paramètre q_expr. Référence 237 Instruction Create Ranges La définition des quantiles des plages est parfaitement illustrée par l'exemple. L'instruction suivante crée des plages de valeurs relatives à l'indice de pouvoir d'achat et utilise les statistiques de population par État pour définir les quantiles et les limites des plages. Create Ranges From states With BPI_1990 Quantile Using Pop_1990 Number 5 Into Variable f_ranges En indiquant la clause Number 5, cet exemple crée un ensemble de cinq plages. La clause With BPI_1990 a l'effet suivant : les États disposant des valeurs d'indice de pouvoir d'achat les plus élevées seront placés dans la plage supérieure (couleur la plus sombre) et ceux disposant des valeurs d'indice de pouvoir d'achat les plus faibles seront placés dans la plage inférieure (couleur la plus pâle). Avec la clause Quantile Using Pop_1990, les limites des plages intermédiaires sont calculées en définissant les quantiles à l'aide d'une méthode qui prend en compte la population par État (Pop_1990). La clause Quantile Using indiquant la colonne Pop_1990, MapInfo Professional calcule la population totale de 1990 pour la table (qui est d'environ 250 millions pour les États-Unis). MapInfo Professional divise ce total par le nombre de plages (cinq, dans ce cas), ce qui donne un résultat de cinquante millions. MapInfo Professional tente ensuite de définir les plages afin que la population totale de chacune soit environ égale à cinquante millions (sans dépasser ce chiffre). MapInfo Professional récupère les lignes de la table States par l'ordre croissant des valeurs d'indice de pouvoir d'achat. MapInfo Professional attribue des lignes à la première plage jusqu'à ce que l'ajout d'une ligne résulte en un cumul de population équivalent ou supérieur à cinquante millions. MapInfo Professional considère alors que la première plage est pleine et attribue des lignes à la deuxième plage. MapInfo Professional ajoute des lignes à la deuxième plage jusqu'à ce que l'ajout d'une ligne résulte en un total cumulé équivalent ou supérieur à cent millions. La deuxième plage est alors considérée comme pleine, etc. Exemple Include "mapbasic.def" Dim range_limits( ) As Float, brush_styles( ) As Brush Dim col_name As Alias Open Table "states" Interactive Create Styles From Brush(2, CYAN, 0) 'style for LOW range To Brush (2, BLUE, 0) 'style for HIGH range Vary Color By "RGB" Number 5 Into Variable brush_styles ' Store a column name in the Alias variable: col_name = "Pop_1990" Create Ranges From states With col_name Use "Natural Break" Number 5 Into Variable range_limits Map From states 238 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Shade states With col_name Ranges From Variable range_limits Style Variable brush_styles ' Show the theme legend window: Open Window Legend Voir également Instruction Create Styles, Instruction Set Shade, Instruction Shade Instruction Create Rect Objectif Crée un objet rectangle ou carré. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Rect [ Into { Window window_id | Variable var_name } ] ( x1, y1 ) ( x2, y2 ) [ Pen ... ] [ Brush ... ] window_id est un identifiant de fenêtre. var_name est le nom d'une variable objet. x1, y1 définit le coin de départ du rectangle. x2, y2 définit le coin opposé du rectangle. Pen est une clause Pen qui définit le style de ligne. Brush est une clause Brush qui définit le style de remplissage. Description Si l'instruction inclut la clause Into Variable facultative, l'objet est stocké dans la variable objet indiquée. Si la clause Into définit un identifiant de fenêtre, l'objet est stocké à l'emplacement correspondant de la fenêtre (la couche modifiable d'une fenêtre Carte, par exemple). Si la clause Into n'est pas définie, MapBasic tente de stocker l'objet dans la fenêtre au premier plan. S'il n'est pas possible de stocker des objets dans la fenêtre au premier plan (s'il s'agit d'une fenêtre Graphique, par exemple), aucun objet n'est créé. Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic. Par défaut, MapBasic utilise un système de coordonnées Longitude/latitude. L'instruction Set CoordSys peut cependant reconfigurer MapBasic de manière à ce qu'il utilise un autre système de coordonnées. Notez que le système de coordonnées de MapBasic ne dépend pas des systèmes de coordonnées des fenêtres Carte. Les objets créés au niveau d'une fenêtre Mise en page sont néanmoins définis en unités papier. chaque coordonnée x représente une distance à partir du bord gauche de la page tandis que chaque Référence 239 Instruction Create Redistricter coordonnée y représente une distance à partir du bord supérieur de la page. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Par défaut, MapBasic utilise les pouces comme unité papier. L'Instruction Set Paper Units permet de sélectionner une autre unité papier. Remarque: Si vous devez créer des objets au niveau d'une fenêtre Mise en page, vous devez d'abord émettre une instruction Set CoordSys Layout. La clause Pen définit un style de ligne. Reportez-vous à la section Clause Pen pour plus de détails. Si aucune Pen clause n'est définie, l'instruction Create Rect utilise le style de ligne actuellement défini (celui qui apparaît dans la boîte de dialogue Options > Style ligne). De même, la Clause Brush définit un style de trame. Reportez-vous à la section Clause Brush pour plus de détails. Voir également Clause Brush, Instruction Create RoundRect, Instruction Insert, Clause Pen, Instruction Update Instruction Create Redistricter Objectif Lance une session de sectorisation. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Redistricter source_table By district_column With [ Layer <layer_number> ] [ Count ] [ , Brush ] [ , Symbol ] [ , Pen ] [ , { Sum | Percent } ( expr ) ] [ , { Sum | Percent } ( expr ) ... ] [ Percentage From expr ] [ Percentage from { column | row } ] [ Order { "MRU" | "Alpha" | "Unordered" } ] source_table est le nom de la table contenant les objets à regrouper en secteurs. district_column est le nom d'une colonne. L'ensemble de secteurs initial est créé à partir du contenu original de cette colonne. Lorsque des objets sont attribués à différents secteurs, MapInfo Professional stocke le nom du nouveau secteur des objets dans cette colonne. layer_number correspond au numéro d'une couche de la fenêtre Carte active (1 pour la couche supérieure, par exemple). Pour déterminer le nombre de couches d'une fenêtre Carte, appelez la fonction MapperInfo( ). Le mot-clé Count indique que la fenêtre Secteurs Données affichera un décompte des objets appartenant à chaque secteur. Le mot-clé Brush indique que la fenêtre Secteurs Données affichera le style de remplissage de chaque secteur. Le mot-clé Symbol indique que la fenêtre Secteurs Données affichera le style de symbole de chaque secteur. Le mot-clé Pen indique que la fenêtre Secteurs Données affichera le style de ligne de chaque secteur. 240 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z expr est une expression de colonne numérique. La clause Percentage From définit le mode de calcul par ligne. La clause Order définit l'ordre des lignes dans la fenêtre Secteurs Données (ordre alphabétique, pas de classement ou en fonction des éléments récents ; cette dernière option est l'ordre utilisé par défaut. Description L'instruction Create Redistricter lance une session de sectorisation. Cette instruction correspond à la commande Fenêtre > Nouvelle Sectorisation de MapInfo Professional. Pour la présentation de la sectorisation, reportez-vous à la documentation de MapInfo Professional. Pour contrôler l'ensemble de secteurs, utilisez l'instruction Set Redistricter. Pour terminer la session de sectorisation, fermez la fenêtre Secteurs Données à l'aide de l'instruction Close Window. Si vous incluez le mot-clé Brush, la fenêtre Secteurs Données inclut un exemple du style de trame pour chaque secteur. Notez qu'il ne s'agit pas d'une clause Brush complète. Le mot-clé Brush apparaît de manière isolée. De même, Symbol et Pen sont des mots-clés individuels ; ils ne constituent pas une clause Symbol ou une clause Pen complète. Si la fenêtre Secteurs Données inclut des styles de trame, de ligne et/ou de symbole, l'utilisateur peut modifier le style d'un secteur en cliquant sur l'exemple qui apparaît dans cette fenêtre. La clause Percentage From vous permet de définir le mode de calcul de pourcentage par ligne. Si la clause Percentage From n'est pas définie, la méthode de calcul par colonne est utilisée. Voir également Instruction Set Redistricter Instruction Create Region Objectif Crée un objet région. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Region [ Into { Window window_id | Variable var_name } ] num_polygons [ num_points1 ( x1, y1 ) ( x2, y2 ) [ ... ] ] [ num_points2 ( x1, y1 ) ( x2, y2 ) [ ... ] ... ] [ Pen ... ] [ Brush ... ] [ Center ( center_x, center_y ) ] window_id est un identifiant de fenêtre. var_name est le nom d'une variable objet. num_polygons définit le nombre de polygones qui formeront la région (zéro ou plus). num_points1 définit le nombre de nœuds dans le premier polygone de la région. num_points2 définit le nombre de nœuds dans le deuxième polygone de la région. Référence 241 Instruction Create Region Chaque paire x, y définit un nœud dans un polygone. Pen est une clause Pen qui définit le style de ligne. Brush est une clause Brush qui définit le style de remplissage. center_x est la coordonnée x du centroïde de l'objet. center_y est la coordonnée y du centroïde de l'objet. Description L'instruction Create Region crée un objet région. Le paramètre num_polygons définit le nombre de polygones inclus dans l'objet région. Si vous indiquez une valeur de zéro pour un paramètre num_polygons, l'objet créé est une région vide (n'incluant aucun polygone). Vous pouvez alors utiliser l'instruction Alter Object pour ajouter des détails à la région. Selon l'application utilisée, il est possible que vous deviez créer l'objet région en deux étapes : utilisez tout d'abord l'instruction Create Region pour créer un objet sans aucun polygone, puis l'instruction Alter Object pour ajouter des détails à l'objet région. Si votre application doit créer des objets région mais que le nombre de nœuds ou de polygones inclus dans les régions est inconnu avant l'exécution, vous devez utiliser l'instruction Alter Object pour ajouter les nombres variables de nœuds. Reportez-vous à la section Instruction Alter Object pour plus d'informations. Si l'instruction inclut la clause Into Variable facultative, l'objet est stocké dans la variable objet indiquée. Si la clause Into définit un identifiant de fenêtre, l'objet est stocké à l'emplacement correspondant de la fenêtre (la couche modifiable d'une fenêtre Carte, par exemple). Si la clause Into n'est pas définie, MapBasic tente de stocker l'objet dans la fenêtre au premier plan. S'il n'est pas possible de stocker des objets dans la fenêtre au premier plan (s'il s'agit d'une fenêtre Graphique, par exemple), aucun objet n'est créé. Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic. Par défaut, MapBasic utilise un système de coordonnées Longitude/latitude. L'instruction Set CoordSys peut cependant reconfigurer MapBasic de manière à ce qu'il utilise un autre système de coordonnées. Notez que le système de coordonnées de MapBasic ne dépend pas des systèmes de coordonnées des fenêtres Carte. Les objets créés au niveau d'une fenêtre Mise en page sont néanmoins définis en unités papier. chaque coordonnée x représente une distance à partir du bord gauche de la page tandis que chaque coordonnée y représente une distance à partir du bord supérieur de la page. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Par défaut, MapBasic utilise les pouces comme unité papier. L'instruction Set Paper Unitspermet de sélectionner une autre unité papier. Remarque: Si vous devez créer des objets au niveau d'une fenêtre Mise en page, vous devez d'abord émettre une instruction Set CoordSys Layout. La clause Pendéfinit le style de ligne utilisé pour tracer le contour de l'objet. Pour plus de détails, reportez-vous à la section Clause Pen. Si aucune clause Pen n'est définie, l'instruction Create Region utilise le style de ligne actuellement défini (celui qui apparaît dans la boîte de dialogue Options > Style ligne). De même, la clause Brush facultative définit un style de trame. Reportez-vous à la section Clause Brush pour plus de détails. Une région comportant un polygone unique peut contenir jusqu'à 134 217 724 nœuds. Chaque région peut inclure un maximum de 20 648 881 polygones (région à polygones multiples ou collection). 242 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exemple Dim obj_region As Object Dim x(100), y(100) As Float Dim i, node_count As Integer ' ' ' ' If you store a set of coordinates in the x( ) and y( ) arrays, the following statements will create a region object that has a node at each x,y location: ' First, create an empty region object Create Region Into Variable obj_region 0 ' Now add nodes to populate the object: For i = 1 to node_count Alter Object obj_region Node Add ( x(i), y(i) ) Next ' Now store the object in the Sites table: Insert Into Sites (Object) Values (obj_region) Voir également Instruction Alter Object, Clause Brush, Instruction Insert, Clause Pen, Instruction Update Instruction Create Report From Table Objectif Crée un fichier de rapport pour Crystal Reports à partir d'une table MapInfo Professional ouverte. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Report From Table tablename [Into reportfilespec][Interactive] tablename est une table ouverte dans MapInfo Professional. reportfilespec représente le nom et le chemin complet du nouveau fichier de rapport. Le mot-clé Interactive indique que le nouveau rapport doit être immédiatement chargé dans le module Crystal Report Designer. Si la clause Into est omise, le mode Interactive est activé. Vous ne pouvez pas créer un rapport à partir d'une table raster ou grille ; vous obtiendriez une erreur. Voir également Instruction Open Report Instruction Create RoundRect Objectif Crée un objet rectangle arrondi. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Référence 243 Instruction Create RoundRect Syntaxe Create RoundRect [ Into { Window window_id | Variable var_name } ] ( x1, y1 ) ( x2, y2 ) rounding [ Pen ... ] [ Brush ... ] window_id est un identifiant de fenêtre. var_name est le nom d'une variable objet. x1, y1 définit un coin du rectangle arrondi. x2, y2 définit le coin opposé du rectangle. rounding est une valeur à virgule flottante, en unités de coordonnées (par exemple, en pouces pour une fenêtre Mise en page ou en degrés pour une fenêtre Carte). Cette valeur définit le diamètre du cercle formant le coin du rectangle arrondi. Pen est une clause Pen qui définit le style de ligne. Brush est une clause Brush qui définit le style de remplissage. Description L'instruction Create RoundRect crée un objet rectangle arrondi (un rectangle aux coins arrondis). Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic. Par défaut, MapBasic utilise un système de coordonnées Longitude/latitude. L'instruction Set CoordSys peut cependant reconfigurer MapBasic de manière à ce qu'il utilise un autre système de coordonnées. Notez que le système de coordonnées de MapBasic ne dépend pas des systèmes de coordonnées des fenêtres Carte. Les objets créés au niveau d'une fenêtre Mise en page sont néanmoins définis en unités papier. chaque coordonnée x représente une distance à partir du bord gauche de la page tandis que chaque coordonnée y représente une distance à partir du bord supérieur de la page. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Par défaut, MapBasic utilise les pouces comme unité papier. L'Instruction Set Paper Units permet de sélectionner une autre unité papier. Remarque: Si vous devez créer des objets au niveau d'une fenêtre Mise en page, vous devez d'abord émettre une instruction Set CoordSys Layout. La clause Pendéfinit le style de ligne utilisé pour tracer le contour de l'objet. Pour plus de détails, reportez-vous à la section clause Pen. Si aucune n'est définie, l'Instruction Create RoundRectutilise le style de ligne actuellement défini (celui qui apparaît dans la boîte de dialogue Options > Style ligne). De même, la clause Brush facultative définit un style de trame. Reportez-vous à la section Clause Brush pour plus de détails. Voir également Clause Brush, Instruction Create Rect, Instruction Insert, Clause Pen, Instruction Update 244 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Instruction Create Styles Objectif Crée un ensemble de styles Pen, Brush ou Symbol et stocke les styles dans un tableau. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Styles From { Pen ... | Brush ... | Symbol ... } To { Pen ... | Brush ... | Symbol ... } Vary { Color By { "RGB" | "HSV" } | Background By { "RGB" | "HSV" } | Size By { "Log" | "Sqrt" | "Constant" }} [ Number num_styles ] [ Inflect At range_number With { Pen ... | Brush ... | Symbol ...} ] Into Variable array_variable num_styles correspond au nombre de styles de dessin à créer (le nombre de styles de trame, par exemple). Le nombre par défaut est quatre. range_number est un numéro de plage de type entier court. L'attribut d'inflexion est placé après la plage définie. array_variable représente une variable de tableau dans laquelle sera stockée la plage de styles Pen, Brush ou Symbol. Pen est une clause Pen qui définit le style de ligne. Brush est une clause Brush qui définit le style de remplissage. Symbol est une clause Symbol valide qui spécifie le style de ligne à utiliser pour un type d'objet ligne. Description L'instruction Create Styles crée un ensemble de styles Pen, Brush ou Symbol et stocke ces styles dans une variable de tableau. Le tableau peut ensuite être utilisé dans une instruction Shade pour créer une couche de carte thématique. Pour une présentation de la cartographie thématique, reportez-vous à la documentation de MapInfo Professional. La clause From définit un style Pen, Brush ou Symbol. Si le tableau de styles est ensuite utilisé dans une carte thématique, le style From correspond à celui attribué à la plage inférieure. La clause To définit un style qui correspond à la plage supérieure d'une carte thématique. L'instruction Create Styles crée un ensemble de styles interpolés entre le style From et le style To. Par exemple, le style From peut être une clause Brush représentant un bleu très foncé et le style To un bleu très clair. MapInfo Professional crée alors un ensemble de styles Brush allant du bleu clair au bleu foncé. La clause Number facultative définit le nombre total de styles de dessin nécessaires. Ce nombre inclut les deux styles définis pour les clauses To et From. Ce nombre correspond généralement au nombre de plages défini dans une instruction Shade ultérieure. La clause Vary indique comment répartir un attribut entre les styles. Pour répartir la couleur de premier plan, utilisez la sous-clause Color. Pour répartir la couleur d'arrière-plan, utilisez la sous-clause Référence 245 Instruction Create Table Background. Dans les deux cas, il est possible de répartir la couleur en interpolant les composants RGB et HSV des couleurs From et To. Si vous créez un tableau de styles de symboles, vous pouvez utiliser la sous-clause Size pour modifier la taille en points des symboles. De même, si vous créez un tableau de styles de lignes, vous pouvez utiliser la sous-clause Size pour modifier l'épaisseur des lignes. La clause Inflect At facultative définit un attribut d'inflexion, placé entre les styles From et To. Si vous définissez une clause Inflect At MapInfo Professional crée deux ensembles de styles : un ensemble de styles interpolés entre les styles From et Inflect ainsi qu'un autre ensemble de styles interpolés entre les styles Inflect et To. Par exemple, en utilisant un style d'inflexion, vous pouvez créer une carte thématique des gains et des pertes, sur laquelle les régions ayant obtenu des gains sont indiquées dans différentes teintes de vert et celles ayant souffert de pertes sont indiquées dans différentes teintes de rouge. L'inflexion fonctionne uniquement en cas de variation de l'attribut de couleur. La clause Into Variable définit le nom de la variable de tableau dans laquelle les styles seront stockés. Il n'est pas nécessaire de définir la taille du tableau au préalable. Si nécessaire, MapInfo Professional l'agrandit automatiquement en fonction de l'ensemble de styles. Le paramètre array_variable (Pen, Brush ou Symbol) doit correspondre au style défini dans les clauses From et To. Exemple L'exemple suivant détaille la syntaxe de l'instruction Create Styles. Dim brush_styles( ) As Brush Create Styles From Brush(2, CYAN, 0) 'style for LOW range To Brush (2, BLUE, 0) 'style for HIGH range Vary Color By "RGB" Number 5 Into Variable brush_styles Cette instruction Create Styles définit un ensemble de cinq styles Brush et stocke ces derniers dans le tableau b_ranges. Une instruction Shade peut créer une carte thématique basée sur les styles Brush du tableau b_ranges. Un exemple vous est proposé dans la section Instruction Create Ranges. Voir également Instruction Create Ranges, Instruction Set Shade , Instruction Shade Instruction Create Table Objectif Crée une nouvelle table. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Table table_name [ ( column columntype [ , ... ] ) | Using from_table ] [ File filespec ] [ { Type NATIVE [ Version version_pro ] | Type DBF [ CharSet char_set ] [ Version version_pro ] | Type { Access | ODBC } 246 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Database database_filespec [ Version version_msaccess ] Table db_table_name [ Password pwd ] [ CharSet char_set ] [ Version version_pro ] | Type TILESERVER TileType { LevelRowColumn | QuadKey } URL url [ AttributionText "attributiontext" ] [ Font font_clause ] [ StartTileNum { 0 | 1 } ] [ Minlevel min_level ] MaxLevel max_level [ Origin { "SW" | "NW" } ] Height tile_height [Width tile_width] [ ReadTimeout read_time_out ] [ RequestTimeout request_time_out] CoordSys coordsys } ] table_name est le nom de la table tel que vous souhaitez qu'il s'affiche dans MapInfo Professional. column est le nom d'une colonne à créer. Les noms de colonne peuvent comporter jusqu'à 31 caractères et contenir des lettres, des nombres et des traits de soulignement (_). Les noms de colonne ne peuvent pas commencer par des nombres. columntype est le type de données associé à la colonne. Ce paramètre est défini de la manière suivante : Char( width ) | Float | Integer | SmallInt | Decimal( width, decplaces ) | Date | DateTime | Time | Logical Où Decimal width et compris entre 1 et 20 et Decimal decplaces entre 0 et 16. Le paramètre decplaces doit être inférieur soit de zéro (0), soit de 2 par rapport à width ; ainsi, si width est égal à 10, decplaces peut aller jusqu'à 8. from_table représente le nom d'une table actuellement ouverte dans laquelle la colonne que vous souhaitez placer dans une nouvelle table est stockée. Le paramètre from_table doit correspondre à une table de base et contenir des données de colonne. Les tables de requêtes et les tables raster ne peuvent pas être utilisées et génèrent une erreur. La structure de la colonne de la nouvelle table sera identique à celle de cette table. filespec indique où les fichiers .TAB, .MAP et .ID (et dans le cas d'Access, les fichiers .AID) doivent être créés. Si vous omettez la clause File, les fichiers sont créés dans le répertoire actuel. version_pro correspond à 100 (pour créer une table pouvant être lue par les versions de MapInfo Professional) ou 300 (format MapInfo Professional 3.0). Ce paramètre ne s'applique pas lors de la création d'une table Access. La version de la table Access est gérée par la CAO. Type DBF : char_set est le nom d'un jeu de caractères, reportez-vous à la section Clause CharSet. Type { Access | ODBC } : database_filespec est une chaîne qui identifie une base de données Access valide. Si la base de données spécifiée n'existe pas, MapInfo Professional crée un nouveau fichier Access (.MDB ou ACCDB). version_msaccess est une expression qui définit la version du format de base de données Microsoft Jet que la nouvelle base de données doit utiliser : 4.0 (pour Access 2000) ou 3.0 (pour Access 95/97). Si Référence 247 Instruction Create Table aucune valeur n'est indiquée, la version par défaut est 12.0. Si la base de données dans laquelle la table est créée existe déjà, la version de base de données spécifiée est ignorée. db_table_name est une chaîne qui indique le nom de la table tel qu'il apparaît sous Access. pwd est le mot de passe au niveau de la base de données, à spécifier lorsque la sécurité de la base de données est activée. char_set est le nom d'un jeu de caractères, reportez-vous à la section Clause CharSet. Type TILESERVER url représente l'URL complète (http://<server> ou https://<server>) qui permet d'envoyer une requête d'images tuilées à un serveur. Si l'URL n'a pas les codes remplaçables suivants, l'instruction Create Table échoue : • Si tile_type a pour valeur QuadKey, l'URL doit contenir le code {QUADKEY}. • Si tile_type a pour valeur LevelRowColumn, l'URL doit contenir les codes {LEVEL}, {ROW} et {COL} qui sont ensuite remplacés lors de l'exécution. Les serveurs prennent en charge les codes {ROW} et {COL} différemment ; parfois ces codes doivent être inversés par row et column (ou X, Y). attributiontext représente le texte d’attribution qui apparaît comme texte dans la fenêtre Carte lorsque des images tuilées sont affichées depuis un serveur d'images tuilées. Ce texte doit être placé entre guillemets ("..."). La clause facultative font_clause définit le style de police à utiliser sur le texte d'attribution. Il s'agit d'une expression Font, par exemple, MakeFont( fontname, style, size, fgcolor, bgcolor ). Font ("Verdana", 1, 24, 0, 255) Font MakeFont("Verdana", 1, 24, 0, 255) Pour plus d'informations, reportez-vous à la section Clause Font ou Fonction MakeFont( ). min_level représente le niveau minimal d'un serveur d'images tuilées. Cette valeur doit être soit zéro (0) soit une valeur positive et moins que le max_level. La valeur par défaut est zéro (0). max_level représente le niveau maximal pris en charge par le serveur d'images tuilées. Cette valeur doit être positive. width représente la hauteur en pixels d'une seule image tuilée du serveur d'images tuilées. Cette valeur doit être positive. height représente la largeur en pixels d'une seule image tuilée du serveur d'images tuilées. Si elle est définie, cette valeur doit être positive. Sinon, la hauteur est utilisée comme largeur. read_time_out représente la durée, en secondes, avant l'expiration de la lecture des images tuilées (la valeur par défaut est de 300). Cette valeur doit être positive. request_time_out représente la durée, en secondes, avant l'expiration de la requête des images tuilées (la valeur par défaut est de 100). Cette valeur doit être positive. coordsys représente le système de coordonnées par défaut du serveur d'images tuilées. MapInfo Professional ne pouvant pas reprojeter l'image du serveur, il reprojette la carte pour pouvoir utiliser ce système de coordonnées. Vous ne pouvez pas modifier le système de coordonnées correspondant à la carte s'il inclut une couche de serveur d'images tuilées. Les limites du système de coordonnées indiquent également les limites de la première image tuilée (la seule image tuilée dans le niveau minimal). 248 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voici comment MapInfo Professional sait comment calculer la zone des images tuilées dans les autres niveaux. Description L'instruction Create Table crée une nouvelle table vide de 250 colonnes maximum. Indiquez ODBC pour créer de nouvelles tables au niveau d'un serveur DBMS. La clause Using vous permet de créer une nouvelle table dans le cadre de la fonctionnalité Fusionner des objets depuis une colonne. Le paramètre from_table doit correspondre à une table de base et contenir des données de colonne. Les tables de requêtes et les tables raster ne peuvent pas être utilisées et génèrent une erreur. La structure de la colonne de la nouvelle table créée sera identique à celle de cette table. La clause File facultative indique où la nouvelle table doit être créée. Si aucune clause File n'est utilisée, la table est créée dans le répertoire ou le dossier actuel. La clause Type facultative définit le format de données de la table. Le type par défaut est NATIVE. L'option DBF est également disponible. Le format NATIVE nécessite moins d'espace disque que le format DBF. Ce dernier produit cependant des fichiers de base qui peuvent être lus par tous les gestionnaires de bases de données compatibles dBASE. Vous pouvez également créer de nouvelles tables au niveau des serveurs DBMS à l'aide de la clause ODBC Type de l'instruction Create Table. La clause CharSet spécifie un jeu de caractères. Le paramètre char_set doit être une constante de chaîne, telle que "WindowsLatin1". Si aucune clause CharSet n'est spécifiée, MapBasic utilise le jeu de caractères par défaut de la plate-forme matérielle sur laquelle le programme est exécuté. Pour plus d'informations, reportez-vous à la section Clause CharSet. Le type de colonne SmallInt réserve deux octets pour chaque valeur. La colonne peut ainsi contenir des valeurs comprises entre -32 767 et +32 767. Le type de colonne Integer réserve quatre octets pour chaque valeur. La colonne peut ainsi contenir des valeurs comprises entre -2 147 483 647 et +2 147 483 647. La clause TileType indique le type de serveurs d'images tuilées que cette table utilise, QuadKey ou LevelRowColumn. Cette valeur représente la façon dont le serveur récupère les images tuilées. Vous devez définir cette base sur ce que le serveur prend en charge et utilise : QuadKey : un serveur qui utilise un algorithme d'arbre quadratique divise le monde en carrés de 256 pixels par 256 pixels. Chaque image tuilée est appelée par une unique chaîne de caractères entre 0 – 3 (QuadKey), qui décrit la position et le niveau de zoom pour placer l'image tuilée. LevelRowColumn : un serveur qui divise le monde en carrés où chaque identifiant d'image tuilée est une liste contenant le niveau de zoom, la ligne et le numéro de colonne de l'image tuilée. Le format de l'identifiant d'image tuilée peut varier d'un serveur à un autre, de sorte que les codes {ROW} et {COL} peuvent sembler inversés pour certains serveurs. La clause StartTileNum est facultative. C'est le numéro de la première image tuilée, soit zéro (0) ou un (1). Zéro (0) est le premier numéro de l'image tuilée. La clause Origin est facultative pour les tables de type TileServer. Si cette clause est présente, vous devez inclure l'une des deux valeurs : « NW » ou « SW ». « SW » représente une origine sud-ouest, dans laquelle les images tuilées de la table TileServer sont disposées d'une manière ascendante, à partir du coin inférieur gauche. « NW » représente une origine nord-ouest des images tuilées, à partir du coin supérieur gauche. Si aucune valeur n'est incluse, « NW » est utilisée par défaut. Référence 249 Instruction Create Table La clause Version contrôle le format de la table. Si vous spécifiez Version 100, MapInfo Professional crée la table dans un format lisible dans différentes versions de ce logiciel. Si vous indiquez Version 300, MapInfo Professional crée la table conformément au format utilisé par la version 3.0. Notez que les objets région et polyligne comprenant plus de 8 000 nœuds et les objets polyligne à plusieurs segments requièrent la version 300. Si vous omettez la clause Version, la table est créée au format de la version 300. Messages d'erreur lors de la création d'une table de serveurs d'images tuilées Si une erreur se produit lorsque vous extrayez des images tuilées du serveur, ce qui peut se produire lorsque vous dessinez une couche de serveur d'images tuilées dans une fenêtre Carte, vérifiez les éléments suivants : • • • • L'URL du serveur d'images tuilées est incorrecte. Le serveur d'images tuilées est disponible. La durée nécessaire au serveur pour répondre à la requête ne dépasse pas la limite définie. L'authentification n'aboutit pas car le serveur d'images tuilées se trouve sur un serveur sécurisé ou est contacté via un serveur proxy. Si une erreur se produit lors du chargement d'une table de serveur d'images tuilées, vérifiez les éléments suivants : • Les propriétés obligatoires sont bien toutes définies dans le fichier de configuration. • Le fichier de configuration est indiqué. Si une erreur se produit lors de la création du fichier de configuration du serveur d'images tuilées (fichier XML), vérifiez que ce fichier peut être créé dans le chemin fourni. Exemple L'exemple suivant indique comment créer une table pour un serveur d'images tuilées TMS avec une origine sud-ouest. Dim sPath As String sPath="D:\MapInfo\Tables\TMS.tab" Create Table PathToTableName$(sPath) File sPath Type TILESERVER TileType "LevelRowColumn" URL "http://INSERT_TILE_SERVER_NAME/{LEVEL}/{ROW}/{COL}.png" AttributionText "required attribution text" Font ("Arial",256,10,0,16777215) MinLevel 0 MaxLevel 15 Height 256 CoordSys Earth Projection 20, 109, 7, 5.387638889, 52.156160556, 0.9999079, 155000, 463000 Bounds (-285401.92, 22598.08) (595401.92, 903401.92) Origin "SW" L'exemple suivant indique comment créer une table appelée Villes, contenant trois champs : un champ de caractères appelé Nom, un champ de nombres entiers appelé Population et un champ de valeurs 250 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z décimales appelé Revenu moyen. Le fichier est créé dans le sous-répertoire C:\MAPINFO\DONNÉES. Une clause Type facultative étant utilisée, la table est créée autour d'un fichier dBASE. Create Table Towns ( townname Char(30), population SmallInt, median_income Decimal(9,2) ) File "C:\MAPINFO\TEMP\TOWNS" Type DBF Exemples de serveurs d'images tuilées (TILESERVER) Les exemples ci-après indiquent comment créer des tables de serveurs d'images tuilées pour différents serveurs. Dans ces exemples, les noms de table et de fichier sont déterminés par l'utilisateur. Le texte d'attribution doit correspondre à l'attribution requise par le fournisseur du serveur, conformément à la loi. L'exemple ci-dessous montre comment créer une table de serveur d'images tuilées utilisant un serveur d'images tuilées MapInfo Developer : Create Table MIDev_TileServer File "MIDev_TileServer" Type TILESERVER TileType "LevelRowColumn" URL "http://INSERT_SERVER_NAME_HERE/MapTilingService/MapName/{LEVEL}/{ROW} :{COL}/tile.gif" AttributionText "required attribution text" Font("Verdena",255,16,0,255) StartTileNum 1 MaxLevel 20 Height 256 CoordSys Earth Projection 10, 157, 7, 0 Bounds(-20037508.34,20037508.34) (20037508.34,20037508.34) L'exemple ci-dessous montre comment créer une table de serveur d'images tuilées utilisant un serveur d'images tuilées MapXtreme.NET : Create Table MXT_TileServer File "MXT_TileServer" Type TILESERVER TileType "LevelRowColumn" URL "http://INSERT_SERVER_NAME_HERE/TileServer/MapName/{LEVEL}/{ROW};{COL} /tile.png" AttributionText "required attribution text" Font("Calibri",255,16,0,255) MaxLevel 20 Height 256 RequestTimeout 90 ReadTimeout 60 CoordSys Earth Projection 10, 157, 7, 0 Bounds(-20037508.34,20037508.34) (20037508.34,20037508.34) L'exemple ci-dessous montre comment créer une table de serveur d'images tuilées utilisant un serveur d'images tuilées OpenStreetMap : Create Table OSM_TileServer File "OSM_TileServer" Type TILESERVER TileType "LevelRowColumn" Référence 251 Fonction CreateText( ) URL "http://INSERT_OPEN_STREET_MAP_SERVER_NAME_HERE/{LEVEL}/{ROW}/{COL}.pn g" AttributionText "required attribution text" Font("Arial",255,16,0,255) MinLevel 0 MaxLevel 15 Height 256 CoordSys Earth Projection 10, 157, 7, 0 Bounds(-20037508.34,20037508.34) (20037508.34,20037508.34) Voir également Instruction Alter Table, Instruction Create Index, Instruction Create Map, Instruction Drop Table, Instruction Export, Instruction Import, Instruction Open Table Fonction CreateText( ) Objectif Renvoie un objet texte créé pour une fenêtre Carte spécifique. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CreateText( window_id, x, y, text, angle, anchor, offset ) window_id est un identifiant de fenêtre entier représentant une fenêtre Carte. x et y sont des valeurs à virgule flottante qui représentent l'emplacement x/y d'ancrage du texte. text est une valeur de chaîne représentant le texte inclus dans l'objet texte. angle est une valeur à virgule flottante représentant l'angle de rotation. Pour un texte horizontal, indiquez zéro. anchor est une valeur entière, comprise entre 0 et 8, qui définit l'emplacement du texte par rapport à l'emplacement d'ancrage. Sélectionnez un des codes suivants (définis dans le fichier MAPBASIC.DEF). LAYER_INFO_LBL_POS_CC LAYER_INFO_LBL_POS_TL LAYER_INFO_LBL_POS_TC LAYER_INFO_LBL_POS_TR LAYER_INFO_LBL_POS_CL LAYER_INFO_LBL_POS_CR LAYER_INFO_LBL_POS_BL LAYER_INFO_LBL_POS_BC LAYER_INFO_LBL_POS_BR (0) (1) (2) (3) (4) (5) (6) (7) (8) Le suffixe à deux lettres indique l'orientation de l'étiquette : T=haut, B=bas, C=centre, R=droite, L=gauche. Par exemple, pour placer le texte sous l'emplacement d'ancrage, à droite, précisez le code de définition LAYER_INFO_LBL_POS_BR ou la valeur 8. décalage est un entier compris entre 0 et 200, représentant la distance de décalage (en points) du texte par rapport à l'emplacement d'ancrage. Le décalage n'est pas pris en compte si l'ancrage est égal à zéro (centré). 252 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Valeur renvoyée Objet Description La fonction CreateText( ) renvoie une valeur objet représentant un objet texte. L'objet texte utilise le style de police défini. Pour créer un objet texte à l'aide d'un style de police spécifique, émettez une instruction Set Style avant d'appeler la fonction CreateText( ). Lors de la création du texte, la hauteur de ce dernier est définie par la police sélectionnée. Cependant, une fois l'objet texte créé, sa hauteur varie en fonction du zoom de la fenêtre Carte. La taille du texte augmente lorsque vous effectuez un zoom avant. L'objet point obtenu peut être attribué à une variable objet stockée dans la ligne existante d'une table (à l'aide de l'instruction Update) ou insérée dans la nouvelle ligne d'une table (à l'aide de l'instruction Insert). Exemple L'exemple suivant crée un objet texte et l'insère dans la couche Dessin de la carte (la variable i_map_id étant un entier représentant l'identifiant d'une fenêtre Carte). Insert Into Cosmetic1 (Obj) Values ( CreateText(i_map_id, -80, 42.4, "Sales Map", 0,0,0) ) Voir également Instruction AutoLabel, Instruction Create Text, Clause Font, Instruction Insert, Instruction Update Instruction Create Text Objectif Crée un objet texte, tel qu'un titre, pour une fenêtre Carte ou Mise en page. Vous pouvez utiliser la clause Pen afin de conserver les nouveaux styles de ligne des étiquettes dans les fenêtres Mise en page. Cette procédure de modification des fenêtres Mise en page définit la version du document sur 9.5. Par conséquent, la version des fichiers MIF comprenant des objets texte avec une ligne d'étiquette et une clause Pen sera définie sur 950. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Create Text [ Into { Window window_id | Variable var_name } ] text_string ( x1, y1 ) ( x2, y2 ) [ Font... ] [ Label Line { Simple | Arrow } ( label_x, label_y ) Pen (pen_expr) ] [ Spacing { 1.0 | 1.5 | 2.0 } ] [ Justify { Left | Center | Right } ] [ Angle text_angle ] window_id est un identifiant de fenêtre entier correspondant à une fenêtre Carte ou Mise en page. Référence 253 Instruction Create Text var_name est le nom d'une variable objet. text_string définit la chaîne (255 caractères maximum) qui constituera l'objet texte. Pour créer un objet texte de plusieurs lignes, ajoutez l'appel de fonction Chr$(10) à la chaîne. x1, y1 sont des coordonnées à virgule flottante définissant un coin de la zone rectangulaire remplie par le texte. x2, y2 définissent le coin opposé de la zone de texte. La clause Font spécifie un style de texte. La taille en points de la police n'est pas prise en compte lorsque l'objet texte est créé dans une fenêtre Carte, voir ci-dessous. label_x, label_y définissent l'emplacement d'ancrage de la ligne d'étiquette de l'objet texte. Pen indique les paramètres de la clause Pen relatifs aux renvois créés dans la fenêtre Mise en page. text_angle est une valeur à virgule flottante indiquant l'angle de rotation de l'objet texte (en degrés). Exemple Lorsqu'un utilisateur crée une ligne d'étiquette dans une fenêtre Mise en page, la clause Create Text Label Line Pen est appelée et la version du document est définie sur 950 : !Workspace !Version 950 !Charset WindowsLatin1 Open Table "Data\Introductory_Data\World\WORLD" As WORLD Interactive Map From WORLD Position (0.0520833,0.0520833) Units "in" Width 6.625 Units "in" Height 4.34375 Units "in" Set Window FrontWindow() Set Map CoordSys Earth Projection 1, 104 Center (35.204159,-25.3575215) Zoom 18063.92971 Units "mi" Preserve Zoom Display Zoom Distance Units "mi" Area Units "sq mi" XY Units "degree" Set Map Layer 1 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) Description Les paramètres x et y utilisent le système de coordonnées en cours dans MapBasic. Par défaut, MapBasic utilise un système de coordonnées Longitude/latitude. L'instruction Set CoordSys peut cependant reconfigurer MapBasic de manière à ce qu'il utilise un autre système de coordonnées. Si vous devez créer des objets au niveau d'une fenêtre Mise en page, vous devez d'abord émettre une instruction Set CoordSys Layout. Les arguments x1, y1, x2 et y2 définissent une zone rectangulaire. Lorsque vous créez un texte dans une fenêtre Carte, le texte remplit la zone rectangulaire, ce qui détermine la hauteur de texte. La taille en points définie dans la clause Font n'est pas prise en compte. Dans une fenêtre Mise en page, le texte est tracé conformément à la taille en points définie dans la clause Font. Le coin supérieur gauche du texte est situé à l'emplacement (x1, y1). Les arguments (x2, y2) ne sont pas pris en compte. 254 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Instruction AutoLabel, Fonction CreateText( ) , Clause Font, Instruction Insert, Instruction Update Fonction CurDate( ) Objectif Renvoie la date au format AAAAMMJJ. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CurDate( ) Valeur renvoyée Date Description La fonction Curdate( ) renvoie une valeur date représentant la date actuelle. Le format sera toujours AAAAMMJJ. Pour modifier la valeur de la chaîne conformément au format du système local, utilisez la Fonction FormatDate$( ) ou la Fonction Str$( ). Exemple Dim d_today As Date d_today = CurDate( ) Voir également Fonction CurDateTime( ), Fonction CurTime(), Fonction Day( ), Fonction Format$( ), Fonction Month( ), Fonction StringToDate( ), Fonction Timer( ), Fonction Weekday( ), Fonction Year( ) Fonction CurDateTime( ) Objectif Renvoie la date et l'heure actuelles. Vous pouvez accéder aux valeurs Date et Time via la Fonction GetDate( ) et la Fonction GetTime(). Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CurDateTime() Valeur renvoyée DateTime, qui correspond à une valeur entière sur 9 octets : 4 octets pour la date et 5 octets pour l'heure. Les 5 octets pour l'heure comprennent 2 octets pour les millisecondes, 1 octet pour les secondes, 1 octet pour les minutes et 1 octet pour les heures. Référence 255 Fonction CurrentBorderPen( ) Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. dim X as datetime X = CurDateTime( ) Print X Voir également Fonction Day( ), Fonction Format$( ), Fonction Month( ), Fonction StringToDate( ), Fonction Timer( ), Fonction Weekday( ), Fonction Year( ), Fonction CurDate( ) Fonction CurrentBorderPen( ) Objectif Renvoie le style de ligne actuellement utilisé pour tracer les bordures. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CurrentBorderPen( ) Valeur renvoyée Pen Description La fonction CurrentBorderPen( ) renvoie le style de ligne utilisé pour tracer les bordures. MapInfo Professional attribue le style défini à la bordure des objets région créés par l'utilisateur. Si un programme MapBasic crée un objet à l'aide de l'instruction Create Region, mais que celle-ci n'inclut aucune clause Pen, l'objet utilise le style actuellement défini. La valeur renvoyée peut être attribuée à une variable Pen ou peut être utilisée comme paramètre d'une instruction basée sur une valeur Pen (telle que l'instruction Set Map). Pour extraire des attributs spécifiques du style de ligne (tels que la couleur), appelez la fonction StyleAttr( ). Pour plus d'informations sur les paramètres Pen, reportez-vous à la section Clause Pen. Exemple Dim p_user_pen As Pen p_user_pen = CurrentBorderPen( ) Voir également Fonction CurrentPen( ), Clause Pen, Instruction Set Style, Fonction StyleAttr( ) Fonction CurrentBrush( ) Objectif Renvoie le style (de trame) Brush actuellement utilisé. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. 256 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Syntaxe CurrentBrush( ) Valeur renvoyée Valeur de remplissage (Brush) Description La fonction CurrentBrush( ) renvoie le style Brush utilisé. Il s'agit du style de trame qui apparaît dans la boîte de dialogue Options > Style polygone. MapInfo Professional attribue la valeur Brush définie à tous les objets remplis (ellipses, rectangles, rectangles arrondis ou régions) créés par l'utilisateur. Si un programme MapBasic crée un objet rempli à l'aide de l'instruction Create Region, mais que cette dernière n'inclut aucuneclause Brush, la valeur Brush définie est attribuée à l'objet. La valeur renvoyée de la fonction CurrentBrush( ) peut être attribuée à une variable Brush ou utilisée comme paramètre d'une instruction basée sur une valeur Brush (telle que l'instruction Set Map ou l'instruction Shade). Pour extraire des attributs Brush (tels que la couleur), appelez la fonction StyleAttr( ). Pour plus de détails sur les paramètres Brush, reportez-vous à la section Clause Brush. Exemple Dim b_current_fill As Brush b_current_fill = CurrentBrush( ) Voir également Clause Brush, Fonction MakeBrush( ), Instruction Set Style, Fonction StyleAttr( ) Fonction CurrentFont( ) Objectif Renvoie le style de police actuellement utilisé par les fenêtres Carte et Mise en page. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CurrentFont( ) Valeur renvoyée Police Description La fonction CurrentFont( ) renvoie le style de police utilisé. Ce style correspond au style de texte qui apparaît dans la boîte de dialogue Options > Style texte lorsque la fenêtre active est une fenêtre Carte ou Mise en page. MapInfo Professional attribue la police définie à tous les objets texte créés par Référence 257 Fonction CurrentLinePen( ) l'utilisateur. Si un programme MapBasic crée un objet texte via l'instruction Create Text, mais que cette dernière n'inclut aucune clause Font, la police définie est attribuée à l'objet. La valeur renvoyée de la fonction CurrentFont( ) peut être attribuée à une variable de police ou utilisée comme paramètre d'une instruction basée sur une police (telle que l'instruction Set Legend). Pour extraire des attributs spécifiques du style de police (tels que la couleur), appelez la fonction StyleAttr( ). Pour plus d'informations sur les paramètres de police, reportez-vous à la section Clause Font. Exemple Dim f_user_text As Font f_user_text = CurrentFont( ) Voir également Clause Font, Fonction MakeFont( ), Instruction Set Style, Fonction StyleAttr( ) Fonction CurrentLinePen( ) Objectif Renvoie le style (de ligne) Pen actuellement utilisé. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CurrentLinePen( ) Valeur renvoyée Pen Description La fonction CurrentLinePen( ) renvoie le style de ligne utilisé. MapInfo Professional attribue le style défini aux objets ligne ou polyligne créés par l'utilisateur. Si un programme MapBasic crée un objet à l'aide de l'instruction Create Line, mais que celle-ci n'inclut aucune clause Pen, l'objet utilise le style de ligne défini. La valeur renvoyée peut être attribuée à une variable Pen ou peut être utilisée comme paramètre d'une instruction basée sur une valeur Pen (telle que l'instruction Set Map). Pour extraire des attributs spécifiques du style de ligne (tels que la couleur), appelez la fonction StyleAttr( ). Pour plus d'informations sur les paramètres Pen, reportez-vous à la section Clause Pen. Exemple Dim p_user_pen As Pen p_user_pen = CurrentPen( ) Voir également Fonction CurrentBorderPen( ), Clause Pen, Instruction Set Style, Fonction StyleAttr( ) 258 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction CurrentPen( ) Objectif Renvoie le style (de ligne) Pen actuellement utilisé et sélectionne le même style pour les bordures et les lignes. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CurrentPen( ) Valeur renvoyée Pen Description La fonction CurrentPen( ) renvoie le style de ligne utilisé. MapInfo Professional attribue le style défini aux objets ligne ou polyligne créés par l'utilisateur. Si un programme MapBasic crée un objet à l'aide de l'instruction Create Line, mais que celle-ci n'inclut aucune clause Pen, l'objet utilise le style de ligne défini. Si vous souhaitez utiliser le style de ligne défini sans reconfigurer le style de bordure, utilisez la fonction CurrentLinePen( ). La valeur renvoyée peut être attribuée à une variable Pen ou utilisée comme paramètre d'une instruction basée sur une valeur Pen (telle que l'instruction Set Map). Pour extraire des attributs spécifiques du style de ligne (tels que la couleur), appelez la fonction StyleAttr( ). Pour plus d'informations sur les paramètres Pen, reportez-vous à la section Clause Pen. Exemple Dim p_user_pen As Pen p_user_pen = CurrentPen( ) Voir également Fonction MakePen( ), Clause Pen, Instruction Set Style, Fonction StyleAttr( ) Fonction CurrentSymbol( ) Objectif Renvoie le style de symbole actuellement utilisé. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CurrentSymbol( ) Valeur renvoyée Symboles Référence 259 Fonction CurTime( ) Description La fonction CurrentSymbol( ) renvoie le style de symbole utilisé. Il s'agit du style qui apparaît dans la boîte de dialogue Options > Style symbole. MapInfo Professional attribue le style de symbole défini aux objets point créés par l'utilisateur. Si un programme MapBasic crée un objet point via l'instruction Create Point, mais que celle-ci n'inclut aucune clause Symbol, la valeur définie est attribuée à l'objet. La valeur renvoyée de la fonction CurrentSymbol( ) peut être attribuée à une variable symbole ou utilisée comme paramètre d'une instruction basée sur une valeur de symbole (telle que l'instruction Set Map ou l'instruction Shade). Pour extraire des attributs spécifiques du style de symbole (tels que la couleur), appelez la fonction StyleAttr( ). Pour plus d'informations sur les paramètres de symbole, reportez-vous à la section Clause Symbol. Exemple Dim sym_user_symbol As Symbol sym_user_symbol = CurrentSymbol( ) Voir également Fonction MakeSymbol( ), Instruction Set Style, Fonction StyleAttr( ), Clause Symbol Fonction CurTime( ) Objectif Renvoie l'heure en cours en heures, minutes, secondes et millisecondes. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe CurTime( ) Valeur renvoyée Durée Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. dim Y as time Y = CurTime() Print Y Voir également Fonction Day( ), Fonction Format$( ), Fonction Month( ), Fonction StringToDate( ), Fonction Timer( ), Fonction Weekday( ), Fonction Year( ), Fonction CurDate( ), Fonction CurDateTime( ) 260 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction DateWindow( ) Objectif Renvoie le paramètre de fenêtre de date actuelle sous forme de nombre entier compris entre 0 et 99, ou (-1) si le fenêtrage des dates est désactivé. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe DateWindow( context ) context est un entier court qui peut être DATE_WIN_CURPROG (2) ou DATE_WIN_SESSION (1). Description Cela dépend du contexte spécifié. Si context est défini sur DATE_WIN_SESSION (1), le paramètre de la session actuelle est renvoyé. Si context est défini sur DATE_WIN_CURPROG (2), le paramètre local du programme MapBasic actuel est renvoyé. Si aucun programme n'est exécuté, le paramètre de la session est renvoyé. Exemple Dans l'exemple suivant, la variable Date1 = 19890120, Date2 = 20101203 et MyYear = 1990. DIM Date1, Date2 as Date DIM MyYear As Integer Set Format Date "US" Set Date Window 75 Date1 = StringToDate("1/20/89") Date2 = StringToDate("12/3/10") MyYear = Year("12/30/90") Voir également Instruction Set Date Window( ) Fonction Day( ) Objectif Renvoie le composant jour d'une expression de date. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Day( date_expr ) date_expr est une expression de date. Valeur renvoyée Entier court compris entre 1 et 31 Référence 261 Instruction DDEExecute Description La fonction Day( ) renvoie une valeur entière comprise entre 1 et 31, qui représente le composant jour du mois de la date spécifiée. Par exemple, si la date spécifiée est le 12/17/93, la fonction Day( ) renvoie la valeur 17. Exemple Dim day_var As SmallInt, date_var As Date date_var = StringToDate("05/23/1985") day_var = Day(date_var) Voir également Fonction CurDate( ), Fonction Day( ), Fonction Minute( ), Fonction Month( ), Fonction Second( ), Fonction Timer( ), Fonction Weekday( ), Fonction Year( ) Instruction DDEExecute Objectif Émet une commande à travers un canal DDE ouvert. Syntaxe DDEExecute channel, command channel est un nombre entier de canal renvoyé par la fonction DDEInitiate( ). command est une chaîne représentant une commande à exécuter par le serveur DDE. Description L'instruction DDEExecute envoie une chaîne de commande à l'application serveur dans une conversation DDE. Le paramètre de canal doit correspondre au numéro d'un canal ouvert via l'appel d'une fonction DDEInitiate( ). La chaîne de paramètre de commande doit représenter une commande que le serveur DDE (l'application passive) est en mesure d'exécuter. Différentes applications ont diverses exigences concernant ce qui constitue une commande valide. Pour en savoir plus sur le format de commande pour une application particulière, reportez-vous à la documentation de cette application. Conditions d'erreur L'erreur ERR_CMD_NOT_SUPPORTED (642) est générée si l'application n'est pas exécutée sous Windows. L'erreur ERR_NO_RESPONSE_FROM_APP (697) est générée si l'application serveur ne répond pas. Exemple Dans MapBasic, vous pouvez ouvrir un canal DDE avec Microsoft Excel en tant qu'application serveur. Si la conversation indique la rubrique « System », vous pouvez utiliser l'instruction DDEExecute pour 262 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z envoyer une chaîne de commande à Excel. Excel peut exécuter la commande, sous réserve que la chaîne de commande soit équivalente à une fonction de macro Excel et comprise entre crochets. L'exemple ci-dessous ordonne à Excel d'ouvrir la feuille de calcul TRIAL.XLS. Dim i_chan As Integer i_chan = DDEInitiate("Excel", "System") DDEExecute i_chan, "[OPEN(""C:\DATA\TRIAL.XLS"")]" Voir également Fonction DDEInitiate( ), Instruction DDEPoke , Fonction DDERequest$( ) Fonction DDEInitiate( ) Objectif Initialise une nouvelle conversation DDE, et renvoie le numéro de canal associé. Syntaxe DDEInitiate( appl_name, topic_name ) appl_name est une chaîne représentant un nom d'application (par exemple, « MapInfo »). topic_name est une chaîne représentant un nom de rubrique (par exemple : « Système »). Valeur renvoyée Entier Description La fonction DDEInitiate( ) initialise une conversation DDE (Dynamic Data Exchange) et renvoie le numéro identifiant le canal de cette conversation. Une conversation DDE permet à deux applications Microsoft Windows d'échanger des informations. Une fois qu'une conversation DDE a été initialisée, un programme MapBasic peut émettre des appels de la fonction DDERequest$( ) (afin de lire les informations provenant de l'autre application) et des instructions DDEPoke (pour écrire des informations dans l'autre application). Lorsqu'une conversation DDE a accompli toutes ses tâches et n'est plus nécessaire, le programme termine la conversation via l'instruction DDETerminate ou l'instruction DDETerminate All. Remarque: Les conversations DDE sont propres à Microsoft Windows. Par conséquent, MapBasic génère une erreur si un programme émet des appels de fonction liés aux DDE et s'exécute sur une plate-forme autre que Windows. Pour définir la plate-forme matérielle actuelle lors de l'exécution, appelez la fonction SystemInfo( ). Le paramètre appl_name identifie une application Windows. Par exemple, pour initialiser une conversation avec Microsoft Excel, vous devez indiquer le paramètre appl_name « Excel ». L'application nommée par le paramètre appl_name doit déjà être en cours d'exécution avant de pouvoir initialiser une conversation DDE. L'instruction Run Program de MapBasic vous permet d'exécuter une autre application Windows. Toutes les applications Windows prennent en charge les conversations DDE. Pour savoir si une application prend en charge les conversations DDE, reportez-vous à la documentation de cette application. Référence 263 Fonction DDEInitiate( ) Le paramètre topic_name est une chaîne qui identifie la rubrique de la conversation. Chaque application possède son propre ensemble de noms de rubriques valides. Pour voir la liste des rubriques prises en charge par une application particulière, reportez-vous à la documentation de cette application. Dans beaucoup d'applications, le nom d'un fichier en cours d'utilisation est un nom de rubrique valide. Ainsi, si Excel utilise le fichier de feuille de calcul ORDERS.XLS, vous pouvez émettre les instructions MapBasic suivantes : Dim i_chan As Integer i_chan = DDEInitiate("Excel", "C:\ORDERS.XLS") pour initialiser une conversation DDE avec cette feuille de calcul Excel. Plusieurs applications prennent en charge une rubrique spéciale appelée « Système ». Si vous initialisez une conversation via la rubrique « Système », vous pouvez alors utiliser la fonction DDERequest$( ) pour obtenir une liste des chaînes que l'application reconnaît comme noms de rubriques valides (par exemple, une liste des fichiers en cours d'utilisation). Lorsque vous connaissez les rubriques disponibles, vous pouvez initialiser une autre conversation DDE avec un document particulier. Reportez-vous à l'exemple ci-dessous. Le tableau suivant répertorie quelques exemples de noms d'applications et de rubriques que vous pouvez utiliser avec la fonction DDEInitiate( ). Appel DDEInitiate( ) Nature de la conversation DDEInitiate("Excel", "System") Les appels de la fonction DDERequest$( )peuvent renvoyer des informations système Excel, comme une liste des noms de feuilles de calcul en cours d'utilisation. L'instruction DDEExecute peut envoyer des commandes à exécuter par Excel. DDEInitiate("Excel", wks) Si wksest le nom d'un document Excel en cours d'utilisation, les instructions DDEPokepeuvent stocker des valeurs dans la feuille de calcul, et les appels de la fonction DDERequest$( ) peuvent lire des informations provenant de la feuille de calcul. DDEInitiate("MapInfo", "System") Les appels de la fonction DDERequest$( ) peuvent fournir des informations système, comme une liste des applications MapBasic en cours d'utilisation par MapInfo Professional. DDEInitiate("MapInfo" mbx) Simbx est le nom d'une application MapBasic en cours d'utilisation, l'instruction DDEPoke peut affecter des valeurs aux variables globales dans l'application indiquée, et les appels de la fonction DDERequest$( ) peuvent lire les valeurs actuelles de variables globales. Lorsqu'un programme MapBasic émet un appel de fonction DDEInitiate( ), il est reconnu en tant que « client » dans la conversation DDE. L'autre application Windows est reconnue en tant que « serveur ». Dans une conversation particulière, le client est toujours la partie active, le serveur répondant simplement 264 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z aux actions entreprises par le client. Un programme MapBasic peut prendre en charge plusieurs conversations à la fois, n'étant limité que par la mémoire et les ressources système. Une application MapBasic peut agir en tant que client dans une conversation (en émettant des instructions commeDDEInitiate( ), etc.) tout en agissant en tant que serveur dans une autre (en définissant une procédure RemoteMsgHandler). Conditions d'erreur L'erreur ERR_CMD_NOT_SUPPORTED (642) est générée si l'application n'est pas exécutée sous Windows. L'erreur ERR_INVALID_CHANNEL (696) est générée si le numéro de canal indiqué n'est pas valide. Exemple L'exemple suivant présente une tentative d'initialisation d'une conversation DDE avec Microsoft Excel, version 4 ou ultérieure. Le but est de stocker un simple message texte (« Hello from MapInfo! ») dans la première cellule de la feuille de calcul utilisée par Excel, mais uniquement si cette cellule est vide. Si la première cellule n'est pas vide, son contenu ne sera pas écrasé. Dim chan_num, tab_marker As Integer Dim topiclist, topicname, cell As String chan_num = DDEInitiate("EXCEL", "System") If chan_num = 0 Then Note "Excel is not responding to DDE conversation." End Program End If ' Get a list of Excel's valid topics topiclist = DDERequest$(chan_num, "topics") ' ' ' ' ' ' ' ' ' ' ' ' If Excel 4 is running, topiclist might look like: ": Sheet1 System" (if spreadsheet is still "unnamed"),or like: ": C:Orders.XLS Sheet1 System" If Excel 5 is running, topiclist might look like: "[Book1]Sheet1 [Book2]Sheet2 ..." Next, extract just the first topic (for example,"Sheet1") by extracting the text between the 1st & 2nd tabs; or, in the case of Excel 5, by extracting the text that appears before the first tab. If Left$(topiclist, 1) = ":" Then ' ...then it's Excel 4. tab_marker = InStr(3, topiclist, Chr$(9) ) If tab_marker = 0 Then Note "No Excel documents in use! Stopping." End Program End If topicname = Mid$(topiclist, 3, tab_marker - 3) Else ' ... assume it's Excel 5. tab_marker = Instr(1, topiclist, Chr$(9) ) topicname = Left$( topiclist, tab_marker - 1) End If Référence 265 Instruction DDEPoke ' open a channel to the specific document ' (e.g., "Sheet1") DDETerminate chan_num chan_num = DDEInitiate("Excel", topicname) If chan_num = 0 Then Note "Problem communicating with " + topicname End Program End If ' Let's examine the 1st cell in Excel. ' If cell is blank, put a message in the cell. ' If cell isn't blank, don't alter it ' just display cell contents in a MapBasic NOTE. ' Note that a "Blank cell" gets returned as a ' carriage-return line-feed sequence: ' Chr$(13) + Chr$(10). cell = DDERequest$( chan_num, "R1C1" ) If cell <> Chr$(13) + Chr$(10) Then Note "Message not sent; cell already contains:" + cell Else DDEPoke chan_num, "R1C1", "Hello from MapInfo!" Note "Message sent to Excel,"+topicname+ ",R1C1." End If DDETerminateAll Remarque: Cet exemple ne prévoit pas tous les obstacles possibles. Par exemple, Excel peut être en train d'éditer un graphique (par exemple, Chart1) au lieu d'une feuille de calcul, auquel cas nous serons dans l'impossibilité de référencer la cellule R1C1. Voir également Instruction DDEExecute, Instruction DDEPoke, Fonction DDERequest$( ), Instruction DDETerminate , Instruction DDETerminate All Instruction DDEPoke Objectif Envoie une valeur de donnée à un élément dans une application serveur DDE. Syntaxe DDEPoke channel, itemname, data channelest un nombre entier de canal renvoyé par la fonction DDEInitiate( ). itemname est une valeur de chaîne représentant le nom d'un élément. data est une chaîne de caractères à envoyer à l'élément nommé dans le paramètre itemname. Description L'instruction DDEPoke stocke la chaîne texte de données dans l'élément DDE indiqué. Le paramètre de canal doit correspondre au numéro d'un canal ouvert via la fonction DDEInitiate( ). 266 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Le paramètre itemname doit identifier un élément approprié pour le canal indiqué. Les différentes applications DDE prennent en charge différents noms d'élément. Pour connaître les noms d'élément pris en charge par une application Windows particulière, reportez-vous à la documentation de cette application. Dans une conversation DDE avec Excel, une chaîne au format R1C1(pour Row 1, Column 1 - Ligne 1, Colonne 1) est un nom d'élément valide. Dans une conversation DDE avec une autre application MapBasic, le nom de la variable globale dans l'application est un nom d'élément valide. Conditions d'erreur L'erreur ERR_CMD_NOT_SUPPORTED (642) est générée si l'application n'est pas exécutée sous Windows. L'erreur ERR_INVALID_CHANNEL (696) est générée si le numéro de canal indiqué n'est pas valide. Exemple Si Excel est déjà en cours d'exécution, l'exemple suivant stocke un simple message (« Hello from MapInfo! ») dans la première cellule d'une feuille de calcul Excel. Dim i_chan_num As Integer i_chan_num = DDEInitiate("EXCEL", "Sheet1") DDEPoke i_chan_num, "R1C1", "Hello from MapInfo!" L'exemple suivant suppose qu'une autre application MapBasic est en cours d'utilisation (Dispatch.mbx) et que l'application Dispatch a une variable globale appelée Address. L'exemple ci-dessous utilise l'instruction DDEPoke pour modifier la variable globale Address. i_chan_num = DDEInitiate("MapInfo","C:\DISPATCH.MBX") DDEPoke i_chan_num, "Address", "23 Main St." Voir également Instruction DDEExecute, Fonction DDEInitiate( ), Fonction DDERequest$( ) Fonction DDERequest$( ) Objectif Renvoie une valeur de données obtenue à partir d'une conversation DDE. Syntaxe DDERequest$( channel, itemname ) channelest un nombre entier de canal renvoyé par la fonction DDEInitiate( ). itemname est une chaîne représentant le nom d'un élément dans l'application serveur. Valeur renvoyée Chaîne Référence 267 Fonction DDERequest$( ) Description La fonction DDERequest$( ) renvoie une chaîne d'informations obtenue via une conversation DDE. Si la requête n'est pas concluante, la fonction DDERequest$( ) renvoie une chaîne vide. Le paramètre de canal doit correspondre au numéro d'un canal ouvert via la fonction DDEInitiate( ). Le paramètre itemname doit identifier un élément approprié pour le canal indiqué. Les différentes applications DDE prennent en charge différents noms d'élément. Pour connaître les noms d'élément pris en charge par une application Windows particulière, reportez-vous à la documentation de cette application. Le tableau suivant répertorie quelques combinaisons rubrique-élément pouvant être utilisées lorsqu'une conversation DDE est menée avec Microsoft Excel en tant que serveur : Nom de rubrique Noms d'élément à utiliser avec DDERequest$( ) « Système » « Systèmes » renvoie une liste des noms d'élément acceptés sous la rubrique « Système » ; « Rubriques » renvoie une liste des noms de rubrique DDE reconnus par Excel, notamment les noms des feuilles de calcul ouvertes ; « Formats » renvoie une liste des formats de Presse-papiers reconnus par Excel (par exemple, TEXT BITMAP …). wks (nom d'une feuille de calcul en cours d'utilisation) Une chaîne au format R1C1 (pour Row 1, Column 1 - Ligne 1, Colonne 1) renvoie le contenu de cette cellule. Remarque: Via la fonction DDERequest$( ), une application MapBasic peut observer les valeurs en cours de variables globales dans une autre application MapBasic. Le tableau suivant répertorie les combinaisons rubrique-élément pouvant être utilisées lorsqu'une conversation DDE est menée avec MapInfo Professional en tant que serveur. Nom de rubrique Noms d'élément à utiliser avec DDERequest$( ) « Système » « Systèmes » renvoie une liste des noms d'élément acceptés sous la rubrique « Système » ; « Rubriques » renvoie une liste des noms de rubrique DDE reconnus par MapInfo Professional, notamment le nom de toutes les applications MapBasic en cours d'utilisation ; « Formats » renvoie une liste des formats de Presse-papiers reconnus par MapInfo Professional (TEXT) ; « Version » renvoie le numéro de version de MapInfo, multiplié par 100. mbx (nom du .MBX en cours « {items} » renvoie une liste des noms de variables globales utilisés par l'application MapBasic indiquée. L'indication du nom de variable globale d'utilisation) permet à la fonction DDERequest$( ) de renvoyer la valeur de la variable. 268 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Conditions d'erreur L'erreur ERR_CMD_NOT_SUPPORTED (642) est générée si l'application n'est pas exécutée sous Windows. L'erreur ERR_INVALID_CHANNEL (696) est générée si le numéro de canal indiqué n'est pas valide. L'erreur ERR_CANT_INITIATE_LINK (698) est générée si MapBasic ne peut pas créer de lien vers la rubrique. Exemple Dans l'exemple suivant, la fonction DDERequest$( ) est utilisée pour obtenir le contenu actuel de la première cellule d'une feuille de calcul Excel. Cet exemple ne fonctionne que si Excel est déjà en cours d'exécution. Dim i_chan_num As Integer Dim s_cell As String i_chan_num = DDEInitiate("EXCEL", "Sheet1") s_cell = DDERequest$(i_chan_num, "R1C1") L'exemple suivant suppose qu'une autre application MapBasic est en cours d'utilisation (Dispatch) et que l'application Dispatch a une variable globale appelée Address. Dans l'exemple ci-dessous, la fonction DDERequest$( ) est utilisée pour obtenir la valeur actuelle de la variable globale Address. Dim i_chan_num As Integer, s_addr_copy As String i_chan_num = DDEInitiate("MapInfo","C:\DISPATCH.MBX") s_addr_copy = DDERequest$(i_chan_num, "Address") Voir également Fonction DDEInitiate( ) Instruction DDETerminate Objectif Ferme une conversation DDE. Syntaxe DDETerminate channel channelest un nombre entier de canal renvoyé par la fonction DDEInitiate( ). Description L'instruction DDETerminate ferme le canal DDE indiqué par le paramètre de canal. Le paramètre de canal doit correspondre au numéro de canal renvoyé par l'appel de la fonction DDEInitiate( ) (ayant initialisé la conversation). Lorsqu'une conversation DDE a accompli toutes ses tâches et n'est plus nécessaire, le programme termine la conversation via l'instruction DDETerminate ou l'instruction DDETerminate All. Remarque: Il est possible d'utiliser plusieurs applications MapBasic simultanément et chaque application peut ouvrir ses propres canaux DDE. Cependant, une application MapBasic donnée ne Référence 269 Instruction DDETerminateAll peut fermer que les canaux DDE qu'elle a ouverts. Une application MapBasic ne peut pas fermer les canaux DDE ouverts par une autre application MapBasic. Conditions d'erreur L'erreur ERR_CMD_NOT_SUPPORTED (642) est générée si l'application n'est pas exécutée sous Windows. L'erreur ERR_INVALID_CHANNEL (696) est générée si le numéro de canal indiqué n'est pas valide. Exemple DDETerminate i_chan_num Voir également Fonction DDEInitiate( ), Instruction DDETerminate All Instruction DDETerminateAll Objectif Ferme toutes les conversations DDE ouvertes par le même programme MapBasic. Syntaxe DDETerminateAll Description L'instruction DDETerminateAll ferme tous les canaux DDE ouverts par la même application MapBasic. Il est possible d'utiliser plusieurs applications MapBasic simultanément et chaque application peut ouvrir ses propres canaux DDE. Cependant, une application MapBasic donnée ne peut fermer que les canaux DDE qu'elle a ouverts. Une application MapBasic ne peut pas fermer les canaux DDE ouverts par une autre application MapBasic. Lorsqu'une conversation DDE a accompli toutes ses tâches et n'est plus nécessaire, le programme termine la conversation via l'instruction DDETerminate ou l'instruction DDETerminateAll. Conditions d'erreur L'erreur ERR_CMD_NOT_SUPPORTED (642) est générée si l'application n'est pas exécutée sous Windows. Voir également Fonction DDEInitiate( ), Instruction DDETerminate Instruction Declare Function Objectif Définit la liste des noms et paramètres d'une fonction. 270 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Restrictions Cette instruction ne peut pas être émise depuis la fenêtre MapBasic. L'accès aux fonctions externes (à l'aide de la syntaxe 2) dépend de la plate-forme. Les fichiers DLL sont accessibles uniquement par les applications exécutées sous Windows. Syntaxe 1 Declare Function fname ( [ [ ByVal ] parameter [ , parameter... ] As var_type ] [ , [ ByVal ] parameter [ , parameter... ] As var_type... ] ) As return_type fname est le nom de la fonction. parameter est le nom d'un paramètre de la fonction. var_type est un type de variable (par ex. : un entier). Les tableaux et variables Type personnalisées sont autorisés. return_type est un type de variable scalaire standard. Les tableaux et variables Type personnalisées ne sont pas autorisés. Syntaxe 2 (routines externes dans les fichiers DLL de Windows) Declare Function fname Lib "file_name" [ Alias "function_alias" ] ( [ [ ByVal ] parameter [ , parameter... ] As var_type ] [ , [ ByVal ] parameter [ , parameter... ] As var_type... ] ) As return_type fname est le nom par lequel une fonction sera appelée. file_name est le nom d'un fichier DLL de Windows. function_alias est le nom d'origine de la fonction externe. parameter est le nom d'un paramètre de la fonction. var_type est un type de données : avec les fichiers DLL de Windows, il peut s'agir d'une variable Type standard ou personnalisée. return_type est un type de variable scalaire standard. Description L'instruction Declare Function prédéclare une fonction MapBasic définie par l'utilisateur ou une fonction externe. Un programme MapBasic peut utiliser une instruction Function...End Function pour créer une fonction personnalisée. Chaque fonction définie de cette façon doit être précédée par une instruction Declare Function. Pour plus d'informations sur la création de fonctions personnalisées, reportez-vous à la section Instruction Function...End Function. Les paramètres transmis à une fonction sont transmis par référence, à moins d'inclure le mot-clé facultatif ByVal. Pour obtenir des informations sur les différences entre les paramètres par référence et par valeur, reportez-vous au Guide de l'utilisateur MapBasic. Référence 271 Instruction Declare Method Appel de fonctions externes À l'aide de la syntaxe 2 (ci-dessus), vous pouvez utiliser une instruction Declare Function pour définir une fonction externe. Une fonction externe est une fonction qui a été rédigée dans un autre langage (par exemple, C ou Pascal), et qui est stockée dans un fichier distinct. Une fois qu'une fonction externe a été déclarée, votre programme peut l'appeler comme s'il s'agissait d'une fonction MapBasic classique. Si l'instruction Declare Function déclare une fonction externe, le paramètre file_name doit indiquer le nom du fichier contenant la fonction externe. Le fichier externe doit être présent lors de l'exécution. Toute fonction externe possède un nom affecté de manière explicite. Habituellement le paramètre fname de l'instruction Declare Function correspond au nom explicite de la routine provenant du fichier externe. L'instruction Declare Function peut également inclure une clause Alias, qui vous permet d'appeler la fonction externe par le nom de votre choix. La clause Alias vous permet de remplacer le nom explicite d'une fonction externe, en cas de conflit de celui-ci avec le nom d'une fonction MapBasic classique. Si l'instruction Declare Function comprend une clause Alias, le paramètre function_alias doit correspondre au nom d'origine de la fonction externe, et le paramètre fname indique le nom par lequel MapBasic appellera la routine. Restrictions des paramètres DLL de Windows Vous pouvez transmettre une variable Type personnalisée en tant que paramètre à un fichier DLL. Cependant, le fichier DLL doit être compilé avec un ensemble de « compilation de structure » défini sur la compilation la plus compacte. Consultez le Guide de l'utilisateur MapBasic pour obtenir plus d'informations. Exemple L'exemple suivant définit une fonction personnalisée, CubeRoot, qui renvoie la racine cubique d'un nombre (celui élevé à la puissance trois). Declare Sub Main Declare Function CubeRoot(ByVal x As Float) As Float Sub Main Note Str$( CubeRoot(23) ) End Sub Function CubeRoot(ByVal x As Float) As Float CubeRoot = x ^ (1 / 3) End Function Voir également Instruction Declare Sub, Instruction Function...End Function Instruction Declare Method Objectif Définit la liste des noms et arguments d'une méthode/fonction dans un assemblage .Net, afin qu'une application MapBasic puisse appeler la fonction. Restrictions Cette instruction ne peut pas être émise depuis la fenêtre MapBasic. 272 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Syntaxe Declare Method fname Class "class_name" Lib "assembly_name" [ Alias function_alias ] ( [ [ ByVal ] parameter [ , parameter... ] As var_type ] [ , [ ByVal ] parameter [ , parameter... ] As var_type... ] ) [ As return_type ] fname est le nom par lequel une fonction sera appelée. Si la clause facultative Alias est omise, fname doit correspondre au nom réel de la méthode/fonction .Net. Cette option ne peut pas excéder 31 caractères. class_name est le nom de la classe .Net qui fournit la fonction à appeler, y compris l'espace de nom de la classe (tel que System.Windows.Forms.MessageBox). assembly_name est le nom d'un fichier d'assemblage .Net, par exemple filename.dll. Lorsque l'assemblage est chargé à partir du GAC, assembly_name doit être un nom d'assemblage complet. function_alias est le nom d'origine de la méthode/fonction .Net (nom tel que défini dans l'assemblage .Net). Remarque : intégrez la clause Alias uniquement lorsque vous souhaitez appeler la méthode par un nom différent de son nom d'origine. parameter est le nom d'un paramètre de la fonction. var_type est un type de données MapBasic, par exemple un entier. return_type est un type de variable scalaire MapBasic standard, comme un entier. Si la clause As est omise, le programme MapBasic peut appeler la méthode en tant que Sub (via l'instruction Call). Description L'instruction Declare Method permet au programme MapBasic d'appeler une méthode (fonction ou procédure) à partir d'un assemblage .Net. L'assemblage .Net peut être créé en utilisant divers langages, tels que C# ou VB.Net. Pour plus de détails sur l'appel de .Net à partir de MapBasic, reportez-vous au Guide de l'utilisateur MapBasic. Les programmes MapBasic ne peuvent appeler que les méthodes ou fonctions .Net déclarées comme statiques. (Le langage VB.NET fait référence à ces fonctions en tant que « fonctions partagées », alors que le langage C# utilise le terme « méthodes statiques ».) Au moment de l'exécution, si assembly_name indique un nom d'assemblage complet et que l'assemblage est enregistré dans le Global Assembly Cache (GAC), MapInfo Professional charge l'assemblage à partir du GAC. Sinon, l'assemblage est chargé à partir du même répertoire que le fichier .MBX (dans ce cas, assembly_name doit être un nom de fichier, tel que filename.dll). Ainsi, vous pouvez faire enregistrer votre assemblage dans le GAC, mais vous n'y êtes pas contraint. Exemples Voici un exemple simple d'une classe C# fournissant une méthode statique : namespace MyProduct { class MyWrapper { public static int ShowMessage(string s) { System.Windows.Forms.MessageBox.Show(s); Référence 273 Instruction Declare Sub return 0; } } } Dans le langage VB.Net, la définition de classe peut se présenter comme suit. Namespace MyProduct Public Class MyWrapper Public Shared Function ShowMessage(ByVal s As String) As Integer System.Windows.Forms.MessageBox.Show(s) Return 0 End Function End Class End Namespace Un programme MapBasic pourrait appeler la méthode avec la syntaxe suivante : Declare Method ShowMessage Class "MyProduct.MyWrapper" Lib "MyAssembly.DLL" (ByVal str As String) As Integer . . . Dim retval As Integer retval = ShowMessage("Here I am") L'exemple suivant présente la façon dont déclarer des méthodes dans les assemblages enregistrés dans le GAC. Lorsqu'un assemblage est chargé à partir du GAC, la clause Lib doit indiquer un nom d'assemblage complet. Il existe divers utilitaires qui peuvent vous aider à identifier un nom d'assemblage complet, notamment l'utilitaire gacutil fourni par Microsoft dans Visual Studio. ' Declare a method from the System.Windows.Forms.dll assembly: Declare Method Show Class "System.Windows.Forms.MessageBox" Lib "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" (ByVal str As String, ByVal caption As String) ' Declare a method from the mscorlib.dll assembly: Declare Method Move Class "System.IO.File" Lib "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" (ByVal sourceFileName As String, ByVal destFileName As String) ' Display a .Net MessageBox dialog box with both a message and a caption: Call Show("Table update is complete.", "Tool name") ' Call the .Net Move method to move a file Call Move("C:\work\pending\entries.txt", "C:\work\finished\entries.txt") Instruction Declare Sub Objectif Identifie la liste des noms et paramètres d'une sous-procédure. Restrictions Cette instruction ne peut pas être émise depuis la fenêtre MapBasic. L'accès aux fonctions externes (en utilisant la syntaxe 2) dépend de la plate-forme. Les fichiers DLL sont accessibles uniquement par les applications exécutées sous Windows. 274 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Syntaxe 1 Declare Sub sub_proc [ ( [ ByVal ] parameter [ , parameter... ] As var_type [ , ... ] ) ] sub_proc est le nom d'une sous-procédure. parameter est le nom d'un paramètre de sous-procédure. var_type est une variable Type de données standard ou personnalisée. Syntaxe 2 (routines externes dans les fichiers DLL de Windows) Declare Sub sub_proc Lib "file_name" [ Alias "sub_alias" ] [ ( [ ByVal ] parameter [ , parameter... ] As var_type [ , ... ] ) ] sub_proc est le nom par lequel une routine externe sera appelée. file_name est une chaîne ; le nom du fichier DLL. sub_alias est le nom d'origine d'une routine externe. parameter est le nom d'un paramètre de sous-procédure. var_type est un type de données : avec les fichiers DLL de Windows, il peut s'agir d'une variable Type standard ou personnalisée. Description L'instruction Declare Sub établit une liste des noms et paramètres d'une sous-procédure. En général, chaque instruction Declare Sub correspond à une sous-procédure qui apparaît par la suite dans le même programme. Un programme MapBasic peut utiliser une instruction Sub...End Sub pour créer une procédure. Chaque procédure définie de cette façon doit être précédée par une instruction Declare Sub. Pour plus d'informations sur la création de procédures, reportez-vous à la section Instruction Sub...End Sub. Les paramètres transmis à une procédure le sont par référence à moins d'inclure le mot-clé facultatif ByVal. Appel de routines externes À l'aide de la syntaxe 2 (ci-dessus), vous pouvez utiliser une instruction Declare Sub pour définir une routine externe. Une routine externe est une routine qui a été rédigée dans un autre langage (par exemple : C ou Pascal), et qui est stockée dans un fichier distinct. Une fois que vous avez déclaré une routine externe, votre programme peut l'appeler comme s'il s'agissait d'une procédure MapBasic classique. Si l'instruction Declare Sub déclare une routine externe, le paramètre file_name doit indiquer le nom du fichier contenant la routine. Le fichier doit être présent lors de l'exécution. Toute routine externe possède un nom affecté de manière explicite. Habituellement, le paramètre sub_proc de l'instruction Declare Sub correspond au nom explicite de la routine provenant du fichier externe. L'instruction Declare Sub peut inclure une clause Alias, qui vous permet d'appeler la routine externe par le nom de votre choix. La clause Alias vous permet de remplacer le nom explicite de la routine externe, en cas de conflit de celui-ci avec le nom d'une fonction MapBasic classique. Référence 275 Instruction Define Si l'instruction Declare Sub comprend une clause Alias, le paramètre sub_alias doit correspondre au nom d'origine de la routine externe, et le paramètre sub_proc indique le nom par lequel MapBasic appellera la routine. Vous pouvez transmettre une variable Type personnalisée en tant que paramètre à un fichier DLL. Cependant, le fichier DLL doit être compilé avec un ensemble de « compilation de structure » défini sur la compilation la plus compacte. Pour des informations sur les variables Type personnalisées, reportez-vous à la section Instruction Type. Exemple Declare Sub Main Declare Sub Cube(ByVal original As Float, cubed As Float) Sub Main Dim x, result As Float Call Cube(2, result) ' result now contains the value: 8 (2 x 2 x 2) x = 1 Call Cube(x + 2, result) ' result now contains the value: 27 (3 x 3 x 3) End Sub Sub Cube (ByVal original As Float, cubed As Float) ' ' Cube the "original" parameter value, and store ' the result in the "cubed" parameter. ' cubed = original ^ 3 End Sub Voir également Instruction Call, Instruction Sub...End Sub Instruction Define Objectif Définit un mot-clé personnalisé avec une valeur constante. Restrictions Vous ne pouvez pas exécuter d'instruction Define par le biais de la fenêtre MapBasic. Syntaxe Define identifier definition identifier est un identifiant contenant jusqu'à 31 caractères, commençant par une lettre ou un caractère de soulignement (_). definition est le texte que MapBasic doit remplacer pour chaque occurrence d'identifiant. 276 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description L'instruction Define définit un nouvel identifiant. Pour le reste du programme, chaque fois que MapBasic rencontre le même identifiant, la définition d'origine de celui-ci sera remplacée. Pour obtenir des exemples d'instructions Define, consultez le fichier de définitions MapBasic standard, MAPBASIC.DEF. Un identifiant défini via une instruction Define ne respecte pas la casse. Si vous utilisez une instruction Define pour définir le mot-clé FOO, votre programme peut désigner cet identifiant par Foo ou foo. Vous ne pouvez pas réutiliser l'instruction Define pour redéfinir un mot-clé MapBasic, tel que Set ou Create. Pour obtenir la liste des mots-clés réservés, Instruction Dim. Exemples Votre application devra peut-être faire référence à la valeur mathématique, connue sous le nom de Pi, dont la valeur est approximativement de 3,141593. Par conséquent, vous pouvez utiliser la définition suivante : Define PI 3.141593 Après cette définition, vous pourriez simplement taper PI chaque fois que vous devez faire référence à la valeur 3,141593. La partie définition d'une instruction Define peut comprendre des guillemets. Par exemple, l'instruction suivante crée un mot-clé dont la définition comprend des guillemets : Define FILE_NAME "World.tab" L'instruction Define suivante fait partie du fichier de définitions standard, MAPBASIC.DEF. Cette instruction Define représente un moyen simple d'effacer le contenu de la fenêtre Message : Define CLS Print Chr$(12) Fonction DeformatNumber$( ) Objectif Supprime le formatage d'une chaîne qui représente un nombre. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe DeformatNumber$ ( numeric_string ) numeric_string est une chaîne représentant une valeur numérique, telle que « 12 345 678 ». Valeur renvoyée Chaîne Description Renvoie une chaîne qui représente un nombre. La valeur renvoyée n'inclut pas les séparateurs de milliers, même si l'argument numeric_string inclut des virgules de séparation. La valeur renvoyée utilise Référence 277 Instruction Delete le point comme séparateur décimal, que l'ordinateur de l'utilisateur soit configuré ou non pour utiliser un autre caractère comme séparateur décimal. Exemples L'exemple suivant appelle la fonction Val( ) pour déterminer la valeur numérique d'une chaîne. Avant d'appeler la fonction Val( ), cet exemple appelle la fonction DeformatNumber$( ) afin d'enlever les virgules de séparation de la chaîne. (La chaîne que vous transmettez à la fonction Val( ) ne peut pas contenir de virgule de séparation.) Dim s_number As String Dim f_value As Float s_number = "1,222,333.4" s_number = DeformatNumber$(s_number) ' the variable s_number now contains the ' string: "1222333.4" f_value = Val(s_number) Print f_value Voir également Fonction FormatNumber$( ), Fonction Val( ) Instruction Delete Objectif Supprime un ou plusieurs objets graphiques, ou une ou plusieurs lignes entières d'une table. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Delete [ Object ] From table [ Where Rowid = id_number ] table est le nom d'une table ouverte. id_number est le numéro d'une ligne (une valeur d'entier égale à 1 ou plus). Description L'instruction Delete supprime des objets graphiques ou des enregistrements entiers d'une table ouverte. Par défaut, l'instruction Delete supprime tous les enregistrements d'une table. Cependant, si l'instruction inclut le mot-clé facultatif Object, MapBasic ne supprime que les objets graphiques associés à la table au lieu de supprimer les enregistrements proprement dits. Par défaut, l'instruction Delete affecte tous les enregistrements contenus dans la table. Cependant, si l'instruction comprend la clause facultative Where Rowid =...clause, seule la ligne indiquée est affectée par l'instruction Delete. Il existe une différence fondamentale entre une instruction Delete Object From et une instruction Drop Map. Une instruction Delete Object From n'affecte que les objets ou les enregistrements d'une table, 278 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z elle n'affecte pas la structure de la table proprement dite. Une instruction Drop Map modifie réellement la structure de la table afin que les objets graphiques ne puissent pas être associés à la table. Exemples L'instruction Delete suivante supprime tous les enregistrements d'une table. A la fin de cette opération, la table existe toujours, mais elle est complètement vide, comme si l'utilisateur venait de la créer en sélectionnant Fichier > Nouveau. Open Table "clients" Delete From clients Table clients L'instruction Delete ci-dessous ne supprime que l'objet de la dixième ligne de la table : Open Table "clients" Delete Object From clients Where Rowid = 10 Table clients Voir également Instruction Drop Map, Instruction Insert Instruction Dialog Objectif Affiche une boîte de dialogue personnalisée. Restrictions Vous ne pouvez pas exécuter cette instruction Dialog via la fenêtre MapBasic. Syntaxe Dialog [ Title title ] [ Width w ] [ Height h ] [ Position x, y ] [ Calling handler ] Control control_clause [ Control control_clause... ] title est une expression de chaîne qui apparaît dans la barre de titre de la boîte de dialogue. h indique la hauteur de la boîte de dialogue, en unité de boîte de dialogue (8 unités de hauteur de boîte de dialogue représentent la hauteur d'un caractère). w indique la largeur de la boîte de dialogue, en unité de boîte de dialogue (4 unités de hauteur de boîte de dialogue représentent la largeur d'un caractère). x, y indique la position initiale de la boîte de dialogue, en pixels, représentant la distance par rapport au coin supérieur gauche de la zone de travail de MapInfo Professional. Si la clause Position est omise, la boîte de dialogue apparaît centrée. handler est le nom d'une procédure à appeler avant que l'utilisateur ne soit autorisé à utiliser la boîte de dialogue. Habituellement, cette procédure est utilisée pour émettre l'instruction Alter Control. Référence 279 Instruction Dialog Chaque control_clause peut indiquer l'un des types de commande suivants : • • • • • • • • • • • • • • • Bouton OKButton CancelButton EditText StaticText PopupMenu CheckBox MultiListBox GroupBox RadioGroup PenPickerm BrushPicker FontPicker SymbolPicker ListBox Pour plus de détails, reportez-vous aux différentes informations sur ces types de commande (par exemple, pour des détails sur les commandes CheckBox, reportez-vous à la section Clause Control CheckBox ; pour des détails sur les commandes Picker, consultez la section Clause Control PenPicker/BrushPicker/SymbolPicker/FontPicker ; etc.). Chaque control_clause peut indiquer l'un des types de commande suivants : • • • • • • • • • Button / OKButton / CancelButton CheckBox GroupBox RadioGroup EditText StaticText PenPicker / BrushPicker / SymbolPicker / FontPicker ListBox / MultiListBox PopupMenu Description L'instruction Dialog crée une boîte de dialogue, l'affiche à l'écran et permet à l'utilisateur d'interagir avec elle. La boîte de dialogue est modale, c'est-à-dire que l'utilisateur doit la fermer (par ex. : en cliquant sur OK ou Annuler) avant d'exécuter une autre tâche dans MapInfo Professional. Pour une présentation des boîtes de dialogue, reportez-vous au Guide de l'utilisateur MapBasic. Tout ce qui apparaît sur une boîte de dialogue s'appelle une commande. Chaque boîte de dialogue doit contenir au moins une commande (par ex. : une commande OKButton). Vous trouverez les explications correspondantes aux différentes clauses de commande dans des entrées distinctes (par exemple, pour une explication des commandes CheckBox, reportez-vous à la section Clause Control CheckBox). En règle générale, chaque boîte de dialogue doit contenir une commande OKButton et/ou une commande CancelButton, afin que l'utilisateur puisse fermer la boîte de dialogue. 280 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z L'instruction Dialog vous permet de créer une boîte de dialogue personnalisée. Si vous souhaitez afficher une boîte de dialogue standard (par ex. : une boîte de dialogue Fichier > Ouvrir), utilisez l'une des instructions ou fonctions suivantes : Fonction Ask( ), Instruction Note, Instruction ProgressBar, Fonction FileOpenDlg( ), Fonction FileSaveAsDlg( ) ou Fonction GetSeamlessSheet( )). Pour une présentation des concepts contenus dans les boîtes de dialogue MapBasic, reportez-vous au Guide de l'utilisateur MapBasic. Dimensions et positions des boîtes de dialogue et de leurs commandes Dans l'instruction Dialog, les dimensions et positions sont indiquées en termes d'unités de boîte de dialogue. Une largeur de quatre unités de boîte de dialogue équivaut à la largeur d'un caractère, et une hauteur de huit unités de boîte de dialogue est égale à la hauteur d'un caractère. Ainsi, si une commande de boîte de dialogue possède une hauteur de 40 et une largeur de 40, celle-ci peut contenir environ dix caractères en largeur et 5 en hauteur. Les positions des commandes sont définies par rapport au coin supérieur gauche de la boîte de dialogue. Pour placer une commande dans le coin supérieur gauche d'une boîte de dialogue, définissez les coordonnées x et y sur zéro et zéro. Les clauses Position, Height et Width sont toutes facultatives. Si vous omettez ces clauses, MapBasic place les commandes à des positions par défaut dans la boîte de dialogue, les clauses de commande suivantes apparaissant plus bas dans celle-ci. Fermeture d'une boîte de dialogue Après exécution de l'instruction Dialog par le programme MapBasic, l'utilisateur continue d'interagir avec la boîte de dialogue jusqu'à ce que l'une des quatre propositions suivantes se produise : • L'utilisateur clique sur la commande OKButton (si la boîte de dialogue en possède une) ; • L'utilisateur clique sur la commande CancelButton (si la boîte de dialogue en possède une) ; • L'utilisateur clique sur une commande avec un gestionnaire exécutant une instruction Dialog Remove ; ou • L'utilisateur ferme la boîte de dialogue (par ex. : en appuyant sur la touche Echap pour une boîte de dialogue contenant une commande CancelButton). Pour que la boîte de dialogue reste à l'écran après que l'utilisateur ait cliqué sur OK ou Annuler, affectez une procédure de gestionnaire à la commande OKButton ou CancelButton et faites exécuter à ce gestionnaire une instruction Dialog Preserve. Lecture de l'entrée de l'utilisateur Après une instruction Dialog, appelez la fonction CommandInfo( ) pour savoir si l'utilisateur a cliqué sur OK ou Annuler pour fermer la boîte de dialogue. Si l'utilisateur a cliqué sur OK, l'appel de fonction suivant renvoie la valeur TRUE : CommandInfo(CMD_INFO_DLG_OK) Il existe deux façons de lire les valeurs saisies par l'utilisateur : intégrer les clauses Into dans l'instruction Dialog ou appeler la fonction ReadControlValue( ) à partir d'une procédure de gestionnaire. Si une commande détermine la clause Intoet que l'utilisateur clique sur la commande OKButton, MapInfo Professional stocke la valeur finale de la commande dans une variable de programme. Référence 281 Instruction Dialog Remarque: MapInfo Professional ne met à jour la variable que si l'utilisateur clique sur OK. De même, MapInfo Professional ne met à jour la variable qu'après fermeture de la boîte de dialogue. Pour lire une valeur de commande depuis une procédure de gestionnaire, appelez la fonction ReadControlValue( ). Définition de raccourcis-clavier pour les commandes Lorsqu'une application MapBasic s'exécute sur MapInfo, les boîtes de dialogue peuvent affecter des raccourcis-clavier aux différentes commandes. Les raccourcis-clavier sont pratiques et permettent à l'utilisateur de choisir une commande de boîte de dialogue en appuyant sur des séquences de touches plutôt que de cliquer avec la souris. Pour définir le raccourci-clavier d'une commande, insérez une esperluette (&) dans le titre de cette commande. Dans la clause Title, l'esperluette doit précéder directement le caractère à utiliser pour le raccourci-clavier. Ainsi, la clause Button suivante définit un bouton que l'utilisateur peut sélectionner en appuyant sur Alt+R : Control Button Title "&Reset" Bien qu'une esperluette apparaisse dans la clause Title, la boîte de dialogue finale ne l'affiche pas. Si vous devez afficher une esperluette dans une commande (par exemple, si vous souhaitez appeler un bouton Rechercher & remplacer), insérez deux esperluettes successives dans la clause Title : Title "Find && Replace" Si vous placez une commande StaticText juste devant ou au-dessus d'une commande EditText et que vous définissez un raccourci-clavier pour la commande StaticText, l'utilisateur peut passer à la commande EditText en se servant du raccourci-clavier. Définition de l'ordre de tabulation L'utilisateur peut appuyer sur la touche de tabulation pour déplacer les éléments sélectionnés au clavier à travers la boîte de dialogue. La sélection passe d'une commande à une autre en suivant l'ordre de tabulation de la boîte de dialogue. L'ordre de tabulation est défini par l'ordre des clauses Control dans l'instruction Dialog. Lorsque la sélection porte sur la troisième commande, et que vous appuyez sur la touche de tabulation, la sélection se déplace sur la quatrième commande, et ainsi de suite. Si vous souhaitez modifier l'ordre de tabulation, changez l'ordre des clauses Control. Exemples L'exemple suivant présente la création d'une boîte de dialogue simple contenant une commande EditText. Dans cet exemple, aucune des clauses Control n'utilise la clause facultative Position ; par conséquent, MapBasic place chaque commande dans une position par défaut. Dialog Title "Search" Control StaticText Title "Enter string to find:" Control EditText Value gs_searchfor 'this is a Global String variable Into gs_searchfor 282 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Control OKButton Control CancelButton If CommandInfo(CMD_INFO_DLG_OK) Then ' ...then the user clicked OK, and the variable ' gs_searchfor contains the text the user entered. End If Le programme suivant montre la syntaxe de tous les types de commande de MapBasic. Include "mapbasic.def" Declare Sub reset_sub `resets dialog to default settings Declare Sub ok_sub ' notes values when user clicks OK. Declare Sub Main Sub Main Dim s_title As String 'the title of the map Dim l_showlegend As Logical 'TRUE means include legend Dim i_details As SmallInt '1 = full details; 2 = partial Dim i_quarter As SmallInt '1=1st qrtr, etc. Dim i_scope As SmallInt '1=Town;2=County; etc. Dim sym_variable As Symbol Dialog Title "Map Franchise Locations" Control StaticText Title "Enter Map Title:" Position 5, 10 Control EditText Value "New Franchises, FY 95" Into s_title ID 1 Position 65, 8 Width 90 Control GroupBox Title "Level of Detail" Position 5, 30 Width 70 Height 40 Control RadioGroup Title "&Full Details;&Partial Details" Value 2 Into i_details ID 2 Position 12, 42 Width 60 Control StaticText Title "Show Franchises As:" Position 95, 30 Control SymbolPicker Position 95, 45 Into sym_variable ID 3 Control StaticText Title "Show Results For:" Position 5, 80 Control ListBox Title "First Qrtr;2nd Qrtr;3rd Qrtr;4th Qrtr" Value 4 Into i_quarter ID 4 Position 5, 90 Width 65 Height 35 Control StaticText Référence 283 Instruction Dialog Title "Include Map Layers:" Position 95, 80 Control MultiListBox Title "Streets;Highways;Towns;Counties;States" Value 3 ID 5 Position 95, 90 Width 65 Height 35 Control StaticText Title "Scope of Map:" Position 5, 130 Control PopupMenu Title "Town;County;Territory;Entire State" Value 2 Into i_scope ID 6 Position 5, 140 Control CheckBox Title "Include &Legend" Into l_showlegend ID 7 Position 95, 140 Control Button Title "&Reset" Calling reset_sub Position 10, 165 Control OKButton Position 65, 165 Calling ok_sub Control CancelButton Position 120, 165 If CommandInfo(CMD_INFO_DLG_OK) Then ' ... then the user clicked OK. Else ' ... then the user clicked Cancel. End If End Sub Sub reset_sub ' here, you could use Alter Control statements ' to reset the controls to their original state. End Sub Sub ok_sub ' Here, place code to handle user clicking OK End Sub Le programme précédent crée la boîte de dialogue suivante. 284 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Instruction Alter Control, Fonction Ask( ), Instruction Dialog Preserve, Instruction Dialog Remove, Fonction FileOpenDlg( ), Fonction FileSaveAsDlg( ), Instruction Note, Fonction ReadControlValue( ) Instruction Dialog Preserve Objectif Réactive une boîte de dialogue après que l'utilisateur ait cliqué sur OK ou sur Annuler. Syntaxe Dialog Preserve Restrictions Cette instruction ne peut être exécutée qu'au sein d'une sous-procédure qui agit en tant que gestionnaire pour une commande de boîte de dialogue OKButton ou CancelButton. Vous ne pouvez pas exécuter cette instruction à partir de la fenêtre MapBasic. Référence 285 Instruction Dialog Remove Description L'instruction Dialog Preserve permet à l'utilisateur de reprendre l'utilisation d'une boîte de dialogue personnalisée (créée via une instruction Dialog) même après avoir cliqué sur la commande OKButton ou CancelButton. L'instruction Dialog Preserve vous permet de « confirmer » l'action OK ou Annuler de l'utilisateur. Par exemple, si l'utilisateur clique sur Annuler, vous pouvez afficher une boîte de dialogue posant une question, telle que « Voulez-vous annuler les modifications ». Si l'utilisateur sélectionne « Non » dans la boîte de dialogue de confirmation, l'application réactivera la boîte de dialogue d'origine. Vous pouvez proposer cette fonctionnalité en exécutant une instruction Dialog Preserve depuis la procédure de gestionnaire de la commande CancelButton. Exemple La procédure suivante pourrait être utilisée comme gestionnaire pour une commande CancelButton. Sub confirm_cancel If Ask("Do you really want to lose your changes?", "Yes", "No") = FALSE Then Dialog Preserve End If End Sub Voir également Instruction Alter Control, Instruction Dialog, Instruction Dialog Remove, Fonction ReadControlValue( ) Instruction Dialog Remove Objectif Supprime une boîte de dialogue personnalisée de l'écran. Syntaxe Dialog Remove Restrictions Cette instruction ne peut être exécutée qu'au sein d'une sous-procédure qui agit en tant que gestionnaire pour une commande de boîte de dialogue. Vous ne pouvez pas exécuter cette instruction à partir de la fenêtre MapBasic. Description L'instruction Dialog Remove supprime la boîte de dialogue créée par la dernière instruction Dialog. Une boîte de dialogue disparaît automatiquement après que l'utilisateur ait cliqué sur une commande OKButton ou CancelButton. Utilisez l'instruction Dialog Remove (contenue dans la routine de gestionnaire d'une commande de boîte de dialogue) pour supprimer la boîte de dialogue avant que l'utilisateur ne clique sur OK ou Annuler. Cela est utile, par exemple, si une boîte de dialogue contient une commande ListBox, et que vous souhaitez qu'elle soit réduite lorsque l'utilisateur double-clique sur un élément de la liste. 286 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Remarque: L'instruction Dialog Remove indique de supprimer la boîte de dialogue après le retour de la sous-procédure de gestionnaire. Elle ne supprime pas la boîte de dialogue instantanément. Exemple La procédure suivante fait partie de l'exemple de programme NVIEWS.MB. Elle gère la commande ListBox dans la boîte de dialogue Vues nommées. Lorsque l'utilisateur clique une fois sur un élément de la liste, cette procédure de gestionnaire active différents boutons de la boîte de dialogue. Lorsque l'utilisateur double-clique sur un élément de la liste, ce gestionnaire utilise une instruction Dialog Remove pour fermer la boîte de dialogue. Remarque: MapInfo Professional appelle cette procédure de gestionnaire pour les clics et doubles-clics. Sub listbox_handler Dim i As SmallInt Alter Control 2 Enable Alter Control 3 Enable If CommandInfo(CMD_INFO_DLG_DBL) = TRUE Then ' ' ... then the user double-clicked. ' i = ReadControlValue(1) Dialog Remove Call go_to_view(i) End If End Sub Voir également Instruction Alter Control, Instruction Dialog , Instruction Dialog Preserve, Fonction ReadControlValue( ) Instruction Dim Objectif Définit une ou plusieurs variables. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Restrictions Lorsque vous exécutez des instructions Dim via la fenêtre MapBasic vous ne pouvez définir qu'une variable par instruction Dim, bien que celle-ci puisse définir plusieurs variables dans un programme compilé. Vous ne pouvez pas définir des variables de tableau à l'aide de la fenêtre MapBasic. Syntaxe Dim var_name [ , var_name ... ] As var_type [ , var_name [ , var_name ... ] As var_type ... ] var_name est le nom d'une variable à définir. var_type est une variable Type standard ou personnalisée. Référence 287 Instruction Dim Description Une instruction Dim déclare une ou plusieurs variables. La table ci-dessous récapitule les types de variable que vous pouvez déclarer par le biais d'une instruction Dim. Table 4: Emplacement des instructions Dim et portée des variables 288 Variable Type Description SmallInt Nombres entiers compris entre - 32 768 et 32 767 (inclus), stockés sur 2 octets. Entier >Nombres entiers compris entre -2 147 483 648 et +2 147 483 647 (inclus), stockés sur 4 octets. Nombre à virgule flottante Valeur à virgule flottante, stockée au format IEEE sur 8 octets. Chaîne Chaîne de caractères à longueur variable, pouvant comporter jusqu'à 32 768 octets. Chaîne * longueur Chaîne de caractères à longueur fixe (longueur détermine la longueur de la chaîne en octets, et comporte jusqu'à 32 768 octets). Les chaînes de longueur fixe sont complétées par des espaces à droite. Logique TRUE ou FALSE, stocké sur 1 octet : zéro = FALSE, autre = TRUE. Date Date stockée sur quatre octets : deux octets pour l'année, un octet pour le mois et un autre pour le jour. DateTime Date et heure stockées sur neuf octets : 4 octets pour la date et 5 octets pour l'heure. Les 5 octets pour l'heure comprennent 2 octets pour les millisecondes, 1 octet pour les secondes, 1 octet pour les minutes et 1 octet pour les heures. Time L'heure est stockée sur 5 octets : 2 octets pour les millisecondes, 1 octet pour les secondes, 1 octet pour les minutes et 1 octet pour les heures. Objet Objet graphique (point, région, ligne, polyligne, arc, rectangle, rectangle aux coins arrondis, ellipse, texte ou cadre). Alias Nom de colonne Pen Paramètre de style Pen (ligne) Brush Paramètre de style Brush (remplissage) MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Variable Type Description polices Paramètre de style Font (texte) Symbol Paramètre de style Symbol (point) L'instruction Dim, qui définit une variable, doit précéder les autres instructions qui utilisent cette variable.Les instructions Dim apparaissent généralement en haut d'une procédure ou d'une fonction. Si une instruction Dim apparaît dans une Instruction Sub...End Sub ou une Instruction Function...End Function, l'instruction définit les variables à portée locale. Les variables locales ne sont accessibles que depuis la procédure ou fonction qui contenait l'instruction Dim. Si une instruction Dim apparaît en dehors de toute définition de procédure ou de fonction, l'instruction définit les variables dont la portée se trouve au niveau du module. Les variables de niveau de module sont accessibles par une procédure ou une fonction dans un module de programme (par exemple, dans le fichier de programme .MB). Pour déclarer des variables globales (variables accessibles par toute procédure ou fonction dans l'un des modules constituant un projet), utilisez l'Instruction Global. Déclaration de plusieurs variables et types de variable Une instruction Dim unique peut déclarer deux ou plusieurs variables, séparées par des virgules. Vous pouvez également définir des variables de différents types dans une instruction Dim en regroupant des variables semblables ensemble et en séparant les différents groupes par une virgule après le type de variable : Dim jointer, i_min, i_max As Integer, s_name As String Variables de tableau MapBasic prend en charge des variables de tableau à une dimension. Pour définir une variable de tableau, ajoutez une paire de parenthèses immédiatement après le nom de variable. Pour spécifier une taille de tableau initiale, incluez une expression d'entier constante entre les parenthèses. L'exemple ci-dessous déclare un tableau de dix variables à virgule flottante, puis affecte une valeur au premier élément dans le tableau : Dim f_stats(10) As Float f_stats(1) = 17.23 Le nombre qui apparaît entre parenthèses est appelé indice. Le premier élément du tableau est l'élément avec l'indice 1 (indiqué dans l'exemple ci-dessous). Pour redimensionner un tableau, utilisez l'instruction ReDim. Pour déterminer la taille actuelle d'un tableau, utilisez la fonction UBound( ). Si l'instruction Dim n'indique aucune taille de tableau initiale, le tableau ne contiendra au début aucun membre. Dans ce cas, vous ne pourrez stocker aucune donnée dans le tableau avant de le redimensionner avec une instruction ReDim. Un tableau MapBasic peut comporter jusqu'à 32 767 éléments. Variables de chaîne Une variable de chaîne peut contenir une chaîne de texte d'une longueur maximale de 32 Ko. Cependant, il existe une limite quant à la longueur d'une constante de chaîne que vous pouvez spécifier dans une Référence 289 Instruction Dim instruction d'affectation simple. L'exemple ci-dessous effectue une affectation de variable de chaîne simple, dans laquelle une expression de chaîne de constante est affectée à une variable de chaîne Dim status As String status = "This is a string constant ... " Dans ce type d'affectation, l'expression de chaîne de constante à droite du signe égal comporte une longueur maximale de 256 caractères. MapBasic, comme les autres langages BASIC, remplace les variables de chaîne de longueur fixe par des espaces. En d'autres termes, si vous définissez une variable de chaîne de 10 octets, puis que vous affectez une chaîne de 5 caractères à cette variable, la variable est de fait complétée par 5 espaces afin de remplir l'espace alloué. (Cette fonction facilite le formatage de la sortie de texte, de sorte que les colonnes soient alignées). Les variables de chaîne de longueur fixe, en revanche, ne sont pas complétées de cette manière. Cette différence peut affecter les comparaisons de chaîne. Vous devez faire preuve d'attention lorsque vous comparez des variables de chaîne de longueur fixe et de longueur variable. Dans le programme suivant, l'instruction If...Then indiquerait que les deux chaînes ne sont pas égales : Dim s_var_len As String Dim s_fixed_len As String * 10 s_var_len = "testing" s_fixed_len = "testing" If s_var_len = s_fixed_len Then Note "strings are equal" ' this won't happen Else Note "strings are NOT equal" ' this WILL happen End If Restrictions sur les noms de variable Les noms de variable ne respectent pas la casse. Ainsi, si une instruction Dim définit une variable appelée abc, le programme peut appeler cette variable abc, ABC ou Abc. Les noms de variable peuvent comporter jusqu'à 31 caractères et contenir des lettres, des nombres et des traits de soulignement (_). Les noms de variable peuvent également inclure les signes de ponctuation $, %, &, !, # et @ mais uniquement comme caractère de fin dans le nom. Un nom de variable ne peut pas commencer par un nombre. Beaucoup de mots-clés du langage MapBasic, tels que Open, Close, Set et Do, sont des mots réservés qui ne peuvent pas être utilisés comme noms de variable. Si vous tentez de définir une variable appelée Set, MapBasic génère une erreur lorsque vous compilez le programme. Le tableau ci-dessous récapitule les mots-clés MapBasic qui ne peuvent pas être utilisés comme noms de variable. Add Alter Fermer 290 Parcourir Call Créer DDE DDEExecute DDEPoke DDETerminate DDETerminateAll Declare Delete Dialog Dim Do Drop Else ElseIf End Erreur Event Quitter MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exporter Fetch Rechercher For Function Get Global Atteindre Graphique If Importer Insérer Mise en Page Map Menu Note Objets OnError Ouvrir Compactage Imprimer PrintWin ProgressBar Put ReDim Register Recharger Remove Renommer Resume Rollback Run Sauver Seek Select Set Shade Barre d'état Annuler Sub Type Mettre à Jour While Dans certains langages BASIC, vous pouvez déterminer le type d'une variable en terminant la variable par l'un des signes de ponctuation mentionnés ci-dessus. Par exemple, certains langages BASIC considèrent qu'une variable nommée avec un signe dollar (par exemple, LastName$) est une variable de chaîne. Néanmoins, dans MapBasic vous devez déclarer chaque type de variable de manière explicite, via l'instruction Dim. Valeurs de variables initiales MapBasic initialise les variables numériques sur la valeur 0 lorsqu'elles sont définies. Les variables de chaîne de longueur variable sont initialisées sur une chaîne vide. Les variables de chaîne de longueur fixe sont initialisées sur tous les espaces. Les variables d'objet et de style ne sont pas initialisées automatiquement. Vous devez initialiser les variables d'objet et de style avant d'effectuer des références à ces variables. Exemple ' Below is a custom Type definition, which creates ' a new data type known as Person Type Person Name As String Age As Integer Phone As String End Type ' The next Dim statement creates a Person variable Dim customer As Person ' This Dim creates an array of Person variables: Dim users(10) As Person ' this Dim statement defines an integer variable ' "counter", and an integer array "counters" : Dim counter, counters(10) As Integer Référence 291 Fonction Distance( ) ' the next statement assigns the "Name" element ' of the first member of the "users" array users(1).Name = "Chris" Voir également Instruction Global, Instruction ReDim, Instruction Type, Fonction UBound( ) Fonction Distance( ) Objectif Renvoie la distance entre deux points. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Distance ( x1, y1, x2, y2, unit_name ) x1 et x2 sont des coordonnées de l'axe des X (par exemple, la longitude). y1 et y2 sont des coordonnées de l'axe des Y (par exemple, la latitude). unit_name est une chaîne qui représente le nom d'une unité de distance (par exemple, « km »). Valeur renvoyée Nombre à virgule flottante Description La fonction Distance( ) calcule la distance entre deux emplacements. La fonction renvoie la mesure de la distance dans les unités spécifiées par le paramètre unit_name. Par exemple, pour obtenir une distance en miles, spécifiez "mi" comme paramètre unit_name. Pour obtenir la liste des noms d'unités disponibles, reportez-vous à la section Instruction Set Distance Units . Les paramètres des coordonnées x et y doivent utiliser le système de coordonnées actuel de MapBasic. Par défaut, MapInfo Professional attend que les coordonnées utilisent un système de coordonnées Longitude/Latitude. Vous pouvez réinitialiser le système de coordonnées MapBasic par le biais de l'instruction Set CoordSys. Si le système de coordonnées actuel est un système terrestre, la fonction Distance( ) renvoie une distance de grand cercle entre les deux points. Une distance de grand cercle est la distance la plus courte entre deux points d'une sphère. (Un grand cercle est un cercle qui fait le tour de la Terre, avec le centre du cercle au centre de la terre ; une distance de grand cercle entre deux points est la distance le long du grand cercle, qui connecte les deux points). MapInfo Professional effectue, pour la plus grande partie, un calcul cartésien ou sphérique. Généralement, un calcul sphérique est effectué sauf si les données proviennent d'un système de coordonnées non terrestre, auquel cas un calcul cartésien a lieu. Exemple Dim dist, start_x, start_y, end_x, end_y As Float Open Table "cities" 292 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fetch First From cities start_x = CentroidX(cities.obj) start_y = CentroidY(cities.obj) Fetch Next From cities end_x = CentroidX(cities.obj) end_y = CentroidY(cities.obj) dist = Distance(start_x,start_y,end_x,end_y,"mi") Voir également Fonction Area( ), Fonction ObjectLen( ), Instruction Set CoordSys, Instruction Set Distance Units Instruction Do Case...End Case Objectif Décide du groupe d'instructions à exécuter, en fonction de la valeur actuelle d'une expression. Restrictions Vous ne pouvez pas exécuter d'instruction Do Case via la fenêtre MapBasic. Syntaxe Do Case do_expr Case case_expr [ , case_expr ] statement_list [ Case ... ] [ Case Else statement_list ] End Case do_expr est une expression. case_expr est une expression représentant une valeur possible pour do_expr. statement_list est un groupe d'instructions à exécuter sous les bonnes conditions. Description L'instruction Do Caseest semblable à l'instruction If...Then, dans la mesure où Do Case recherche l'existence de certaines conditions et détermine les instructions à exécuter (le cas échéant) en fonction des résultats de la recherche. L'instruction Do Case de MapBasic est analogue à l'instruction Select Case du langage BASIC. (Dans MapBasic, le nom de l'instruction a été modifié afin d'éviter tout conflit avec l'instruction Select). Lors de l'exécution d'une instruction Do Case, MapBasic examine la première clause Case case_expr. Si l'une des expressions contenues dans la clause Case case_expr est égale à la valeur de l'expression do_expr, elle est considérée comme une correspondance. Par conséquent, MapBasic exécute les instructions du groupe statement_list de l'expression, puis passe directement à la première instruction suivant l'instruction End Case. Si aucune des expressions dans la première clause Case case_expr n'est égale à l'expression do_expr, MapBasic tente de trouver une correspondance dans la clause Case case_expr suivante. MapBasic testera chaque clause Case case_expr successivement, jusqu'à ce que l'une des expressions corresponde ou qu'elles aient toutes été testées. Référence 293 Instruction Do...Loop MapBasic exécutera, au maximum, un groupe statement_list d'une instruction Do Case. Si une correspondance est trouvée, MapBasic exécutera son groupe statement_list, puis passera directement à la première instruction suivant l'instruction End Case. Si aucune expression case_expr n'est égale à l'expression do_expr, aucune expression Case ne correspondra et aucun groupe statement_list ne sera donc exécuté. Cependant, si une instruction Do Case contient une clause Case Else clause, et qu'aucune clause Case case_expr ne correspond, alors MapBasic exécutera la liste d'instructions à partir de la clause Case Else. Notez qu'une instruction Do Case de cette forme : Do Case expr1 Case expr2 statement_list1 Case expr3, expr4 statement_list2 Case Else statement_list3 End Case aura le même effet qu'une instruction If...Then de cette forme : If expr1 = expr2 Then statement_list1 ElseIf expr1 = expr3 Or expr1 = expr4 Then statement_list2 Else statement_list3 End If Exemple L'exemple suivant crée une chaîne de texte, telle que "First Quarter" (1er trimestre), "Second Quarter" (2e trimestre), etc., en fonction de la date en cours. Dim cur_month As Integer, msg As String cur_month = Month( CurDate( ) ) Do Case cur_month Case 1, 2, 3 msg = "First Quarter" Case 4, 5, 6 msg = "Second Quarter" Case 7, 8, 9 msg = "Third Quarter" Case Else msg = "Fourth Quarter" End Case Voir également Instruction If...Then Instruction Do...Loop Objectif Définit une boucle qui s'exécutera jusqu'à ce qu'une condition particulière devienne TRUE (ou FALSE). 294 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Restrictions Vous ne pouvez pas exécuter d'instruction Do Loop via la fenêtre MapBasic. Syntaxe 1 Do statement_list Loop [ { Until | While } condition ] Syntaxe 2 Do [ { Until | While } condition ] statement_list Loop statement_list est un groupe d'instructions à exécuter plusieurs fois (ou aucune). condition est une expression conditionnelle qui contrôle le moment où la boucle s'arrête. Description L'instruction Do...Loop assure le contrôle de la boucle. En règle générale, l'instruction Do...Loop exécute les instructions d'un groupe statement_list de façon répétitive tant que la valeur d'une condition While reste TRUE (ou, à l'inverse, la boucle exécute le groupe statement_list de façon répétitive jusqu'à ce que la valeur de la condition Until devienne TRUE). Si l'instruction Do...Loop ne contient pas de clause Until / While facultative, la boucle répétera les instructions indéfiniment. Dans ce cas, une instruction de contrôle du flux, telle que l'instruction Goto ou l'instruction Exit Do, sera nécessaire pour interrompre ou quitter la boucle. L'instruction Exit Do interrompt toute instruction Do...Loopimmédiatement (que la boucle possède ou non une clause Until / While), et reprend l'exécution du programme au niveau de la première instruction suivant la clause Loop. Comme indiqué ci-dessus, la clause facultative Until/While suit le mot-clé Do ou Loop. La position de la clause Until/While détermine si MapBasic teste la condition avant ou après l'exécution du groupe statement_list. Ceci est particulièrement important lors de la première itération de la boucle. Une boucle utilisant la syntaxe suivante : Do statement_list Loop While condition exécutera le groupe statement_list, puis testera la condition. Si la condition est TRUE, MapBasic continuera d'exécuter le groupe statement_list jusqu'à ce qu'elle devienne FALSE. Ainsi, une instruction Do...Loop utilisant la syntaxe ci-dessus exécutera le groupe statement_list au moins une fois. En revanche, une instruction Do...Loop de la forme suivante n'exécutera le groupe statement_list que si la condition est TRUE. Do While condition statement_list Loop Référence 295 Instruction Drop Index Exemple L'exemple suivant utilise l'instruction Do...Loop pour lire les dix premiers enregistrements d'une table. Dim sum As Float, counter As Integer Open Table "world" Fetch First From world counter = 1 Do sum = sum + world.population Fetch Next From world counter = counter + 1 Loop While counter <= 10 Voir également Instruction Exit Do, Instruction For...Next Instruction Drop Index Objectif Supprime un index d'une table. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Drop Index table( column ) table est le nom d'une table ouverte. column est le nom d'une colonne de cette table. Description L'instruction Drop Index supprime un index existant d'une table ouverte. La suppression d'un index réduit l'espace disque occupé par une table. (Pour recréer cet index ultérieurement, exécutez une instruction Create Index.) Remarque: MapInfo Professional ne peut pas supprimer un index si la table inclut des modifications non enregistrées. Utilisez l'instruction Commit Table pour enregistrer les modifications. L'instruction Drop Index prend effet immédiatement. Il n'est pas nécessaire d'effectuer une opération de sauvegarde. Vous ne pouvez pas annuler les effets d'une instruction Drop Index en sélectionnant Fichier > Annuler changement ou Édition > Annuler. De même, l'instruction Rollback MapBasic n'annulera pas les effets de l'instruction Drop Index. Exemple L'exemple ci-dessous supprime l'index du champ Name de la table World. Open Table "world" Drop Index world(name) Voir également Instruction Create Index 296 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Instruction Drop Map Objectif Supprime tous les objets graphiques d'une table. Ne peut pas être utilisée sur des tables liées. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Drop Map table table est le nom d'une table ouverte. Description Une instruction Drop Map supprime tous les objets graphiques (points, lignes, régions, cercles, etc.) d'une table ouverte et modifie la structure de la table de sorte que les objets graphiques ne puissent pas être associés à la table. Remarque: L'instruction Drop Map prend effet immédiatement. Il n'est pas nécessaire d'effectuer une opération de sauvegarde. Vous ne pouvez pas annuler les effets d'une instruction Drop Map en sélectionnant Fichier > Annuler changements ou Édition > Annuler. De même, l'instruction Rollback MapBasic n'annulera pas les effets de l'instruction Drop Map. Par conséquent, soyez prudent lorsque vous utilisez l'instruction Drop Map. Après avoir effectué une opération Drop Map, vous ne pouvez plus afficher la table correspondante dans une fenêtre Carte. L'instruction Drop Map modifie la structure de la table afin que les objets ne puissent plus être associés à la table. (Une instruction Create Map suivante restaurera la capacité de la table à contenir des objets graphiques. Néanmoins, une instruction Create Map ne restaurera pas les objets graphiques supprimés lors de l'opération Drop Map.) L'instruction Drop Map n'affecte pas le nombre d'enregistrements contenus dans une table. Vous pouvez toujours parcourir une table après l'exécution de l'instruction Drop Map. Si vous souhaitez supprimer tous les objets graphiques d'une table, mais avez l'intention d'en joindre de nouveaux à la même table, utilisez l'instruction Delete Object plutôt que Drop Map. L'instruction Drop Map ne fonctionne pas sur les tables liées. Exemple Open Table "clients" Drop Map clients Voir également Instruction Create Map, Instruction Create Table, Instruction Delete Référence 297 Instruction Drop Table Instruction Drop Table Objectif Supprime une table dans son intégralité. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Drop Table table table est le nom d'une table ouverte. Description L'instruction Drop Table efface intégralement la table indiquée du lecteur de l'ordinateur. La table doit déjà être ouverte. Si une table est basée sur une base de données ou une feuille de calcul préexistante, l'instruction Drop Table supprime le fichier initial ainsi que les fichiers de composant qui constituent une table. En d'autres termes, une opération Drop Table peut revenir à supprimer un fichier utilisé en dehors de MapInfo Professional. L'instruction Drop Table prend effet immédiatement. Il n'est pas nécessaire d'effectuer une opération de sauvegarde. Vous ne pouvez pas annuler les effets d'une instruction Drop Table en sélectionnant Fichier > Annuler changements ou Édition > Annuler. De même, l'instruction Rollback MapBasic n'annulera pas les effets de l'instruction Drop Table. Par conséquent, soyez prudent lorsque vous utilisez l'instruction Drop Table. Remarque: De nombreuses opérations MapInfo (par exemple, Select) stockent les résultats dans des tables temporaires (par exemple, Query1). Les tables temporaires sont supprimées automatiquement lorsque vous quittez MapInfo Professional. Vous n'avez pas besoin d'utiliser l'instruction Drop Table pour supprimer des tables temporaires. L'instruction Drop Table ne permet pas de supprimer une table utilisée comme « vue ». Par exemple, une table StreetInfo (comme SF_STRTS) est une vue qui associe deux autres tables (SF_STRT1 et SF_STRT2). Vous ne pouvez donc pas supprimer la table SF_STRTS à l'aide de l'instruction Drop Table. Exemple Open Table "clients" Drop Table clients Voir également Instruction Create Table, Instruction Delete, Instruction Kill 298 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Instruction End MapInfo Objectif Cette instruction interrompt MapInfo Professional. Syntaxe End MapInfo [ Interactive ] Description L'instruction End MapInfo interrompt MapInfo Professional. Une application peut définir une procédure spéciale appelée EndHandler, qui est exécutée automatiquement lorsque MapInfo Professional s'arrête. Ainsi, lorsqu'une application émet une instruction End MapInfo, MapInfo Professional exécute automatiquement toute procédure EndHandler en veille avant de fermer. Reportez-vous à la section Procédure EndHandler pour plus d'informations. Si une application émet une instruction End MapInfo, et que des tables contiennent des modifications non enregistrées, MapInfo Professional invite l'utilisateur à enregistrer ou à annuler ces modifications. Si vous intégrez le mot-clé Interactive et que des thèmes ou étiquettes ne sont pas enregistrés, MapInfo Professional invite l'utilisateur à enregistrer ou à annuler le travail non sauvegardé. Néanmoins, si le système de l'utilisateur est configuré de façon à enregistrer MAPINFOW.WOR automatiquement lors de sa fermeture, cette invite n'apparaît pas. Si vous omettez le mot-clé Interactive, cette invite n'apparaît pas. Pour interrompre une application MapBasic sans quitter MapInfo Professional, utilisez l'instruction End Program. Voir également Instruction End Program, Procédure EndHandler Instruction End Program Objectif Interrompt une application MapBasic. Restrictions L'instruction End Program ne peut pas être émise depuis la fenêtre MapBasic. Syntaxe End Program Référence 299 Procédure EndHandler Description L'instruction End Program interrompt l'exécution d'un programme MapBasic. Une application MapBasic peut ajouter des options aux menus MapInfo Professional, et même des nouveaux menus à la barre de menus. Habituellement, une option de menu ajoutée de cette façon appelle une sous-procédure à partir d'un programme MapBasic. Une fois qu'une application MapBasic a connecté une procédure au menu de cette façon, l'application est dite « en veille ». Si l'une des procédures d'une application MapBasic émet une instruction End Program, toute l'application est interrompue, même si des procédures « en veille » ont été jointes aux options de menu personnalisées. Lorsqu'une application s'interrompt, MapInfo Professional supprime automatiquement toutes les options de menu créées par cette application. Si une application définit une procédure appelée EndHandler, MapBasic appelle automatiquement cette procédure lorsque l'application s'interrompt, quel que soit le motif de l'interruption. Voir également Instruction End MapInfo, Procédure EndHandler Procédure EndHandler Objectif Nom de procédure réservé, appelé automatiquement lors de l'arrêt d'une application. Syntaxe Declare Sub EndHandler Sub EndHandler statement_list End Sub statement_list est une liste d'instructions à exécuter lors de l'arrêt d'une application. Description EndHandler est un nom de procédure MapBasic ayant un objectif spécifique. Si l'utilisateur exécute une application contenant une procédure nommée EndHandler, celle-ci est appelée automatiquement lors de l'arrêt de l'application. Cela se produit si l'utilisateur a quitté MapInfo Professional ou si une autre procédure dans l'application a exécuté une instruction End Program. Remarque: Plusieurs applications MapBasic peuvent être « en veille » simultanément. Lorsque MapInfo Professional s'arrête, MapBasic appelle automatiquement toutes les procédures EndHandler en veille, l'une après l'autre. Voir également Procédure RemoteMsgHandler, Procédure SelChangedHandler, Procédure ToolHandler, Procédure WinChangedHandler, Procédure WinClosedHandler 300 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction EOF( ) Objectif Renvoie TRUE si MapBasic a essayé de lire au-delà de la fin d'un fichier, renvoie FALSE dans le cas contraire. Syntaxe EOF( filenum ) filenum est le numéro d'un fichier ouvert via l'instruction Open File. Valeur renvoyée Logique Description La fonction EOF( ) renvoie une valeur logique indiquant l'existence d'une condition End-Of-File pour le fichier indiqué. Le paramètre filenum entier représente le numéro d'un fichier ouvert. Si une instruction Get tente de lire au-delà de la fin du fichier indiqué, la fonction EOF( ) renvoie une valeur TRUE, sinon EOF( ) renvoie une valeur FALSE. La fonction EOF( ) fonctionne avec les fichiers ouverts. Lorsque vous souhaitez vérifier la position actuelle d'une table ouverte, utilisez la fonction EOT( ). Pour voir un exemple d'appel de la fonction EOF( ), consultez l'exemple de programme NVIEWS.MB (Vues nommées). Conditions d'erreur L'erreur ERR_FILEMGR_NOTOPEN (366) est générée si le fichier spécifié n'est pas ouvert. Voir également Fonction EOT( ), Instruction Open File Fonction EOT( ) Objectif Renvoie TRUE si MapBasic a atteint la fin de la table spécifiée, FALSE dans les autres cas. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe EOT( table ) table est le nom d'une table ouverte. Référence 301 Fonction EPSGToCoordSysString$( ) Valeur renvoyée Logique Description La fonction EOT( ) renvoie TRUE ou FALSE pour indiquer si MapInfo Professional a essayé de lire après la fin de la table spécifiée. Le paramètre de table représente le nom d'une table ouverte. Conditions d'erreur L'erreur ERR_TABLE_NOT_FOUND (405) est générée si la table spécifiée n'est pas disponible. Exemple L'exemple ci-dessous utilise le résultat logique de la fonction EOT( ) pour déterminer le moment auquel mettre fin à une boucle. La boucle extrait de manière répétée l'enregistrement suivant dans une table, jusqu'à ce que le point auquel la fonction EOT( ) indique que le programme a atteint la fin de la table. Dim f_total As Float Open Table "customer" Fetch First From customer Do While Not EOT(customer) f_total = f_total + customer.order Fetch Next From customer Loop Voir également Fonction EOF( ), Instruction Fetch, Instruction Open File, Instruction Open Table Fonction EPSGToCoordSysString$( ) Objectif Convertit une chaîne qui contient un système de référence spatial en CoordSys clause qui peut être utilisée avec une fonction ou une instruction MapBasic. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe EPSGToCoordSysString$( srs_string ) srs_string est une chaîne qui décrit un système de référence spatial pour tout système de coordonnées pris en charge. Les chaînes SRS sont également appelées chaînes EPSG (European Petroleum Survey Group) (par exemple, epsg:2600). Pour obtenir une liste complète des codes EPSG utilisés avec MapInfo Professional, reportez-vous au fichier MAPINFOW.PRJ de votre installation MapInfo Professional. Les codes EPSG sont identifiés par un « \p » suivi d'un nombre. Description La fonction EPSGToCoordSysString$( ) est utilisée pour convertir une chaîne SRS en clause CoordSys, qui peut être utilisée dans une fonction ou une instruction MapBasic qui utilise une clause CoordSys comme entrée. 302 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exemple L'exemple ci-dessous définit le système de coordonnées d'une carte dans une projection terrestre 1, 104. run command("Set Map " + EPSGToCoordSysString$("EPSG:4326")) Voir également Clause CoordSys Fonction Erase( ) Objectif Renvoie un objet créé en effaçant une partie d'un autre objet. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Erase( source_object, eraser_object ) source_object est un objet, dont une partie doit être effacée. Ce ne peut pas être un objet point ou texte. eraser_object est un objet fermé, représentant la zone qui sera effacée. Valeur renvoyée Renvoie un objet représentant ce qu'il reste de source_object après effacement de eraser_object. Description La fonction Erase( ) efface une partie d'un objet et renvoie une expression qui représente ce qui reste de l'objet. Le paramètre source_object peut être un objet linéaire (ligne, polyligne, arc) ou un objet fermé (région, rectangle, rectangle aux coins arrondis, ellipse), mais pas un objet point ou texte. L'objet eraser_object doit être fermé. L'objet renvoyé conserve les styles de couleur et de trame de source_object. Exemple ' In this example, o1 and o2 are Object variables ' that already contain Object expressions. If o1 Intersects o2 Then If o1 Entirely Within o2 Then Note "Cannot Erase; nothing would remain." Else o3 = Erase( o1, o2 ) End If Else Note "Cannot Erase; objects do not intersect." End If Voir également Instruction Objects Erase, Instruction Objects Intersect Référence 303 Fonction Err( ) Fonction Err( ) Objectif Renvoie un code numérique, qui représente l'erreur actuelle. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Err( ) Valeur renvoyée Entier Description La fonction Err( ) renvoie le code numérique indiquant la dernière erreur survenue. Par défaut, un programme MapBasic qui génère une erreur affiche un message d'erreur, puis s'interrompt. Cependant, en émettant une instruction OnError,un programme peut configurer une routine gérant les erreurs afin de répondre aux conditions d'erreur. Une fois qu'une routine de gestion des erreurs a été indiquée, MapBasic passe immédiatement à cette routine en cas d'erreur. La routine de gestion des erreurs peut ensuite appeler la fonction Err( ) pour déterminer quelle erreur est survenue. La fonction Err( ) ne peut renvoyer que des codes d'erreur lorsqu'elle est utilisée dans le gestionnaire d'erreurs. Une fois que le programme exécute une instruction Resume pour revenir de la routine de gestion des erreurs, la condition d'erreur est réinitialisée. Cela signifie que si vous appelez la fonction Err( ) en dehors de la routine de gestion des erreurs, elle renvoie 0. Certaines descriptions d'instruction et de fonction dans ce document contiennent une section Conditions d'erreur (juste avant la section Exemple), qui répertorie les codes d'erreur liés à cette instruction ou fonction. Cependant, les codes d'erreur ne sont pas tous identifiés dans la section Conditions d'erreur. Certains codes d'erreur MapBasic ne sont générés que dans des circonstances spécifiques et précises. Par exemple, l'erreur ERR_INVALID_CHANNEL (696) n'est générée que par des fonctions ou instructions liées à DDE. Si une instruction peut générer ce type d'erreur inhabituel, les informations sur cette instruction identifient l'erreur dans la section Conditions d'erreur. En revanche, d'autres erreurs MapBasic sont des erreurs « génériques », qui peuvent être générées dans différentes circonstances. Par exemple, beaucoup de fonctions, telles que la fonction Area( ) et la fonction ObjectInfo( ), prennent une expression Object comme paramètre. Toute fonction de ce genre génère l'erreur ERR_FCN_OBJ_FETCH_FAILED (650) si vous acceptez une expression au format tablename.obj comme paramètre, lorsque la ligne sélectionnée de la table ne contient aucun objet associé. En d'autres termes, une fonction qui utilise un paramètre Object peut générer l'erreur ERR_FCN_OBJ_FETCH_FAILED (650). Dans la mesure où l'erreur ERR_FCN_OBJ_FETCH_FAILED (650) peut se produire à différents emplacements, les fonctions n'identifient pas explicitement l'erreur. De même, il existe deux erreurs mathématiques, ERR_FP_MATH_LIB_DOMAIN (911) et ERR_FP_MATH_LIB_RANGE (912), qui peuvent se produire en raison d'un paramètre numérique non valide. Ces erreurs peuvent être générées par des appels des fonctions suivantes : fonction Acos( ), 304 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z fonction Asin( ), fonction Atn( ), fonction Cos( ), fonction Exp( ), fonction Log( ), fonction Sin( ), fonction Sqr( ) ou fonction Tan( ). La liste complète des codes d'erreur MapBasic est incluse dans le fichier ERRORS.DOC. Voir également Instruction Error, Fonction Error$( ), Instruction OnError Instruction Error Objectif Simule la survenue d'une condition d'erreur. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Error error_num error_num est un numéro d'erreur sous forme d'entier. Description L'instruction Error simule l'occurrence d'une erreur. Si une routine de gestion d'erreur est activée via une instruction OnError, l'erreur simulée entraînera l'exécution, par MapBasic, de la routine de gestion des erreurs adaptée. Si aucune routine de gestion des erreurs n'est activée, l'erreur simulée par l'instruction Error provoquera l'interruption de l'application MapBasic après l'affichage d'un message d'erreur approprié. Voir également Fonction Err( ), Fonction Error$( ), Fonction OnError Fonction Error$( ) Objectif Renvoie un message qui décrit l'erreur actuelle. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Error$( ) Valeur renvoyée Chaîne Description La fonction Error$( ) renvoie une chaîne de caractères qui décrit l'erreur d'exécution actuelle, si une erreur s'est produite. Si aucune erreur ne s'est produite, la fonction Error$( ) renvoie une chaîne nulle. Référence 305 Instruction Exit Do La fonction Error$( ) ne devrait être appelée que depuis une routine de gestion des erreurs. Reportez-vous à la section Fonction Err( ) pour plus d'informations. Voir également Fonction Err( ), Instruction Error, Instruction OnError Instruction Exit Do Objectif Quitte une instruction Do...Loop prématurément. Restrictions Vous ne pouvez pas exécuter d'instruction Exit Do via la fenêtre MapBasic. Syntaxe Exit Do Description Une instruction Exit Do met fin à une instruction Do...Loop. S'il détecte une instruction Exit Do passera à la première instruction suivant l'instruction Do...Loop. L'instruction Exit Do est valable uniquement dans le cadre d'une instruction Do...Loop. Les instructions Do...Loop peuvent être emboîtées : une instruction Do...Loop peut apparaître dans le corps d'une autre instruction Do...Loop « externe ». Une instruction Exit Do n'interrompt que l'itération de l'instruction Do...Loop. Ainsi, dans une organisation de ce genre : Do While condition1 : Do While condition2 : If error_condition Exit Do End If : Loop : Loop l'instruction Exit Do interrompra la boucle interne (Do While condition2) sans affecter obligatoirement la boucle externe (Do While condition1). Voir également Instruction Do...Loop, Instruction Exit For, Instruction Exit Sub Instruction Exit For Objectif Quitte une instruction For...Next prématurément. 306 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Restrictions Vous ne pouvez pas exécuter d'instruction Exit For via la fenêtre MapBasic. Syntaxe Exit For Description Une instruction Exit For met fin à une instruction For...Next. S'il détecte une instruction Exit For, MapBasic passera à la première instruction suivant l'instruction For...Next. L'instruction Exit For est valable uniquement dans le cadre d'une instruction For...Next. Les instructions For...Next peuvent être emboîtées : une instruction For...Next peut apparaître dans le corps d'une autre instruction For...Next « externe ». Une instruction Exit For n'interrompt que l'itération de l'instruction For...Next la plus proche. Ainsi, dans une organisation de ce genre : For x = 1 to 5 : For y = 2 to 10 step 2 : If error_condition Exit For End If : Next : Next l'instruction Exit For interrompra la boucle interne (For y = 2 to 10 step 2) sans affecter obligatoirement la boucle externe (For x = 1 to 5). Voir également Instruction Exit Do, Instruction For...Next Instruction Exit Function Objectif Quitte une Instruction Function...End Function. Restrictions Vous ne pouvez pas exécuter d'instruction Exit Function via la fenêtre MapBasic. Syntaxe Exit Function Description Une instruction Exit Function entraîne l'arrêt par MapBasic de la fonction en cours. C'est pourquoi une instruction Exit Function ne peut être émise que depuis une Instruction Function...End Function. Référence 307 Instruction Exit Sub Les appels de fonction peuvent être emboîtés : une fonction peut appeler une autre fonction, qui, à son tour, peut en appeler une autre. Une seule instruction Exit Function quitte uniquement la fonction en cours. Voir également Instruction Function...End Function Instruction Exit Sub Objectif Quitte une instruction Sub...End Sub. Restrictions Vous ne pouvez pas exécuter d'instruction Exit Sub via la fenêtre MapBasic. Syntaxe Exit Sub Description L'instruction Exit Sub entraîne la fermeture par MapBasic de la sous-procédure en cours. C'est pourquoi une instruction Exit Sub ne peut être émise que depuis une sous-procédure. Instruction Sub...End Sub peut être emboîtée : une sous-procédure peut appeler une autre sous-procédure, qui, à son tour, peut en appeler une autre, etc. Une seule instruction Exit Sub quitte uniquement la sous-procédure en cours. Voir également Instruction Call, Instruction Sub...End Sub Fonction Exp( ) Objectif Renvoie le nombre e élevé à un exposant spécifié. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Exp( num_expr ) num_expr représente une expression numérique. Valeur renvoyée Nombre à virgule flottante 308 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description La fonction Exp( ) élève la valeur mathématique e à la puissance représentée par num_expr. e possède une valeur approximative de 2,7182818. Remarque: MapBasic prend en charge l'élévation à la puissance générale par le biais de l'opérateur caret (^). Exemple Dim e As Float e = Exp(1) ' the local variable e now contains ' approximately 2.7182818 Voir également Fonction Cos( ), Fonction Sin( ), Fonction Log( ) Instruction Export Objectif Exporte une table dans un autre format de fichier. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe 1 (pour exporter des fichiers MIF/MID, DBF, ou des fichiers texte ASCII) Export table Into file_name [ Type { "MIF" | "DBF" [ Charset char_set ] | "ASCII" [ Charset char_set ] [ Delimiter "d " ] [ Titles ] | "CSV" [ Charset char_set ] [ Titles ] } ] [ Overwrite ] Syntaxe 2 (pour exporter des fichiers DXF) Export table Into file_name [ Type "DXF" ] [ Overwrite ] [ Preserve [ AttributeData ] [ Preserve ] [ MultiPolygonRgns [ As Blocks ] ] ] [ { Binary | ASCII [ DecimalPlaces decimal_places ] } ] [ Version { 12 | 13 } ] [ Transform ( MI_x1, MI_y1 ) ( MI_x2, MI_y2 ) ( DXF_x1, DXF_y1 ) ( DXF_x2, DXF_y2 ) ] table est le nom d'une table ouverte. N'utilisez pas de guillemets autour de ce nom. file_name est une chaîne qui spécifie le nom du fichier qui contient les données exportées. Si le nom de fichier n'inclut pas de chemin, le fichier d'exportation est créé dans le répertoire de travail actuel. Référence 309 Instruction Export char_set est une chaîne identifiant un jeu de caractères, tel que « WindowsLatin1 ». Pour plus de détails, reportez-vous à la section Clause CharSet. d est un caractère utilisé comme délimiteur lors de l'exportation d'un fichier ASCII. decimal_places est un entier court (compris entre 0 et 16, la valeur par défaut étant 6), qui contrôle le nombre de décimales utilisées lors de l'exportation de nombres à virgule flottante au format ASCII. MI_x1, MI_y1, etc. sont des nombres qui représentent des coordonnées délimitées dans la table MapInfo Professional. DXF_x1, DXF_y1, etc. sont des nombres qui représentent des coordonnées délimitées dans le fichier DXF. Description L'instruction Export copie le contenu d'une table MapInfo dans un fichier distinct, à l'aide d'un format de fichier qui peut être modifié ou importé par d'autres logiciels. Par exemple, vous pouvez exporter le contenu d'une table dans un fichier DXF, puis utiliser un logiciel de CAO pour importer le fichier DXF. L'instruction Export ne modifie pas la table d'origine. Spécification du format de fichier La clause facultative Type indique le format du fichier que vous souhaitez créer. Clause Type Format de fichier défini Type MIF Format MapInfo Interchange File. Pour plus d'informations sur le format de fichier MIF, reportez-vous à la documentation MapInfo Professional. Type DXF Fichier DXF (format pris en charge par les logiciels de CAO, tels qu'AutoCAD). Type DBF Format de fichier dBASE. Remarque: Les objets carte ne sont pas exportés lorsque vous spécifiez le format DBF. Type ASCII Format de fichier texte. Remarque: Les objets carte ne sont pas exportés lorsque vous spécifiez le format ASCII. Type CSV Format de fichier texte délimité par des virgules. Remarque: Les objets carte ne sont pas exportés lorsque vous spécifiez le format CSV. 310 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Si vous omettez la clause Type, MapInfo Professional part du principe que l'extension du fichier correspond au format de fichier souhaité. Par exemple, si vous spécifiez le nom de fichier PARCELS.DXF, MapInfo Professional crée un fichier DXF. Si vous incluez le mot-clé facultatif Overwrite, MapInfo Professional crée le fichier d'exportation, qu'un fichier portant ce nom existe déjà ou non. Si vous omettez le mot-clé Overwrite et que le fichier existe déjà, MapInfo Professional ne l'écrase pas. Exportation de fichiers texte au format ASCII Lorsque vous exportez une table dans un fichier texte au format ASCII ou CSV, le fichier texte contient des délimiteurs. Un délimiteur est un caractère spécial qui sépare les champs dans chaque ligne de données. Les fichiers texte CSV utilisent automatiquement une virgule (,) comme délimiteur. Aucun autre délimiteur ne peut être spécifié pour l'exportation au format CSV. Le délimiteur par défaut pour un fichier texte ASCII est le caractère de tabulation (Chr$(9)). Pour définir un délimiteur différent, intégrez la clause facultative Delimiter. L'exemple ci-dessous utilise le caractère deux points (:) comme délimiteur : Export sites Into "sitedata.txt" Type "ASCII" Delimiter ":" Titles Lorsque vous exportez un fichier texte au format ASCII ou CSV, vous souhaitez peut-être inclure le mot-clé facultatif Titles. Si vous incluez Titles, la première ligne du fichier texte contient le nom des colonnes de la table. Si vous omettez Titles, le nom des colonnes n'est pas stocké dans le fichier texte (cela peut poser un problème si vous avez l'intention de réimporter le fichier par la suite). Exportation de fichiers DXF Si vous exportez une table dans un fichier DXF, à l'aide de la syntaxe 2 présentée ci-dessus, l'instruction Export peut inclure les clauses spécifiques à DFX : Incluez la clause Preserve AttributeData si vous souhaitez exporter les données de table de la table sous forme de données d'attribut dans le fichier DXF. Incluez la clause Preserve MultiPolygonRgns As Blocks si vous souhaitez que MapInfo Professional exporte chaque région multi-polygones sous forme d'entité de bloc DFX. Si vous omettez cette clause, chaque polygone d'une région comportant plusieurs polygones est stocké séparément. Insérez le mot-clé Binary pour exporter dans un fichier DXF binaire ou le mot-clé ASCII pour exporter dans un fichier DXF texte au format ASCII. Si vous n'incluez pas l'un des mots-clés, MapInfo Professional crée un fichier DXF au format ASCII. Les fichiers DXF binaires sont généralement plus petits et peuvent être traités bien plus rapidement que les fichiers DXF au format ASCII. Lorsque vous exportez au format ASCII, vous pouvez spécifier le nombre de décimales utilisées pour stocker des nombres à virgule flottante (0 à 16 décimales, 6 étant la valeur par défaut). La clause Version 12 ou Version 13 contrôle si MapInfo Professional crée un fichier DXF compatible avec AutoCAD 12 ou 13. Si vous omettez la clause, MapInfo Professional crée un fichier DXF de version 12. Transform indique une transformation de coordonnées. Dans la clause Transform, vous pouvez définir les coordonnées délimitées x et y minimales et maximales de la table MapInfo, puis les coordonnées minimales et maximales dont vous souhaitez disposer dans le fichier DXF. Référence 311 Fonction ExtractNodes( ) Exemple L'exemple ci-dessous utilise une table MapInfo existante (Facility) et exporte la table dans un fichier DXF appelé FACIL.DXF. Open Table "facility" Export facility Into "FACIL.DXF" Type "DXF" Overwrite Preserve AttributeData Preserve MultiPolygonRgns As Blocks ASCII DecimalPlaces 3 Transform (0, 0) (1, 1) (0, 0) (1, 1) Voir également Instruction Import Fonction ExtractNodes( ) Objectif Renvoie une polyligne ou une région créée à partir d'un sous-ensemble de nœuds dans un objet existant. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ExtractNodes( object, polygon_index, begin_node, end_node, b_region ) object est un objet polyligne ou région. polygon_index est une valeur entière, 1 ou plus, pour les objets région. Cela indique le polygone (pour les régions) ou la section (pour les polylignes) à interroger. begin_node est un numéro de nœud sous forme d'entier court, égal à 1 ou plus. Il indique le début de la plage de nœuds à renvoyer. end_node est un numéro de nœud sous forme d'entier court, égal à 1 ou plus. Il indique la fin de la plage de nœuds à renvoyer. b_region est une valeur logique qui contrôle si c'est un objet région ou polyligne qui est renvoyé. Utilisez TRUE pour un objet région ou FALSE pour un objet polyligne. Valeur renvoyée Renvoie un objet avec les nœuds spécifiés. MapBasic applique tous les styles (couleur, etc.) de l'objet initial. Ensuite, si cela est nécessaire, MapBasic applique les styles de dessin actuels. Description Si la valeur begin_node est égale ou supérieure à la valeur end_node, les nœuds sont renvoyés dans l'ordre suivant : • begin_node au nœud suivant jusqu'au dernier nœud du polygone ; • Premier nœud du polygone jusqu'à end_node. 312 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Si object est un objet région et si les valeurs begin_node et end_node sont toutes deux égales à 1, MapBasic renvoie l'intégralité de l'ensemble de nœuds pour ce polygone. Cela permet de bénéficier d'un mécanisme simple pour extraire un simple polygone d'une région comportant plusieurs polygones. Pour connaître le nombre de polygones contenus dans une région, appelez la fonction ObjectInfo( ). Conditions d'erreur L'erreur ERR_FCN_ARG_RANGE (644) est générée si la valeur de b_region est FALSE et que la plage de nœuds contient moins de deux nœuds, ou si la valeur de b_region est TRUE et que la plage de nœuds contient moins de trois nœuds. Voir également Fonction ObjectNodeX( ), Fonction ObjectNodeY( ) Instruction Farthest Objectif Recherchez l'objet d'une table le plus éloigné d'un objet spécifique. L'objet résultant est un objet polyligne à deux points, qui représente la distance la plus éloignée. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Farthest [ N | All ] From { Table fromtable | Variable fromvar } To totable Into intotable [ Type { Spherical | Cartesian } ] [ Ignore [ Contains ] [ Min min_value ] [ Max max_value ] Units unitname ] [ Data clause ] N est un paramètre facultatif représentant le nombre d'objets les plus éloignés (« farthest ») à trouver. La valeur par défaut est de 1. Si vous utilisez All, un objet distance est alors créé pour chaque association. fromtable est une table d'objets à partir de laquelle vous souhaitez rechercher les distances les plus éloignées. fromvar est une variable MapBasic qui représente un objet à partir duquel vous souhaitez rechercher les distances les plus éloignées. totable est une table d'objets vers laquelle vous souhaitez rechercher les distances les plus éloignées. intotable est une table dans laquelle placer les résultats. min_value est la distance minimale à inclure dans les résultats. max_value est la distance maximale à inclure dans les résultats. unitnameest une chaîne représentant le nom de l'unité de distance (« km », par exemple) utilisée pour le paramètre min_value et/ou max_value. Référence 313 Instruction Farthest Description L'instruction Farthest trouve tous les objets de la table fromtable les plus éloignés d'un objet particulier. Tous les objets de la table fromtable sont pris en compte. Pour chaque objet de la table fromtable, l'objet le plus éloigné de la table totable est localisé. Si le paramètre N est défini, les N objets de la table totable les plus éloignés sont localisés. Un objet polyligne à deux points représentant les points les plus éloignés entre l'objet fromtable et l'objet totable sélectionné est ajouté à la table intotable. Si l'option All est spécifiée, un objet est placé dans la table totable. Il représente alors la distance entre l'objet fromtable et chaque objet de la table totable. Si la table totable inclut plusieurs objets situés à la même distance d'un objet de la table fromtable donné, il est possible que seul l'un d'entre eux soit renvoyé. Si la requête porte sur plusieurs objets (c'est-à-dire si N est supérieur à 1), les objets de même distance remplissent des emplacements successifs. S'il existe un lien au niveau du second objet le plus éloigné et que trois objets sont demandés, l'un des seconds objets les plus éloignés devient le troisième objet le plus éloigné. Les objets des tables fromtable et totable peuvent être de n'importe quel type, sauf des objets texte. Par exemple, si les deux tables contiennent des objets région, la distance minimale entre les objets région est déterminée et l'objet polyligne à deux points créé représente les points de chaque objet utilisés pour calculer la distance. Si les objets région se croisent, la distance minimale est zéro et la polyligne à deux points renvoyée est dégénérée : les deux points sont identiques et représentent une intersection. Les distances calculées ne prennent pas en compte les distances routières. Il s'agit uniquement de distances à vol d'oiseau. La clause Ignore peut être utilisée pour limiter les distances à rechercher et peut affecter le nombre total d'objets totable détectés pour chaque objet fromtable. La distance Min peut permettre de supprimer les distances nulles. Cette option peut être utile pour supprimer les comparaisons de points identiques lors de l'utilisation de deux tables de points. Par exemple, si deux tables de points représentent des villes et que nous souhaitons localiser les villes les plus proches, il est possible d'exclure les villes identiques. La distance Max peut être utilisée pour limiter les objets à prendre en compte dans la table totable. Cette option est particulièrement utile lorsqu'elle est utilisée en association avec N ou All. Par exemple, nous souhaitons rechercher les cinq aéroports les plus proches d'un ensemble de villes (où la table fromtable représente l'ensemble de villes et la table totable un ensemble d'aéroports). Nous ne souhaitons cependant pas prendre en compte les aéroports situés à plus de 160 km de distance. Il est possible que moins de cinq aéroports soient renvoyés pour une ville donnée. Cette option peut également être utilisée en association avec le paramètre All, permettant de trouver tous les aéroports situés à 160 km d'une ville. L'ajout d'un paramètre Max peut améliorer les performances d'une instruction Farthest, le nombre d'objets totable recherchés étant limité de manière importante. Les distances réelles sont supérieures à min_value et inférieures ou égales à max_value : min_value < distance <= max_value Cela peut permettre de renvoyer des plages ou des distances en plusieurs fois, à l'aide de l'instruction Farthest. Par exemple, la première instance peut renvoyer tous les objets entre 0 et 160 km et la deuxième tous les objets entre 160 et 320 km. Les résultats ne contiendront pas de doublons (c'est-à-dire qu'une distance de 160 apparaît uniquement la première fois, jamais la deuxième). 314 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Type est la méthode utilisée pour calculer les distances entre les objets. Les paramètres possibles sont Spherical et Cartesian. Le type de calcul des distances du système de coordonnées de la table intotable doit être correct, autrement une erreur se produit. Si le système de coordonnées de la table intotable est non terrestre et que la distance est calculée à l'aide de la méthode sphérique, une erreur se produit. Si le système de coordonnées de la table intotable est Latitude/Longitude et que la distance est calculée à l'aide de la méthode cartésienne, une erreur se produit. La clause Ignore limite les distances renvoyées. Les distances identifiées étant inférieures ou égales à min_value ou supérieures à max_value ne sont pas prises en compte. min_value et max_value sont indiqués dans l'unité de distance définie par unitname. Si le paramètre unitname n'est pas une unité de distance valide, une erreur se produit. Pour obtenir la liste des noms d'unités disponibles, reportez-vous à la section Instruction Set Distance Units. La clause Ignore, dans son intégralité, est facultative, de même que les sous-clauses Min et Max qu'elle contient. Normalement, si un objet est inclus dans un autre, la distance entre les objets est nulle. Par exemple, si fromtable correspond à la table WorldCaps et totable à la table World, la distance entre Londres et le Royaume-Uni est de zéro. Si le mot-clé Contains est utilisé dans la clause Ignore, la distance n'est pas automatiquement égale à zéro. La distance de Londres à la frontière du Royaume-Uni est renvoyée à la place. En effet, tous les objets fermés, tels que les régions, sont considérés comme des polylignes dans le cadre de cette opération. La clause Data peut être utilisée pour indiquer l'objet fromtable et l'objet totable dont est issu le résultat. Clause Data Data IntoColumn1=column1, IntoColumn2=column2 La colonne IntoColumn à gauche du signe égal doit être une colonne valide de la table intotable. Le nom de colonne à droite du signe égal doit être un nom de colonne valide dans la table totable ou fromtable. Si un nom de colonne est utilisé à la fois dans la table totable et fromtable, la colonne de la table totable est utilisée (c'est-à-dire que la recherche porte d'abord sur les noms de colonne à droite du signe égal présents dans la table totable). Pour éviter de tels conflits, les noms de colonne peuvent être qualifiés à l'aide de l'alias de table. Par exemple : Data name1=states.state_name, name2=county.state_name Pour remplir une colonne de la table totable avec la distance, il est possible d'utiliser la fonctionnalité Table > Mettre à jour Colonne du menu ou l'Instruction Update. Voir également Instruction Nearest, Fonction CartesianObjectDistance( ), Fonction ObjectDistance( ), Fonction SphericalObjectDistance( ), Fonction CartesianConnectObjects( ), Fonction ConnectObjects( ), Fonction SphericalConnectObjects( ) Instruction Fetch Objectif Définit la position du curseur d'une table (par exemple, quelle ligne est active). Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Référence 315 Instruction Fetch Syntaxe Fetch { First | Last | Next | Prev | Rec n } From table n est le numéro de l'enregistrement à lire. table est le nom d'une table ouverte. Description Utilisez l'instruction Fetch pour extraire des enregistrements à partir d'une table ouverte. En exécutant une instruction Fetch, le programme place le curseur de la table à une certaine position dans la ligne, dans la table. Cela détermine l'enregistrement actif dans la table. Remarque: Le terme « curseur » est utilisé ici pour désigner la position d'une ligne dans une table. Cela n'a rien à voir avec le curseur affiché à l'écran. Une fois que vous exécutez une instruction Fetch, vous pouvez extraire des données de la ligne actuelle en utilisant l'un des types d'expression suivants : Syntaxe Exemple table.column World.Country table.col# World.col1 table.col( number ) World.col( 1 ) Une instruction Fetch First positionne le curseur au niveau de la première ligne non supprimée de la table. Une instruction Fetch Last positionne le curseur au niveau de la dernière ligne non supprimée de la table. Une instruction Fetch Next déplace le curseur vers l'avant jusqu'à la ligne non supprimée suivante. Une instruction Fetch Prev déplace le curseur vers l'arrière jusqu'à la ligne non supprimée précédente. Une instruction Fetch Rec n positionne le curseur sur une ligne spécifique, même si cette ligne est supprimée. Remarque: Si l'enregistrement spécifié est supprimé, l'instruction génère l'erreur d'exécution 404. Différentes opérations MapInfo Professional et MapBasic (par exemple, Select, Update et Redraw) réinitialisent automatiquement la ligne active. En conséquence, les instructions Fetch doivent être exécutées juste avant toute instruction qui considère la ligne qui est active. Lecture au-delà de la fin de la table Une fois que vous avez exécuté une instruction Fetch, vous pouvez avoir besoin d'appeler la fonction EOT( ) pour déterminer si vous avez extrait une ligne réelle. Si l'instruction Fetch a positionné le curseur sur une ligne réelle, la fonction EOT( ) renvoie FALSE (ce qui signifie qu'il n'y a pas de condition de fin de table). 316 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Si l'instruction Fetch a tenté de positionner le curseur après la dernière ligne, la fonction EOT( ) TRUE (ce qui signifie qu'il y a une condition de fin de table et que par conséquent, il n'y a pas de « ligne active »). L'exemple ci-dessous indique comment utiliser une instruction Fetch Next pour effectuer une boucle dans toutes les lignes d'une table. Dès qu'une instruction Fetch Next tente de lire la dernière ligne, la fonction EOT( ) renvoie TRUE, ce qui entraîne l'interruption de la boucle. Dim i As Integer i = 0 Fetch First From world Do While Not EOT(world) i = i + 1 Fetch Next From world Loop Print "Number of undeleted records: " + i Exemples L'exemple ci-dessous indique comment extraire le troisième enregistrement de la table States : Open Table "states" Fetch Rec 3 From states 'position at 3rd record Note states.state_name 'display name of state Comme indiqué dans l'exemple ci-dessous, l'instruction Fetch peut être utilisée dans une table temporaire (par exemple, Selection). Select * From states Where pop_1990 < pop_1980 Fetch First From Selection Note Selection.col1 + " has negative net migration" Voir également Fonction EOT( ), Instruction Open Table Fonction FileAttr( ) Objectif Renvoie des informations concernant un fichier ouvert. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe FileAttr( filenum, attribute ) filenum est le numéro d'un fichier ouvert via une Open File statement. attribute est un code qui indique l'attribut de fichier à renvoyer. Reportez-vous au tableau ci-dessous. Valeur renvoyée Entier Référence 317 Fonction FileExists( ) Description La fonction FileAttr( ) renvoie des informations sur un fichier ouvert. Le paramètre attribute doit être l'un des codes figurant dans le tableau ci-dessous : Paramètre attribute ID Valeur renvoyée FILE_ATTR_MODE 1 Entier court, qui indique le mode dans lequel le fichier a été ouvert. La valeur renvoyée est l'une des valeurs suivantes : • • • • • FILE_ATTR_FILESIZE 2 MODE_INPUT (0) MODE_OUTPUT (1) MODE_APPEND (2) MODE_RANDOM (3) MODE_BINARY (4) Entier, qui indique la taille du fichier en octets. Conditions d'erreur L'erreur ERR_FILEMGR_NOTOPEN (366) est générée si le fichier spécifié n'est pas ouvert. Voir également Fonction EOF( ), Instruction Get, Instruction Open File, Instruction Put Fonction FileExists( ) Objectif Renvoie une valeur logique, qui indique si un fichier existe ou pas. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe FileExists( filespec ) filespec est une chaîne qui indique le chemin et le nom du fichier. Valeur renvoyée Valeur logique : TRUE si le fichier existe déjà, FALSE dans les autres cas. Exemple If FileExists("C:\MapInfo\TODO.TXT") Then Open File "C:\MapInfo\TODO.TXT" For INPUT As #1 End If Voir également 318 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction TempFileName$( ) Fonction FileOpenDlg( ) Objectif Affiche une boîte de dialogue Fichier > Ouvrir, et renvoie le nom du fichier sélectionné par l'utilisateur. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe FileOpenDlg( path, filename, filetype, prompt ) path est une valeur de chaîne qui indique le répertoire ou le dossier dans lequel sélectionner les fichiers. filename est une valeur de chaîne, qui indique un nom de fichier par défaut que l'utilisateur doit sélectionner. filetype est une valeur de chaîne, comportant trois ou quatre caractères, qui indique un type de fichier (par exemple, TAB pour spécifier des tables). prompt est un titre sous forme de chaîne, qui s'affiche dans la barre dans la partie supérieure de la boîte de dialogue. Valeur renvoyée Valeur de chaîne, qui représente le nom du fichier sélectionné par l'utilisateur (ou une chaîne vide si l'utilisateur a annulé l'opération). Description La fonction FileOpenDlg( ) affiche une boîte de dialogue semblable à celle qui apparaît lorsque l'utilisateur sélectionne Fichier > Ouvrir. Pour sélectionner un fichier dans la liste qui s'affiche dans la boîte de dialogue, l'utilisateur peut cliquer sur un fichier dans la liste et cliquez sur le bouton OK ou simplement double-cliquer sur un fichier dans la liste. Dans un cas comme dans l'autre, la fonction FileOpenDlg( ) renvoie une chaîne qui représente le chemin complet et le nom du fichier sélectionné par l'utilisateur. Autrement, si l'utilisateur clique sur le bouton Annuler au lieu de sélectionner un fichier, la boîte de dialogue renvoie une chaîne vide (""). La fonction FileOpenDlg( ) n'ouvre pas réellement des fichiers. Elle affiche simplement une boîte de dialogue à l'attention de l'utilisateur et permet à ce dernier de sélectionner un fichier. Si l'application doit ensuite ouvrir réellement le fichier sélectionné par l'utilisateur, l'application doit exécuter une instruction comme l'instruction Open Table. Si vous souhaitez que l'application affiche une boîte de dialogueOuvrir, et qu'ensuite vous souhaitez que MapInfo Professional ouvre automatiquement le fichier sélectionné, vous pouvez exécuter une instruction comme l'instruction Run Menu Command avec M_FILE_OPEN ou M_FILE_ADD_WORKSPACE. Le paramètre path spécifie le répertoire ou le dossier à partir duquel l'utilisateur sélectionne un fichier existant. Notez que le paramètre path ne détermine que le répertoire initial. Il n'empêche pas l'utilisateur de modifier les répertoires une fois que la boîte de dialogue s'affiche. Si le paramètre path est vide (chaîne vide), la boîte de dialogue affiche une liste des fichiers dans le répertoire de travail actuel. Le paramètre filename indique le nom de fichier par défaut à sélectionner par l'utilisateur. Référence 319 Fonction FileOpenDlg( ) Le paramètre filetype est une chaîne, composée généralement de trois ou quatre caractères, indiquant le type de fichiers qui doit apparaître dans la boîte de dialogue. Certains paramètresfiletype ont une signification particulière. Par exemple, si le paramètre filetype est TAB, la boîte de dialogue présente une liste des tables MapInfo, et si le paramètre filetype est WOR, la boîte de dialogue présente une liste des fichiers de documents MapInfo. Il existe également toute une gamme d'autres valeurs filetype, répertoriées dans le tableau ci-après. Si vous indiquez l'une des valeurs de type particulier contenues dans le tableau suivant, la boîte de dialogue comprend une commande qui permet à l'utilisateur de choisir entre l'affichage d'une liste des fichiers de table ou une liste de tous les fichiers (« *.* »). Paramètre filetype Type de fichiers qui apparaissent TAB Tables MapInfo WOR Documents MapInfo MIF Fichiers au format MapInfo Interchange Format, utilisés pour l'importation/exportation de cartes à partir de/vers des fichiers texte au format ASCII. DBF Fichiers dBASE ou de données compatibles WKS, WK1 Fichiers de feuilles de calcul Lotus XLS, XLSX Fichiers de feuilles de calcul Excel DXF Fichiers au format d'échange de données AutoCAD MMI, MBI Fichiers d'échange MapInfo pour DOS MB Fichiers de programme source MapBasic MBX Applications MapBasic compilées TXT Fichiers texte BMP Fichiers bitmap Windows WMF Métafichiers Windows Chacun des types de fichiers à trois caractères mentionné ci-dessus correspond à une extension de fichier réelle. En d'autres termes, si vous spécifiez un paramètre filetype WOR, cela indique à MapBasic qu'il doit afficher une liste des fichiers possédant l'extension .WOR, car il s'agit de l'extension utilisée par les documents MapInfo Professional. Pour vous aider à écrire des applications portables, MapBasic permet d'utiliser les mêmes paramètres filetype à trois caractères sur toutes les plates-formes. Sous Windows, une commande dans le coin inférieur gauche de la boîte de dialogue permet à l'utilisateur de choisir d'afficher une liste des fichiers avec l'extension .TAB ou une liste de tous les fichiers dans le répertoire actif. Si la fonction FileOpenDlg( ) indique un paramètre filetype non répertorié dans le tableau d'extensions de fichier ci-dessus, la boîte de dialogue apparaît sans cette commande. 320 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exemple Dim s_filename As String s_filename = FileOpenDlg("","","TAB","Open Table") Voir également Fonction FileSaveAsDlg( ), Instruction Open File, Instruction Open Table Fonction FileSaveAsDlg( ) Objectif Affiche une boîte de dialogue Enregistrer sous et renvoie le nom du fichier indiqué par l'utilisateur. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe FileSaveAsDlg( path, filename, filetype, prompt ) path est une valeur de chaîne indiquant le répertoire de destination par défaut. filename est une valeur de chaîne indiquant le nom de fichier par défaut. filetype est une valeur de chaîne, qui indique le type de fichier que l'utilisateur peut sélectionner dans la boîte de dialogue. prompt est un titre de chaîne qui apparaît dans le haut de la boîte de dialogue. Valeur renvoyée Valeur de chaîne, qui représente le nom du fichier indiqué par l'utilisateur (ou une chaîne vide si l'utilisateur a annulé l'opération). Description La fonction FileSaveAsDlg( ) affiche une boîte de dialogue Enregistrer sous , semblable à la boîte de dialogue qui apparaît lorsque l'utilisateur sélectionne Fichier > Enregistrer table sous. L'utilisateur peut entrer le nom du fichier à enregistrer. Autrement, l'utilisateur peut double-cliquer dans la liste des noms de fichier grisés qui s'affiche dans la boîte de dialogue. Comme chaque nom de fichier de la liste représente un fichier existant, MapBasic demande à l'utilisateur de vérifier qu'il souhaite remplacer le fichier existant. Si l'utilisateur indique une valeur filename et clique sur OK, la fonction FileSaveAsDlg( ) renvoie une chaîne de caractères représentant le chemin et nom complets du fichier sélectionné par l'utilisateur. Si l'utilisateur clique sur le bouton Annuler au lieu de sélectionner un fichier, la fonction renvoie une chaîne vide (""). Le paramètre path indique le chemin d'accès au répertoire initial. L'utilisateur peut modifier les répertoires une fois que la boîte de dialogue s'affiche. Si le paramètre path est vide (chaîne vide), la boîte de dialogue affiche une liste des fichiers dans le répertoire actuel. Le paramètre filename indique le nom de fichier par défaut à sélectionner par l'utilisateur. Référence 321 Instruction Find Le paramètre filetype est une chaîne, comportant généralement trois caractères (ou moins), qui indique le type des fichiers s'affichant dans la boîte de dialogue. Pour afficher une boîte de dialogue qui répertorie les documents, indiquez la chaîne WOR comme paramètre filetype Pour afficher une boîte de dialogue qui répertorie les noms de table, indiquez la chaîne TAB. Pour plus d'informations sur les codes filetype sur trois caractères, reportez-vous à la section Fonction FileOpenDlg( ). La fonction FileSaveAsDlg( ) n'ouvre pas réellement des fichiers. Elle affiche simplement une boîte de dialogue à l'attention de l'utilisateur et permet à ce dernier de sélectionner un fichier. Pour enregistrer des données sous un nom de fichier sélectionné par l'utilisateur, exécutez une instruction comme l'instruction Commit Table. Voir également Instruction Commit Table, Fonction FileOpenDlg( ) Instruction Find Objectif Recherche un emplacement dans une table cartographiable. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Find address [ , region ] [ Interactive ] address est une expression de chaîne, qui représente le nom d'un objet carte à rechercher. Pour trouver l'intersection de deux rues, utilisez la syntaxe : streetname && streetname. region est le nom d'un objet région qui affine la recherche. Description L'instruction Find recherche une table cartographiable pour un emplacement nommé (représenté par le paramètre address). MapBasic stocke les résultats de la recherche dans des variables système, auxquelles un programme peut accéder par le biais de la fonction CommandInfo( ). Si l'instruction Find contient le mot-clé facultatif Interactive keyword, et si MapBasic ne peut pas localiser l'adresse indiquée, une boîte de dialogue affiche une liste de « résultats approchants ». L'instruction Find ne peut effectuer une recherche que dans une table cartographiable (par exemple, une table à laquelle des objets graphiques sont associés). La table doit déjà être ouverte. L'instruction Find est applicable dans toutes les colonnes sélectionnées pour la recherche. Un programme MapBasic peut exécuter une instruction Find Using pour identifier une colonne spécifique d'une table dans laquelle effectuer une recherche. Si l'instruction Find n'est pas précédée d'une instruction Find Using, MapBasic recherche la table indiquée la dernière fois que l'utilisateur a sélectionné la commande Sélection > Rechercher de MapInfo Professional. L'instruction Find peut affiner une recherche si vous spécifiez un nom de région en plus du paramètre address. En d'autres termes, vous pouvez simplement essayer de rechercher un nom de ville (par exemple, « Albany ») en recherchant une table des villes. Vous pouvez également affiner la recherche en spécifiant un nom de ville et un nom de région (par exemple, « Albany », « CA »). L'instruction Find n'ajoute pas automatiquement un symbole à la carte pour marquer l'emplacement auquel l'adresse a 322 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z été localisée. Pour créer un tel symbole, appelez la fonction CreatePoint( ) ou l'instruction Create Point ; voir l'exemple ci-dessous. Détermination de la détection de l'adresse Après une instruction Find, un programme MapBasic peut émettre un appel de fonction CommandInfo(CMD_INFO_FIND_RC) pour déterminer si la recherche a abouti. Si c'est le cas, appelez la fonction CommandInfo(CMD_INFO_X) pour déterminer la coordonnée x de l'emplacement recherché, et appelez la fonction CommandInfo(CMD_INFO_Y) pour déterminer la coordonnée y. Pour déterminer le numéro de ligne qui correspond à l'adresse trouvée, appelez la fonction CommandInfo(CMD_INFO_FIND_ROWID). L'instruction Find peut donner une correspondance exacte, une correspondance approchante ou une correspondance nulle. Si l'instruction Find aboutit à une correspondance exacte, l'appel de la fonction CommandInfo(CMD_INFO_FIND_RC) renvoie la valeur 1 (un). Si l'instruction Find aboutit à une correspondance approchante, l'appel de la fonction renvoie une valeur supérieure à 1 (un). Si l'instruction Find ne correspond pas à l'adresse, l'appel de la fonction renvoie une valeur négative. Référence 323 Instruction Find Le tableau ci-dessous récapitule les informations liées à la recherche représentées par la valeur renvoyée par CommandInfo(CMD_INFO_FIND_RC). La valeur renvoyée possède trois caractères au maximum et chacun de ces trois caractères indique la réussite relative ou l'échec d'une autre partie de la recherche. Valeurs des caractères Signification 324 xx1 Correspondance exacte. xx2 Substitution du fichier d'abréviations utilisé. xx3 ( - ) Correspondance exacte non trouvée. xx4 ( - ) Aucun nom d'objet spécifié. Correspondance introuvable. xx5 ( + ) L'utilisateur a sélectionné un nom dans la boîte de dialogue Interactif. x1x Côté de la rue non déterminé. x2x ( + / - ) Numéro de l'adresse compris dans la plage de valeurs min./max. x3x ( + / - ) Numéro de l'adresse non compris dans la plage de valeurs min./max. x4x ( + / - ) Numéro de l'adresse non spécifié. x5x ( - ) Les rues ne se croisent pas. x6x ( - ) La correspondance de la ligne ne comporte pas d'objet carte. x7x ( + ) L'utilisateur a sélectionné un numéro d'adresse dans la boîte de dialogueInteractif. 1xx ( + / - ) Nom détecté dans une seule région, autre que la région spécifiée. 2xx ( - ) Nom détecté dans plusieurs régions, autres que la région spécifiée. 3xx ( + / - ) Aucune région destinée à affiner la recherche n'a été spécifiée et une correspondance a été trouvée. 4xx ( - ) Aucune région n'a été spécifiée et plusieurs correspondances ont été détectées. 5xx ( + ) Nom détecté plusieurs fois dans la région spécifiée. 6xx ( + ) L'utilisateur a sélectionné un nom de région dans la boîte de dialogue Interactif. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z L'opérateur Mod est utile pour examiner les caractères dans les résultats de la recherche. Par exemple, pour déterminer le dernier chiffre d'un numéro, utilisez l'expression number Mod 10. Pour déterminer les deux derniers chiffres d'un numéro, utilisez l'expression number Mod 100, etc. La distinction entre la correspondance exacte et la correspondance approchante est mieux illustrée par un exemple. Si une table des villes contient une entrée pour « Albany », et que l'instruction Find Using tente de rechercher un nom de ville sans affiner le nom de région, et que l'instruction Find spécifie une valeur de paramètre address « Albany », la recherche aboutit à une correspondance exacte. Après cette instruction Find, l'appel de la fonction CommandInfo(CMD_INFO_FIND_RC) renvoie une valeur de 1 (un), indiquant la détection d'une correspondance exacte. Maintenant, supposons que l'opération Find ait été configurée de manière à affiner la recherche avec un nom de région facultatif. En d'autres termes, l'instruction Find attend un nom de ville suivi d'un nom d'état (par exemple, "Albany", "NY"). Si un programme MapBasic exécute alors une instruction Find avec « Albany » comme adresse et une chaîne Null comme nom d'état, il ne s'agit pas d'une correspondance exacte du point de vue technique car MapBasic s'attend à ce que le nom de ville soit suivi d'un nom d'état. Néanmoins, s'il y a un seul enregistrement « Albany » dans la table, MapBasic peut localiser cet enregistrement. Après cette opération Find, l'appel de la fonction CommandInfo(CMD_INFO_FIND_RC) renvoie une valeur de 301. Le chiffre 1 signifie que le nom de la ville correspond parfaitement, alors que le chiffre 3 indique que MapBasic n'a obtenu qu'un résultat partiel lors de la localisation d'une région destinée à affiner la recherche. Si une table de rues contient « Main St » et qu'une instruction Find tente de rechercher « Main Street », MapBasic considère que les résultats constituent une correspondance approximative (à condition que le traitement du fichier d'abréviations ait été activé ; voir Instruction Find Using). À proprement parler, la chaîne « Main Street » ne correspond pas à la chaîne « Main St ». En revanche, MapBasic peut faire correspondre les deux chaînes après avoir remplacé les abréviations possibles à partir du fichier d'abréviations MapInfo Professional (MAPINFOW.ABB). Après l'instruction Find, l'appel de la fonction CommandInfo(CMD_INFO_FIND_RC) renvoie une valeur de 2. Si l'opération Find affiche une boîte de dialogue à l'utilisateur et que l'utilisateur entre du texte dans cette boîte de dialogue pour effectuer la recherche, le code de retour comporte la valeur 1 (un) à la position des millions. Exemple Include "mapbasic.def" Dim x, y As Float, win_id As Integer Open Table "states" Interactive Map From States win_id = FrontWindow( ) Find Using states(state) Find "NY" If CommandInfo(CMD_INFO_FIND_RC) >= 1 Then x = CommandInfo(CMD_INFO_X) y = CommandInfo(CMD_INFO_Y) Set Map Window win_id Center (x, y) ' Now create a symbol at the location we found. ' Create the object in the Cosmetic layer. Insert Into WindowInfo( win_id, WIN_INFO_TABLE) (Object) Values ( CreatePoint(x, y) ) Else Référence 325 Instruction Find Using Note "Location not found." End If Voir également Instruction Find Using, Fonction CommandInfo( ) Instruction Find Using Objectif Détermine les tables et les colonnes dans lesquelles la recherche doit être effectuée dans les opérations Find suivantes. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Find Using table ( column ) [ Refine Using table ( column ) ] [ Options [ Abbrs { On | Off } ] [ ClosestAddr { On | Off } ] [ OtherBdy { On | Off } ] [ Symbol symbol_style ] [ Inset inset_value { Percent | Distance Units dist_unit} ] [ Offset value ] [ Distance Units dist_unit ] ] table est le nom d'une table ouverte. column est le nom d'une colonne de la table. symbol_style est une variable Symbol ou un appel de fonction qui renvoie une valeur Symbol. Elle contrôle le type de symbole dessiné sur la carte si l'utilisateur sélectionne Sélection > Rechercher. inset_value est une valeur entière positive qui représente la distance à laquelle ajuster la position d'une adresse par rapport aux extrémités de la ligne. value indique la valeur Offset (la distance à partir de la rue). dist_unit est une chaîne qui représente le nom d'une unité de distance (par exemple, « mi » pour miles, « m » pour mètres). Description L'instruction Find Using indique les tables et les colonnes dans lesquelles MapBasic effectue la recherche lors de l'exécution d'une instruction Find statement. La colonne spécifiée doit être indexée. La clause facultative Refine spécifie une seconde table, qui sert de critère de recherche supplémentaire. La table doit contenir des objets région. La colonne spécifiée n'a pas besoin d'être indexée. Si vous omettez la clause Refine les instructions Refine suivantes attendent un simple nom de lieu (par exemple, « Portland »). Si vous incluez une clause Refine, les instructions Find suivantes attendent un nom de lieu et un nom de région (par exemple, « Portland », « OR »). La clause facultative Abbrs détermine si MapBasic essaie de remplacer les abréviations à partir du fichier d'abréviations afin de rechercher une correspondance. Par défaut, cette option est activée (On). Pour désactiver l'option, indiquez la clause Abbrs Off. 326 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z La clause facultative ClosestAddr détermine si MapBasic utilise le numéro d'adresse le plus proche disponible lorsque le numéro d'adresse ne correspond pas. Par défaut, cette option est désactivée (Off). Pour activer l'option, indiquez la clause ClosestAddr On. La clause facultative OtherBdy détermine si MapBasic effectue une correspondance avec un enregistrement détecté dans une région servant à affiner la recherche autre que la région spécifiée. Par défaut, cette option est désactivée (Off). Pour activer l'option, indiquez la clause OtherBdy On. MapInfo Professional enregistre les paramètres Inset et Offset indiqués la dernière fois que l'utilisateur a sélectionné Sélection > Options de recherche, Table > Options de géocodage ou exécuté une instruction Find Using. La dernière option de marge indiquée devient la configuration par défaut pour la prochaine occurrence. Si Percent est spécifié, il représente le pourcentage de la longueur de la ligne sur laquelle l'adresse doit être positionnée. Pour Percent, les valeurs valides de inset_value sont comprises entre 0 et 50. Si les valeurs Distance Units sont renseignées, inset_value représente la distance à partir des extrémités de la ligne sur laquelle l'adresse doit être positionnée. Pour la distance, les valeurs valides de inset_value sont comprises entre 0 et 32 767. La marge utilise les adresses qui correspondraient normalement à l'extrémité de la rue et les déplace à partir de l'extrémité en direction du centre. La valeur Offset définit les adresses à partir de la rue et non à partir de l'intérieur de la rue. value est une valeur entière positive, qui représente la distance de décalage servant à positionner l'adresse à partir de la rue. Les valeurs valides sont comprises entre 0 et 32 767. Exemple Find Using city_1k(city) Refine Using states(state) Find "Albany", "NY" Voir également Instruction Create Index, Instruction Find Fonction Fix( ) Objectif Renvoie une valeur entière, obtenue en supprimant la partie fractionnelle d'une valeur décimale. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Fix( num_expr ) num_expr représente une expression numérique. Valeur renvoyée Entier Référence 327 Clause Font Description La fonction Fix( ) supprime la fraction d'un nombre et renvoie la valeur entière qui en résulte. La fonction Fix( ) est semblable, sans toutefois être identique, à la Fonction Int( ). Les deux fonctions ne traitent pas les valeurs fractionnelles négatives de la même manière. Lorsqu'un nombre fractionnel négatif est transmis à la fonction Fix( ) renvoie la valeur entière la plus proche, supérieure ou égale à la valeur initiale. Ainsi, l'appel de fonction : Fix(-2.3) renvoie la valeur –2. Cependant, lorsqu'un nombre fractionnel négatif est transmis à la fonction Int( ), celle-ci renvoie la valeur entière la plus proche, inférieure ou égale à la valeur initiale. Ainsi, l'appel de fonction : Int(-2.3) renvoie la valeur –3. Exemple Dim i_whole As Integer i_whole = Fix(5.999) ' i_whole now has the value 5. i_whole = Fix(-7.2) ' i_whole now has the value -7. Voir également Fonction Int( ), Fonction Round( ) Clause Font Objectif Spécifie un style de texte. Vous pouvez utiliser cette clause dans la fenêtre MapBasic de MapInfo Professional. Syntaxe Font font_expr font_expr est une expression Font, par exemple : MakeFont( fontname, style, size, fgcolor, bgcolor ) Description La clause Font indique un style de texte. Font est une clause et non une instruction MapBasic complète. Différentes instructions liées aux objets, comme l'instruction Create Text, permettent de spécifier un paramètre de police. Cela permet de sélectionner la police et la taille du nouvel objet texte. Si vous omettez l'expression Font d'une instruction Create Text, le nouvel objet utilise la police actuelle de MapInfo Professional. Le mot-clé Font peut être suivi d'une expression dont le résultat sera une valeur Font. Cette expression peut être une variable Font : Font font_var 328 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z ou un appel de fonction (par exemple, la fonction CurrentFont( ) ou la fonction MakeFont( )) qui renvoie une valeur Font : Font MakeFont("Helvetica", 1, 12, BLACK, WHITE) Avec certaines instructions MapBasic (par ex. : l'instruction Set Legend), le mot-clé Fontpeut être suivi directement par les cinq paramètres qui définissent un style Font (nom de police, style, taille de point, couleur de premier plan et couleur de fond) entre parenthèses : Font("Helvetica", 1, 12, BLACK, WHITE) Le tableau ci-dessous récapitule les composants qui définissent une police : Paramètre Description nom de police Chaîne qui identifie une police. L'ensemble de polices disponibles dépend du système de l'utilisateur et de la plate-forme matérielle utilisée. style Valeur entière. Contrôle les attributs de texte (ex. : gras, italique et souligné). Pour plus d'informations, reportez-vous au tableau ci-dessous. taille Valeur entière qui représente une taille exprimée en points. La taille 12 correspond à 1/6 de pouce. couleur de premier plan Valeur de couleur RVB entière, qui représente la couleur du texte. Reportez-vous à la section Fonction Rnd( ). couleur de fond Valeur entière qui représente une couleur RVB. Si le style halo est utilisé, il s'agit de la couleur du halo. Autrement, il s'agit de la couleur de remplissage du fond. Pour définir un style de fond transparent dans une clause Font, ne renseignez pas la couleur de fond. Par exemple : Font( "Helvetica", 1, 12, BLACK). Pour définir une trame transparente lors de l'appel de la fonction MakeFont( ), indiquez -1 pour la couleur de fond. Le tableau ci-dessous indique comment le paramètre de style correspond aux styles de police. Valeur du style Description du style de texte 0 Brut 1 Gras 2 Italique 4 Souligné 8 Barré 32 Ombré 256 Halo 512 Majuscules 1024 Espacé Référence 329 Instruction For...Next Pour définir plusieurs attributs de style, ajoutez les valeurs de la colonne de gauche. Par exemple, pour spécifier les attributs Gras et Majuscules, utilisez la valeur de style 513. Exemple Include "MAPBASIC.DEF" Dim o_title As Object Create Text Into Variable o_title "Your message could go HERE" (73.5, 42.6) (73.67, 42.9) Font MakeFont("Helvetica",1,12,BLACK,WHITE) Voir également Instruction Alter Object, Fonction Chr$( ), Instruction Create Text, Fonction RGB( ) Instruction For...Next Objectif Définit une boucle qui exécutera un nombre spécifique d'itérations. Restrictions Vous ne pouvez pas émettre d'instruction For...Next dans la fenêtre MapBasic. Syntaxe For var_name = start_expr To end_expr [ Step inc_expr ] statement_list Next var_name est le nom d'une variable numérique. start_expr est une expression numérique. end_expr est une expression numérique. inc_expr est une expression numérique. statement_list est le groupe d'instructions à exécuter à chaque itération de la boucle For. Description L'instruction For...Next assure le contrôle de la boucle. Cette instruction nécessite une variable numérique (identifiée par le paramètre var_name). Une instruction For...Nextexécute un groupe d'instructions (statement_list) plusieurs fois ou ignore complètement le groupe statement_list. Les valeurs start_expr, end_expr et inc_expr définissent le nombre de fois où le groupe statement_list sera exécuté, le cas échéant. S'il détecte une instruction For...Next, MapBasic affecte la valeur start_exprà la variable var_name. Si la variable est inférieure ou égale à la valeur end_expr, MapBasic exécute le groupe d'instructions statement_list, puis ajoute la valeur incrémentielle inc_expr à la variable. Si aucune clause Step n'est indiquée, MapBasic utilise une valeur incrémentielle par défaut de un. MapBasic compare alors la valeur actuelle de la variable avec l'expression end_expr. Si la variable est inférieure ou égale à la valeur 330 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z end_expr, MapBasic exécute à nouveau les instructions du groupe statement_list. En revanche, si la variable var_name est supérieure à l'expression end_expr, MapBasic arrête la boucle For, et reprend l'exécution avec l'instruction suivant l'instruction Next. Inversement, l'instruction For...Nextpeut également compter dans le sens inverse à l'aide d'une valeur Step négative. Dans ce cas, chaque itération de la boucle For diminue la valeur de la variable var_name et MapBasic ne continuera à exécuter la boucle que tant que la variable var_name restera supérieure ou égale à end_expr. Chaque instruction For doit être arrêtée par une instruction Next. Toute instruction qui apparaît entre les instructions For et Next comprend le groupe statement_list. Ce dernier représente la liste des instructions à exécuter en fonction de chaque itération de la boucle. L'instruction Exit For vous permet de quitter une boucle For quel que soit l'état de la variable var_name. L'instruction Exit For indique à MapBasic de sortir de la boucle et de reprendre l'exécution avec la première instruction suivant l'instruction Next. MapBasic vous permet de modifier la variable var_name dans le corps de la boucle For. Cela peut affecter le nombre d'exécutions de la boucle. Cependant, en ce qui concerne le style de programmation, essayez d'éviter de modifier le contenu de la variable var_name dans la boucle. Exemple Dim i As Integer ' the next loop will execute a Note statement 5 times For i = 1 to 5 Note "Hello world!" Next ' the next loop will execute the Note statement 3 times For i = 1 to 5 Step 2 Note "Hello world!" Next ' the next loop will execute the Note statement 3 times For i = 5 to 1 Step -2 Note "Hello world!" Next ' MapBasic will skip the following For statement ' completely, because the initial start value is ' already larger than the initial end value For i = 100 to 50 Step 5 Note "This note will never be executed" Next Voir également Instruction Do...Loop, Instruction Exit For Procédure ForegroundTaskSwitchHandler Objectif Nom de procédure réservé, appelé automatiquement lorsque MapInfo Professional est sélectionné (devenant ainsi l'application active) ou ne l'est plus (une autre application devient active). Référence 331 Fonction Format$( ) Syntaxe Declare Sub ForegroundTaskSwitchHandler Sub ForegroundTaskSwitchHandler statement_list End Sub statement_list est une liste d'instructions. Description Si l'utilisateur exécute une application contenant une procédure appelée ForegroundTaskSwitchHandler, MapInfo Professional appelle la procédure automatiquement chaque fois que MapInfo Professional est sélectionné ou ne l'est plus. Dans le cadre de la procédure, appelez la fonction CommandInfo( ) pour savoir si MapInfo Professional est sélectionné ou ne l'est plus. Exemple Sub ForegroundTaskSwitchHandler If CommandInfo(CMD_INFO_TASK_SWITCH) = SWITCHING_INTO_MAPINFO Then ' ... then MapInfo just became active Else ' ... another app just became active End If End Sub Voir également Fonction CommandInfo( ) Fonction Format$( ) Objectif Renvoie une chaîne qui représente un nombre auquel une mise en forme personnalisée est appliquée. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Format$ ( value, pattern ) value est une expression numérique. pattern est une chaîne qui indique comment formater les résultats. Valeur renvoyée Chaîne 332 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description La fonction Format$( ) renvoie une chaîne représentant un nombre formaté. Avec une valeur numérique telle que 12345,67, Format$( ) peut générer des résultats formatés comme « $12 345,67 ». Le paramètre value indique la valeur numérique que vous souhaitez formater. Le paramètre pattern est une chaîne de caractères de code, choisi pour générer un type de résultat formaté spécifique. La chaîne pattern doit comprendre au moins un caractère de format spécial, comme #, 0, %, la virgule (,), le point (.) ou le point-virgule (;). Ces caractères contrôlent l’apparence des résultats. Le tableau ci-dessous récapitule les caractères de formatage. Caractère de motif Rôle dans le formatage des résultats # Le résultat inclut un ou plusieurs chiffres provenant de cette valeur. Si la chaîne pattern contient un ou plusieurs caractères # avant la décimale, et que la valeur est comprise entre zéro et un, la chaîne de résultat formatée n'inclut pas de zéro avant la décimale. 0 Marqueur d’insertion de chiffres semblable au caractère #. Si la chaîne pattern contient un ou plusieurs caractères 0 avant la décimale, et que la valeur est comprise entre zéro et un, la chaîne de résultat formatée inclut un zéro avant la décimale. Reportez-vous aux exemples ci-dessous. . (period) La chaîne pattern doit comprendre un point, si vous souhaitez que la chaîne de résultat intègre un « séparateur décimal ». La chaîne de résultat inclura le séparateur décimal en cours d'utilisation sur l'ordinateur de l'utilisateur. Pour que le séparateur décimal soit absolument un point, utilisez l'instruction Set Format. , (comma) La chaîne pattern doit comprendre une virgule si vous souhaitez que la chaîne de résultat intègre des « séparateurs de milliers ». La chaîne de résultat inclura le séparateur de milliers actuellement configuré sur l'ordinateur de l'utilisateur. Pour forcer le séparateur de milliers à être une virgule, utilisez l'instruction Set Format. % Le résultat représente la valeur multipliée par 100. Ainsi, une valeur de 0,75 génère une chaîne de résultat de 75 %. Lorsque vous souhaitez insérer un signe pourcentage dans votre résultat, mais ne voulez pas que MapBasic multiplie la valeur par 100, placez un caractère \ (barre oblique inversée) avant le signe pourcentage (voir plus bas). E+ Le résultat est formaté selon la notation scientifique. Par exemple, la valeur 1234 produit le résultat : 1.234e+03. Si l'exposant est positif, un signe plus s'affiche après le « e ». Si l’exposant est négatif (ce qui est le cas pour les nombres fractionnels), un signe moins apparaît après le « e ». E- Cette chaîne de caractères de contrôle fonctionne comme la chaîne E+, mais le résultat n’affiche jamais un signe plus après le « e ». ; (semi-colon) En insérant un point-virgule dans votre chaîne pattern, vous pouvez indiquer un format pour les nombres positifs et un autre pour les nombres négatifs. Référence 333 Fonction Format$( ) Caractère de motif Rôle dans le formatage des résultats Placez le point-virgule après le premier ensemble de caractères de formatage et avant le second ensemble de caractères de formatage. Le second ensemble de caractères de formatage concerne les nombres négatifs. Si vous souhaitez que les nombres négatifs apparaissent avec le signe moins, intégrez « - » dans le deuxième jeu de caractères de format. \ Lorsque le caractère barre oblique inversée apparaît dans une chaîne pattern, MapBasic n'effectue pas de traitement spécial pour le caractère qui suit ce caractère. Cela permet d'inclure des caractères spéciaux (par exemple, %) dans les résultats, sans entraîner les actions de formatage spéciales décrites ci-dessus. Conditions d'erreur L'erreur ERR_FCN_INVALID_FMT (643) est générée si la chaîne pattern n'est pas valide. Exemples Les exemples ci-dessous présentent les résultats que vous pouvez obtenir en utilisant différentes chaînes pattern. Les résultats sont indiqués en commentaire dans le code. Remarque: Vous obtenez des résultats légèrement différents si l'ordinateur est configuré avec un format de nombres autre que le format américain. Format$( 12345, Format$(-12345, Format$( 12345, Format$(-12345, ",#") ",#") "$#") "$#") ' ' ' ' returns returns returns returns "12,345" "-12,345" "$12345" "-$12345" Format$( 12345.678, "$,#.##") ' returns "$12,345.68" Format$(-12345.678, "$,#.##") ' returns "-$12,345.68" Format$( 12345.678, "$,#.##;($,#.##)") 'returns "$12,345.68" Format$(-12345.678, "$,#.##;($,#.##)") 'returns "($12,345.68)" Format$(12345.6789, ",#.###") ' returns "12,345.679" Format$(12345.6789, ",#.#") ' returns "12,345.7" Format$(-12345.6789, "#.###E+00") ' returns "-1.235e+04" Format$( 0.054321, "#.###E+00") ' returns "5.432e-02" Format$(-12345.6789, "#.###E-00") ' returns "-1.235e04" Format$( 0.054321, "#.###E-00") ' returns "5.432e-02" Format$(0.054321, "#.##%") ' returns "5.43%" Format$(0.054321, "#.##\%") ' returns ".05%" Format$(0.054321, "0.##\%") ' returns "0.05%" Voir également Fonction Str$( ) 334 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction FormatDate$( ) Objectif Renvoie une date formatée dans le style de date court spécifié par le Panneau de configuration. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Remarque: La fonction FormatDate$( ) n'est pas configurable, tandis que la fonction FormatTime$( ) permet de contrôler entièrement le résultat. Syntaxe FormatDate$( value ) value est un nombre ou une chaîne représentant la date au format AAAAMMJJ. Valeur renvoyée Chaîne Description La fonction FormatDate$( ) renvoie une chaîne qui représente une date au format du système local, comme indiqué par le Panneau de configuration. Si vous spécifiez l'année sous forme de nombre à deux chiffres (par exemple, 96), MapInfo Professional utilise le siècle actuel ou le siècle déterminé par l'instruction Set Date Window( ). L'année peut être sous forme d'expressions à deux chiffres. Utilisez la fenêtre Date pour déterminer le siècle à utiliser. Reportez-vous à la section Fonction DateWindow( ). Exemples En considérant que les paramètres du Panneau de configuration sont j/m/a pour l'ordre de la date, '-' comme séparateur de date et jj-MMM-aaaa pour le format de date court : Dim d_Today As Date d_Today = CurDate( ) Print d_Today 'returns "19970910" Print FormatDate$( d_Today ) 'returns "10-Sep-1997" Dim s_EnteredDate As String s_EnteredDate = "03-02-61" Print FormatDate$( s_EnteredDate ) 'returns "03-Feb-1961" s_EnteredDate = "12-31-61" Print FormatDate$( s_EnteredDate ) ' returns ERROR: not d/m/y ordering s_EnteredDate = "31-12-61" Print FormatDate$( s_EnteredDate ) ' returns 31-Dec-1961" Voir également Fonction FormatTime$( ), Fonction DateWindow( ) , Instruction Set Date Window( ) Référence 335 Fonction FormatNumber$( ) Fonction FormatNumber$( ) Objectif Renvoie une chaîne qui représente un nombre, incluant les séparateurs de milliers et les séparateurs décimaux qui correspondent à la configuration du système de l'utilisateur. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe FormatNumber$( num ) num est une valeur numérique ou une chaîne, qui représente une valeur numérique comme « 1234,56 ». Valeur renvoyée Chaîne Description Renvoie une chaîne qui représente un nombre. Si le nombre est suffisamment grand pour avoir besoin de séparateurs de milliers, cette fonction insère ces séparateurs. MapInfo Professional lit la configuration du système de l'utilisateur afin de déterminer les caractères à utiliser comme séparateur de milliers et séparateur décimal. Exemples Le tableau ci-dessous présente la fonction FormatNumber$( ) avec une virgule comme séparateurs de milliers et un point comme séparateur décimal (valeurs par défaut pour les systèmes américains) : Appel de fonction Résultat renvoyé FormatNumber$("12345.67") “12,345.67” (un séparateur de milliers a été inséré) FormatNumber$("12,345.67") “12,345.67” (pas de modification) Si l'ordinateur de l'utilisateur est configuré de manière à utiliser un point comme séparateur de milliers et une virgule comme séparateur décimal, le tableau ci-dessous présente les résultats : 336 Appel de fonction Résultat renvoyé FormatNumber$("12345.67") “12.345,67” (un séparateur de milliers a été inséré et le séparateur décimal a été modifié afin de correspondre à la configuration de l'utilisateur) FormatNumber$("12,345.67") “12.345,67” (les deux caractères ont été modifiés pour correspondre à la configuration de l'utilisateur) MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Fonction DeformatNumber$( ) Fonction FormatTime$( ) Objectif Renvoie une chaîne qui représente une heure à l'aide du format spécifié dans le second argument. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Remarque: La fonction FormatDate$( ) n'est pas configurable, tandis que la fonction FormatTime$( ) permet de contrôler entièrement le résultat. La chaîne de format doit suivre les mêmes normes Microsoft que pour définir le format d'heure des paramètres régionaux : Heures Signification h Heures sans zéro au début pour les heures à un chiffre (format 12 heures). hh Heures avec zéro au début pour les heures à un chiffre (format 12 heures). H Heures sans zéro au début pour les heures à un chiffre (format 24 heures). HH Heures avec zéro au début pour les heures à un chiffre (format 24 heures). Minutes Signification m Minutes sans zéro au début pour les minutes à un chiffre. mm Minutes avec zéro au début pour les minutes à un chiffre. Secondes Signification s Secondes sans zéro au début pour les secondes à un chiffre. ss Secondes avec zéro au début pour les secondes à un chiffre. Marqueur de temps Signification t Chaîne de marqueur de temps à un chiffre. Remarque: N'utilisez pas ce format pour certaines langues, par exemple, le japonais (Japon). Avec ce format, l'application utilise toujours le premier caractère de la chaîne de marqueur de temps, défini par LOCALE_S1159 (AM) et LOCALE_S2359 (PM). Pour cette raison, l'application peut créer un formatage incorrect avec la chaîne utilisée pour le matin et l'après-midi. tt Chaîne de marqueur de temps à plusieurs caractères. Source : http://msdn2.microsoft.com/en-us/library/ms776320.aspx Référence 337 Instruction FME Refresh Table Remarque: Dans les formats précédents, les lettres m, s et t doivent être des minuscules. La lettre h en minuscule désigne le format 12 heures et en majuscule le format 24 heures. Notre code suit les règles en vigueur pour spécifier le format d'heure locale du système. De plus, nous permettons également à l'utilisateur de spécifier f, ff ou fff pour les dixièmes de seconde, les centièmes de seconde et les millisecondes. Syntaxe FormatTime$( Time, String ) Valeur renvoyée Chaîne Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. dim Z as time Z = CurTime() Print FormatTime$(Z, "hh:mm:ss.fff tt") Voir également Fonction FormatDate$( ), Fonction GetTime(), Fonction NumberToDateTime( ) Instruction FME Refresh Table Objectif Actualise une table de source de données universelles (FME) à partir de la source de données initiale. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe FME Refresh Table alias alias est un alias d'une table de source de données universelles (FME) enregistrée ouverte. Exemple L'exemple ci-dessous actualise la table locale appelée watershed. FME Refresh Table watershed Fonction FrontWindow( ) Objectif Renvoie l'identifiant entier de la fenêtre active. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. 338 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Syntaxe FrontWindow( ) Valeur renvoyée Entier Description La fonction FrontWindow( ) renvoie l'identifiant entier de la fenêtre du document au premier plan (Carte, Données, Graphique ou Mise en page). Immédiatement après une instruction qui crée une fenêtre (par exemple, Carte, Données, Graphique, Mise en page), la nouvelle fenêtre est la fenêtre au premier plan. Exemple Dim map_win_id As Integer Open Table "states" Map From states map_win_id = FrontWindow( ) Voir également Fonction NumWindows( ) , Fonction WindowID( ) , Fonction WindowInfo( ) Instruction Function...End Function Objectif Définit une fonction personnalisée. Restrictions Vous ne pouvez pas exécuter d'instruction Function...End Function via la fenêtre MapBasic. Syntaxe Function name ( [ [ ByVal ] parameter As datatype ] [ , [ ByVal ] parameter As datatype... ] ) As return_type statement_list End Function name est le nom de la fonction. parameter est le nom d'un paramètre de la fonction. datatype est un type de variable (par ex. : un entier). Les tableaux et variables Type personnalisées sont autorisés. return_type est un type de variable scalaire standard. Les tableaux et variables Type personnalisées ne sont pas autorisés. statement_list est la liste des instructions que la fonction va exécuter. Référence 339 Instruction Function...End Function Description L'instruction Function...End Function crée une fonction personnalisée, définie par l'utilisateur. Les fonctions définies par l'utilisateur peuvent être appelées de la même façon que les fonctions MapInfo Professional standard. Chaque définition Function...End Functiondoit être précédée d'une instruction Declare Function. Une fonction définie par l'utilisateur est semblable à une procédure Sub ; mais une fonction renvoie une valeur. Les fonctions sont plus flexibles, dans la mesure où une expression peut contenir un nombre illimité d'appels de fonction. Par exemple, l'instruction suivante effectue une attribution comprenant deux appels de la fonction Proper$( ) : fullname = Proper$(firstname) + " " + Proper$(lastname) Dans une définition Function...End Function, le paramètre de nom de la fonction se comporte comme une variable. La valeur affectée à la « variable » de nom correspondra à la valeur renvoyée lors de l'appel de la fonction. Si aucune valeur n'est affectée au nom, la fonction renverra toujours une valeur de zéro (si la fonction dispose d'un type de données numérique), FALSE (si la fonction dispose d'un type de données logique), ou une chaîne nulle (si la fonction dispose d'un type de données de chaîne). Restrictions sur la transmission de paramètre Un appel de fonction renvoie une valeur « scalaire » à la fois. En d'autres termes, un appel de fonction unique ne peut pas renvoyer un tableau entier de valeurs, ni un ensemble de valeurs pour remplir une variable personnalisée de type de données. Par défaut, chaque paramètre d'une fonction définie par l'utilisateur est un paramètre par référence. Cela signifie que l'appelant de la fonction doit indiquer le nom d'une variable comme paramètre. Si la fonction modifie la valeur d'un paramètre par référence, la valeur modifiée sera reflétée dans la variable de l'appelant. Chaque paramètre d'une fonction peut être indiqué en tant que paramètre par valeur si le mot-clé facultatif ByVal précède le nom du paramètre dans la définition Function...End Function. Lorsqu'un paramètre est déclaré par valeur, l'appelant de la fonction peut indiquer une expression pour ce paramètre, plutôt que de devoir indiquer le nom d'une variable unique. Cependant, si une fonction modifie la valeur d'un paramètre par valeur, l'appelant de la fonction ne pourra pas accéder à la nouvelle valeur. Vous ne pouvez pas transmettre de tableau, de variable Type personnalisée ou de variable Alias en tant que paramètres ByVal aux fonctions personnalisées. Toutefois, vous pouvez transmettre n'importe quel type de données suivant en tant que paramètres par référence. Si votre fonction personnalisée n'accepte aucun paramètre, l'instruction Function...End Function peut soit inclure une paire de parenthèses vide, soit omettre complètement les parenthèses. Néanmoins, chaque appel de fonction doit comprendre une paire de parenthèses, que la fonction accepte des paramètres ou non. Par exemple, si vous souhaitez définir une fonction personnalisée appelée Foo, l'instruction Function...End Function pourrait ressembler à cela : Function Foo( ) ' ... statement list goes here ... End Function ou à cela : Function Foo ' ... statement list goes here ... End Function 340 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z mais tous les appels de fonction devront comprendre des parenthèses, de la façon suivante : var_name = Foo( ) Disponibilité des fonctions personnalisées L'utilisateur ne peut pas intégrer d'appel de fonction personnalisée lorsqu'il renseigne des boîtes de dialogues MapInfo Professional standard. Une fonction personnalisée ne peut être appelée qu'à partir d'une application MapBasic compilée. Ainsi, un utilisateur ne peut pas indiquer de fonction définie par l'utilisateur dans la boîte de dialogue Sélection SQL. Néanmoins, un programme MapBasic compilé peut exécuter une instruction Select qui intègre les appels de fonctions définies par l'utilisateur. Une fonction personnalisée n'est disponible qu'à partir de l'application qui définit la fonction. Si vous rédigez une fonction personnalisée que vous souhaitez inclure dans plusieurs applications MapBasic, vous devez copier la définition Function...End Function dans chacun des fichiers programme. Noms de fonction Le paramètre de nom de l'instruction Function...End Function peut correspondre au nom d'une fonction MapBasic standard, tel Abs ou Chr$. Ce type de fonction personnalisée remplacera la fonction MapBasic standard par le même nom (dans les limites de l'application MapBasic). Si un programme définit une fonction appelée Abs, tout appel suivant de la fonction Abs exécutera la fonction personnalisée au lieu de la fonction Abs( ) de MapBasic. Lorsqu'une application MapBasic redéfinit une fonction standard de cette façon, les autres applications ne sont pas affectées. Ainsi, si vous rédigez plusieurs applications distinctes et que vous souhaitez que chacune d'entre elles utilise votre propre version personnalisée de la fonction Distance( ), celles-ci doivent comprendre l'instruction Function...End Function appropriée. Lorsqu'une application MapBasic redéfinit une fonction standard, la redéfinition s'applique à travers toute l'application. Dans chaque procédure de ce programme, tous les appels de la fonction redéfinie utiliseront la fonction personnalisée plutôt que celle d'origine. Exemple L'exemple suivant définit une fonction personnalisée, CubeRoot, qui renvoie la racine cubique d'un nombre (celui élevé à la puissance trois). Parce que l'appel de la fonction CubeRoot apparaît dans le programme avant la définition CubeRoot Function…End Function, cet exemple utilise l'instruction Declare Function pour prédéfinir la liste de paramètres de la fonction CubeRoot. Declare Function CubeRoot(ByVal x As Float) As Float Declare Sub Main Sub Main Dim f_result As Float f_result = CubeRoot(23) Note Str$(f_result) End Sub Function CubeRoot(ByVal x As Float) As Float CubeRoot = x ^ 0.33333333333 End Function Voir également Instruction Declare Function, Instruction Declare Sub, Instruction Sub...End Sub Référence 341 Instruction Geocode Instruction Geocode Objectif Géocode une table ou une valeur individuelle à l'aide d'un service de géocodage distant via une connexion créée en utilisant l'instruction Open Connection et définie avec l'instruction Set Connection Geocode. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Geocode connection_number Input [ Table input_tablename ] [ Country = Country_expr [ Street = Street_expr, [ IntersectingStreet = IntersectingStreet_expr ], Municipality = Municipality_expr, CountrySubdivision = CountrySubdiv_expr, PostalCode = PostalCode_expr, CountrySecondarySubdivision = CountrySecondarySubdiv_expr, SecondaryPostalCode = SecondaryPostalCode_expr, Placename = Placename_expr, Street2 = Street2_expr, MunicipalitySubdivision = MunicipalitySubdiv_expr ] ] Output [ Into [ Table out_tablename [ Key out_keycolumn = in_keyexpr ] ] | [ Variable variable_name ] ] [ Point [ On | Off ] [ Symbol Symbol_expr ], ] [ Street_column = Street, Municipality_column = Municipality, CountrySubdiv_column = CountrySubdivision, PostalCode_column = PostalCode, CountrySecondarySubdiv_column = CountrySecondarySubdivision, SecondaryPostalCode_column = SecondaryPostalCode, Placename_column = Placename, MunicipalitySubdiv_column = MunicipalitySubdivision, Country_column = Country, ResultCode_column = ResultCode, Latitude_column = Latitude, Longitude_column = Longitude Columns colname = geocoder_keyname [ , ] ... ] [ Interactive [ On [ Max Candidates candidates_expr | All ] [ CloseMatchesOnly [ On | Off ] ] | Off [ First | None ] ] ] connection_number est le nombre renvoyé lorsque la connexion a été créée. Reportez-vous à la section Instruction Open Connection. input_tablename est un alias d'une table ouverte, qui inclut des ensembles de résultats et des sélections. Country_expr est une expression de chaîne qui représente le code ISO à trois lettres pour le pays. Street_expr est une expression qui indique une adresse de rue. 342 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z IntersectingStreet_expr est une expression qui indique une rue qui doit croiser la rue indiquée dans Street_expr. Municipality_expr est une expression qui indique le nom d'une municipalité. CountrySubdivision_expr est une expression qui indique le nom d'une sous-division d'un pays. Par exemple, aux États-Unis, cette expression indique le nom d'un État. Au Canada, elle indique le nom d'une province. PostalCode_expr est une expression qui indique un code postal. CountrySecondarySubdiv_expr est une expression qui indique le nom d'une sous-division secondaire d'un pays. Par exemple, aux États-Unis, cette expression correspond à un comté, tandis qu'au Canada, elle correspond à une division de recensement. SecondaryPostalCode_expr est une expression qui indique un système de code postal secondaire. Aux États-Unis, cette expression correspond à une extension ZIP+4 d'un code postal. Placename_expr est une expression qui indique le nom d'un lieu d'intérêt comme un grand bâtiment auquel peuvent correspondre plusieurs adresses. Street2_expr est une expression qui indique une ligne d'adresse complémentaire. MunicipalitySubdiv_expr est une expression qui indique le nom d'une sous-division d'une municipalité. out_tablename est un alias d'une table à utiliser comme conteneur des données résultant de l'opération de géocodage. out_keycolumnest une chaîne qui représente le nom d'une colonne de clé dans la table de sortie utilisée pour contenir une « clé » d'identification à partir des enregistrements d'entrée. Elle est utilisée pour identifier l'enregistrement dont provient le géocode. in_keyexpr est une expression dont la valeur (table d'entrée) est insérée dans l'enregistrement de sortie. variable_name est le nom d'une variable qui contient une géométrie simple. Symbol_expr est une expression qui spécifie le symbole à utiliser lorsque vous affichez un point à partir de la colonne de géométrie. Reportez-vous à la section Clause Symbol pour plus d'informations. Street_column est un alias qui représente le nom de la colonne qui contient le résultat pour la rue. Municipality_column est une chaîne qui représente le nom de la colonne qui contient le résultat pour la municipalité. CountrySubdiv_column est une chaîne qui représente le nom de la colonne qui contient le résultat pour la sous-division de pays. PostalCode_column est une chaîne qui représente le nom de la colonne qui contient le résultat pour le code postal. CountrySecondarySubdiv_column est une chaîne qui représente le nom de la colonne qui contient le résultat pour la sous-division secondaire de pays. SecondaryPostalCode_column est une chaîne qui représente le nom de la colonne qui contient le résultat pour le code postal secondaire. Placename_column est une chaîne qui représente le nom de la colonne qui contient le résultat pour le nom d'un lieu d'intérêt. Référence 343 Instruction Geocode MunicipalitySubdiv_column est une chaîne qui représente le nom de la colonne qui contient le résultat pour la sous-division de municipalité. Country_column est une chaîne qui représente le nom de la colonne qui contient le résultat pour le pays. ResultCode_column est une chaîne qui représente le nom de la colonne qui contient le code de résultat généré par le géocodeur. Latitude_column est une chaîne qui représente le nom de la colonne (valeur décimale ou à virgule flottante) qui contient le résultat pour la latitude. Longitude_column est une chaîne qui représente le nom de la colonne (valeur décimale ou à virgule flottante) qui contient le résultat pour la longitude. colname est une chaîne qui représente le nom de la colonne pour un résultat spécifique au géocodeur. geocoder_keyname est une chaîne qui représente le nom d'un élément de géocodeur spécifique au pays. Ces éléments sont décrits par le géocodeur spécifique. candidates_expr est une expression qui spécifie le nombre de candidats à renvoyer dans une session de géocodage interactive. Description Toute instruction Geocode doit comprendre une clause Input et une clause Output. Le paramètre input_tablename est facultatif. En revanche, si une table n'est pas spécifiée, l'opération de géocodage qui en résulte est effectuée sur un ensemble d'entrées de chaîne (variables ou constantes) afin qu'une adresse unique soit géocodée dans chaque demande. Le paramètre output_tablename est également facultatif. Reportez-vous à la section ci-dessous : Entrée et sortie basées sur les tables ou non. Clause Input La clause Input est requise car une requête de géocodage nécessite quelques données d'entrée. Un pays doit être indiqué en tant qu'argument explicite ou en tant que colonne dans input_tablename. Lorsqu'un simple pays est utilisé, il peut s'agir d'une chaîne de constante s'il n'y a pas de données disponibles. Les codes ISO à trois lettres des pays doivent être utilisés. La liste des champs à inclure du paramètre input_table à géocoder doit comprendre au moins une valeur. Plus il y a d'expressions incluses, plus le résultat du géocodage est précis. Clause Output La clause Output est nécessaire, car sans elle la commande entière ne renvoie rien. Into Table indique que la clause Output fait référence à des colonnes dans la table output_table, qui doit être accessible en écriture. Si elle n'est pas spécifiée, les clauses désignent le paramètre input_table. Si les colonnes d'entrée doivent être mises à jour, elles doivent être spécifiées pour l'entrée ET pour la sortie. Key est utilisé avec Into Table. Cette clause crée une relation entre les colonnes de clé dans la table d'entrée et la table de sortie. Variable indique que le résultat de la géométrie de l'opération de géocodage est stocké dans une variable définie dans variable_name. Lorsque vous utilisez cette option de sortie, notez que si l'entrée est une table, seul le premier enregistrement est traité et les autres enregistrements ne sont pas pris en compte. 344 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Point indique que le résultat géographique du géocodage doit être stocké dans la table ou la variable. Dans le cas d'une table, cela implique que la table soit cartographiable. Pour stocker le point enregistré dans la colonne de l'objet, spécifiez Point ou Point On (« On » est la valeur par défaut). Le symbole par défaut actuel est utilisé. Pour renvoyer le même résultat en utilisant un symbole spécifique, spécifiez Point On Symbol symbol_expr. Si vous ne souhaitez pas stocker le point dans la colonne de l'objet, spécifiez Point Off. Que vous souhaitiez que l'objet soit créé ou non, vous pouvez toujours stocker les valeurs x et y dans des colonnes de nombre réel. À cet effet, spécifiez ces colonnes sous la forme Latitude = latitude_column Longitude = longitude_column. Le reste des données de sortie spécifie les colonnes de la table de sortie dans lesquelles les valeurs renvoyées par le géocodeur connu sont stockées. En général, elles peuvent être plus spécifiques que l'entrée. Par exemple, il est possible de géocoder une adresse avec simplement un nom d'entreprise comme « MapInfo » et le code postal « 12180 ». Cependant, bien d'autres éléments sont renvoyés dans la sortie. L'extension Columns permet de renvoyer les données spécifiques au géocodeur. L'utilisateur doit connaître le nom des clés définies par les géocodeurs. Entrée et sortie basées sur les tables ou non L'instruction Geocode peut être utilisée avec toute combinaison d'entrées et de sorties basées sur des tables ou non. Si vous choisissez d'utiliser une entrée basée sur une table, vous pouvez diriger la sortie vers une table nouvelle ou existante, ou vers une variable. Si la sortie est une variable, seul le premier enregistrement est traité et la seule valeur stockée est l'objet géographique. Si vous choisissez une entrée qui n'est pas basée sur une table, les valeurs de l'opération doivent être des chaînes d'expression (pas des noms de colonne), de variable ou de constante. La sortie peut être placée dans une table ou affectée à une variable. Clause Interactive Interactive [ On | Off ] est un mot-clé facultatif qui contrôle si une boîte de dialogue doit être affichée si plusieurs candidats sont renvoyés pour chaque adresse. Lorsque cela se produit, l'utilisateur est invité à sélectionner, re-spécifier, ignorer ou annuler l'opération. Il lui est demandé de déterminer les choix les plus appropriés compte tenu de la possibilité d'ignorer cette entrée. Lorsque la valeur On est spécifiée, la boîte de dialogue s'affiche en pareilles situations. Lorsque la valeur Off est spécifiée, si plusieurs correspondances sont générées, il est possible d'accepter le premier candidat ou aucun, ce qui signifie que l'enregistrement est ignoré. La valeur par défaut est d'ignorer l'enregistrement. Si le mot-clé Interactive n'est pas inclus, il est équivalent à Interactive Off None et aucune option ne peut être spécifiée. Si le mot-clé Interactive est indiqué, la valeur par défaut est On. • Le mot-clé Interactive est équivalent à Interactive On. Lorsque aucune valeur n'est fournie pour Max, la valeur par défaut est de 3 (trois) candidats à renvoyer. • Interactive On Max Candidates All renvoie tous les candidats. • Interactive On Max Candidates 4* myMBVariable/6 renvoie le nombre de candidats résultant de l'évaluation de l'expression. • Interactive Off est équivalent à Interactive Off None. • Interactive Off First renvoie le premier candidat de la liste. Référence 345 Fonction GeocodeInfo( ) Le paramètre CloseMatchesOnly définit le service de géocodage de sorte qu'il ne renvoie que les correspondances proches définies par le serveur. Si le paramètre CloseMatchesOnly est défini sur Off, tous les résultats sont renvoyés jusqu'au nombre défini dans Max Candidates avec les résultats considérés comme des correspondances proches et marqués comme tels. Exemples L'exemple ci-dessous présente une demande de géocodage à l'aide de la table nystreets et en spécifiant l'utilisation de la ville, du nom de la rue, de l'État et du code postal. Geocode connectionHandle Input Table nystreets municipality=city, street=StreetName, countrysubdivision=state, postalcode=zip, country="usa" OUTPUT StreetName=street, address=municipality Cet exemple illustre une demande de géocodage qui utilise la table nystreets et spécifie un symbole pour afficher la sortie. Geocode connectionHandle Input Table nystreets street=StreetName, country="usa" Output Point Symbol MakeFontSymbol(65, 255 ,24,"MapInfo Cartographic",32,0), StreetName=street Cet exemple envoie une demande avec la clause Interactive définie sur la valeur On. La valeur renvoyée est placée dans la colonne de rue. Geocode connectionHandle Input Table nystreets street=StreetName, country="usa" Output Point Symbol MakeFontSymbol(65, 255 ,24,"MapInfo Cartographic",32,0), StreetName=street Interactive on Max Candidates 5 L'exemple ci-dessous affiche une demande de géocodage sans utiliser de table et en générant les résultats dans une variable. Geocode connectionHandle Input street="1 Global View", country="usa", countrysubdivison="NY", municipality="Troy" Output Variable outvar Voir également Instruction Open Connection Fonction GeocodeInfo( ) Objectif Renvoie tous les attributs définis pour une connexion à l'aide de l'instruction Set Connection Geocode. De plus, GeocodeInfo( ) peut également renvoyer des valeurs de statut à partir de la dernière commande de géocodage exécutée à l'aide de chaque connexion. Il y a également un attribut servant à gérer le nombre maximal d'adresses que le serveur permet d'envoyer simultanément au service. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe GeoCodeInfo( connection_handle, attribute ) connection_handle est un entier. 346 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z attribute est un code d'entier qui indique le type d'informations à renvoyer. Valeur renvoyée Nombre à virgule flottante, entier, entier court, valeur logique ou chaîne, selon le paramètre attribut. Description La fonction GeoCodeInfo( ) renvoie les propriétés proposées par défaut par la connexion ou les propriétés modifiées à l'aide de Set GeoCode. Comme de nombreuses fonctions de ce type dans MapBasic, les valeurs renvoyées varient en fonction du paramètre attribute. Tous les codes de ces valeurs sont répertoriés dans MAPBASIC.DEF. Valeur de attribute ID Valeur renvoyée par GeoCodeInfo( ) GEOCODE_STREET_NAME 1 Valeur logique qui indique si une correspondance est définie ou non pour StreetName. GEOCODE_STREET_NUMBER 2 Valeur logique qui indique si une correspondance est définie ou non pour StreetNumber. GEOCODE_MUNICIPALITY 3 Valeur logique qui indique si une correspondance est définie ou non pour la municipalité. GEOCODE_MUNICIPALITY2 4 Valeur logique qui indique si une correspondance est définie ou non pour MunicipalitySubdivision. GEOCODE_COUNTRY_SUBDIVISION 5 Valeur logique qui indique si une correspondance est définie pour CountrySubdivision. GEOCODE_COUNTRY_SUBDIVISION2 6 Valeur logique qui indique si une correspondance est définie ou non pour CountrySecondarySubdivision. GEOCODE_POSTAL_CODE 7 Valeur logique qui indique si une correspondance est définie ou non pour PostalCode. GEOCODE_DICTIONARY 9 Valeur entière courte qui représente l'une de ces cinq valeurs : • • • • • GEOCODE_BATCH_SIZE 10 GEOCODE_FALLBACK_GEOGRAPHIC 11 Référence DICTIONARY_ALL DICTIONARY_ADDRESS_ONLY DICTIONARY_USER_ONLY DICTIONARY_PREFER_ADDRESS DICTIONARY_PREFER_USER Valeur entière qui représente la taille du lot. Valeur logique qui indique si le géocodeur doit se reporter sur un centroïde géographique lorsque les autres options échouent. 347 Fonction GeocodeInfo( ) Valeur de attribute ID Valeur renvoyée par GeoCodeInfo( ) GEOCODE_FALLBACK_POSTAL 12 Valeur logique qui indique si le géocodeur doit se reporter sur un centroïde postal lorsque les autres options échouent. GEOCODE_OFFSET_CENTER 13 Valeur flottante qui représente la distance à partir du centre de la route à laquelle le point est renvoyé. GEOCODE_OFFSET_CENTER_UNITS 14 Valeur de chaîne qui représente les unités des valeurs du centre de la route. GEOCODE_OFFSET_END 15 Valeur flottante qui représente la distance à partir de l'extrémité de la route à laquelle le point est renvoyé. GEOCODE_OFFSET_END_UNITS 16 Valeur de chaîne qui représente les unités de décalage à partir de la valeur de l'extrémité de la rue. GEOCODE_MIXED_CASE 17 Valeur logique qui indique si MapInfo Professional doit formater les chaînes renvoyées avec une combinaison de minuscules/majuscules ou si elles doivent rester en majuscules. Cette option n'est pas forcément disponible pour tous les pays. L'option utilise un algorithme spécifique au pays, qui connaît les parties d'adresse et les éléments à mettre en majuscules ou en minuscules. GEOCODE_RESULT_MARK_MULTIPLE 18 Valeur logique qui indique si MapInfo Professional doit modifier le code de résultat renvoyé par le serveur en ajoutant un indicateur au code de résultat qui sert de base au résultat, selon un choix arbitraire entre plusieurs correspondances proches. Cet indicateur n'affecte le comportement que dans certaines circonstances : 1. Le géocodage n'était pas interactif et il était donc impossible d'afficher la boîte de dialogue Candidats. 2. L'indicateur de commande non interactif devait sélectionner le premier candidat renvoyé au lieu de n'en sélectionner aucun. (Reportez-vous à la commande de géocodage First). MapInfo Professional est obligé de sélectionner l'un des candidats. 3. La demande réelle a renvoyé plusieurs correspondances proches pour un enregistrement en particulier. GEOCODE_COUNT_GEOCODED 348 19 Valeur entière qui représente le nombre d'enregistrements géocodés au cours de la dernière opération. GEOCODE_COUNT_NOTGEOCODED 20 Valeur entière qui représente le nombre d'enregistrements qui n'ont pas été géocodés au cours de la dernière opération. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Valeur de attribute ID Valeur renvoyée par GeoCodeInfo( ) GEOCODE_UNABLE_TO_CONVERT_DATA 21 Valeur logique qui indique si une colonne n'a pas été mise à jour au cours de la dernière opération en raison d'un problème lié au type de données. Ce cas se produit lorsque des colonnes d'entier sont spécifiées par erreur pour des codes postaux non numériques. GEOCODE_MAX_BATCH_SIZE 22 Valeur entière qui représente le nombre maximal d'enregistrements (par exemple, d'adresses) dont l'envoi simultané au service est autorisé par le serveur. GEOCODE_PASSTHROUGH 100 Entier qui spécifie le nombre d'éléments de fonction d'intercommunication définis pour cette connexion. Il y a deux éléments pour chaque paire. Cette valeur est utilisée pour savoir quand arrêter l'énumération de ces valeurs sans erreur. GEOCODE_PASSTHROUGH + n 100 Valeurs de chaîne qui représentent le nom et la valeur pour chaque paire de fonction d'intercommunication. n est valide jusqu'à la valeur renvoyée par GEOCODE_INFO_PASSTHROUGH. Exemple Le segment de code MapBasic ci-dessous imprime les contraintes d'utilitaire d'emplacement Envinsa dans la fenêtre Message de MapInfo Professional : Include "MapBasic.Def" declare sub main sub main dim iConnect as integer Open Connection Service Geocode Envinsa URL "http://envinsa_server:8066/LocationUtility/services/LocationUtility" User "john" Password "green" into variable iConnect Print "Geocode Max Batch Size: " + GeoCodeInfo(iConnect,GEOCODE_MAX_BATCH_SIZE) end sub Voir également Instruction Open Connection, Instruction Set Connection Geocode Instruction Get Objectif Lit des données à partir d'un fichier ouvert en mode d'accès binaire ou direct. Référence 349 Instruction Get Syntaxe Get [#] filenum, [ position ], var_name filenum est le numéro d'un fichier ouvert via une instruction Open File. position est la position du fichier dans lequel lire les données. var_name est le nom d'une variable où MapBasic stockera les résultats. Description L'instruction Get lit des données à partir d'un fichier ouvert. Le comportement de l'instruction Get et l'ensemble des paramètres qu'elle attend sont affectés par les options définies dans l'instruction Open File précédente. Si l'instruction Open File a défini un accès Random au fichier, la clause Position de l'instruction Get peut être utilisée pour indiquer l'enregistrement de données qui doit être lu. Lorsque le fichier est ouvert, la position du fichier indique le premier enregistrement du fichier (enregistrement 1). Une instruction Get incrémente la position du fichier automatiquement, et ainsi la clause Position n'est pas nécessaire en cas d'accès séquentiel. Cependant, vous pouvez utiliser la clause Position pour définir la position de l'enregistrement avant la lecture de celui-ci. Si l'instruction Open File définit un accès Binary au fichier (accès binaire), une seule variable à la fois est accessible en lecture. Le type de données lu dépend du format d'ordre des octets du fichier ainsi que de la variable var_name utilisée pour stocker les résultats. Si le type de variable est entier, 4 octets du fichier binaire seront alors lus et convertis en une variable MapBasic. Les variables sont stockées de la façon suivante : Variable Type Stockage dans le fichier Logique 1 octet, (égal ou différent de 0). Entier court Entier de 2 octets Entier Entier de 4 octets Nombre à virgule flottante Format IEEE sur 8 octets Chaîne Longueur d'une chaîne plus un octet pour un terminateur de chaîne 0. Date Quatre octets : entier court pour l'année, octet pour le mois, octet pour le jour. Autres types de données Ne peuvent être lus. Avec l'accès binaire au fichier, le paramètre position est utilisé pour positionner le pointeur de fichier sur un décalage précis dans le fichier. Lorsque le fichier est ouvert, le paramètre position est défini sur un (début du fichier). Lors de l'exécution d'une instruction Get, la position est incrémentée du même volume de données lues. Si la clause Position n'est pas utilisée, l'instruction Get lit les données à partir de la position du pointeur de fichier. Remarque: L'instruction Get nécessite deux virgules, même si le paramètre facultatif position est omis. 350 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Si le fichier était ouvert en mode binaire, l'instruction Get ne peut pas définir une variable de chaîne de longueur variable. Toute variable de chaîne utilisée dans l'instruction Get doit avoir une longueur fixe. Voir également instruction Open File, instruction Put Fonction GetCurrentPath$( ) Objectif Renvoie le chemin d'accès utilisé par une boîte de dialogue Fichier MapInfo Professional. L'emplacement de chaque type de table ou de fichier est mémorisé. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe GetCurrentPath$( current_path_id ) current_path_id est l'une des valeurs suivantes : PREFERENCE_PATH_TABLE (0) PREFERENCE_PATH_WORKSPACE (1) PREFERENCE_PATH_MBX (2) PREFERENCE_PATH_IMPORT (3) PREFERENCE_PATH_SQLQUERY (4) PREFERENCE_PATH_THEMETHEMPLATE (5) PREFERENCE_PATH_MIQUERY (6) PREFERENCE_PATH_NEWGRID (7) PREFERENCE_PATH_CRYSTAL (8) PREFERENCE_PATH_GRAPHSUPPORT (9) PREFERENCE_PATH_REMOTETABLE (10) PREFERENCE_PATH_SHAPEFILE (11) PREFERENCE_PATH_WFSTABLE (12) PREFERENCE_PATH_WMSTABLE (13) Valeur renvoyée Chaîne Description Avec l'identifiant d'un répertoire spécial de préférences MapInfo, la fonction GetCurrentPath$( ) renvoie le chemin de ce répertoire. Ce répertoire par défaut est un exemple de répertoire spécial MapInfo où MapInfo Professional écrit les nouvelles tables MapInfo natives. Remarque: La valeur renvoyée change chaque fois qu'un utilisateur modifie le chemin d'accès de la boîte de dialogue et termine l'opération (en cas d'annulation, la modification n'est pas prise en compte). Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. include "mapbasic.def" declare sub main Référence 351 Fonction GetDate( ) sub main dim sMiPrfFile as string sMiPrfFile = GetCurrentPath$( PREFERENCE_PATH_WORKSPACE) Print sMiPrfFile end sub Voir également Fonction GetPreferencePath$( ) Fonction GetDate( ) Objectif Renvoie le composant de date d'un élément de date/heure. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe GetDate( DateTime ) Valeur renvoyée Date représentant une valeur entière stockée sur 4 octets : deux octets pour l'année, un octet pour le mois et un autre pour le jour. Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. dim dtX as datetime dim Z as date dtX = "03/07/2007 12:09:09.000 AM" Z = GetDate(dtX) Print FormatDate$(Z) Voir également Fonction GetTime() Fonction GetFolderPath$( ) Objectif Renvoie le chemin d'accès d'un répertoire spécial MapInfo Professional ou Windows. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe GetFolderPath$( folder_id ) folder_id est l'une des valeurs suivantes : FOLDER_MI_APPDATA (-1) FOLDER_MI_LOCAL_APPDATA (-2) FOLDER_MI_PREFERENCE (-3) FOLDER_MI_COMMON_APPDATA (-4) 352 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z FOLDER_APPDATA (26) FOLDER_LOCAL_APPDATA (28) FOLDER_COMMON_APPDATA (35) FOLDER_COMMON_DOCS (46) FOLDER_MYDOCS (5) FOLDER_MYPICS (39) Valeur renvoyée Chaîne Description Compte tenu de l'ID d'un répertoire spécial MapInfo ou Windows, la fonction GetFolderPath$( ) renvoie le chemin d'accès au répertoire. Le répertoire Mes documents constitue un exemple de répertoire spécial Windows. Le répertoire de préférences est un exemple de répertoire spécial MapInfo. C'est l'emplacement par défaut où MapInfo Professional écrit le fichier de préférences. L'emplacement de bon nombre de ces répertoires varie d'une version de Windows à une autre. Cela peut également dépendre de l'utilisateur connecté. Notez que les dossiers FOLDER_MI_APPDATA (-1), FOLDER_MI_LOCAL_APPDATA (-2) et FOLDER_MI_COMMON_APPDATA (-4) n'existent peut-être pas. Avant de tenter d'accéder à ces répertoires, vérifiez s'ils existent à l'aide la Fonction FileExists( ). FOLDER_MI_PREFERENCE (-3) existe toujours. Les identifiants qui commencent par FOLDER_MI renvoient le chemin d'accès aux répertoires spécifiques à MapInfo Professional. Les autres identifiants renvoient le chemin d'accès aux répertoires Windows et correspondent aux identifiants définis pour la fonction d'API WIN32 SHGetFolderPath. Les plus courants de ces identifiants ont été définis pour faciliter l'utilisation des applications MapBasic. Tout identifiant valide pour SHGetFolderPath fonctionnera avec GetFolderPath$( ). Exemple include "mapbasic.def" declare sub main sub main dim sMiPrfFile as string sMiPrfFile = GetFolderPath$(FOLDER_MI_PREFERENCE) Print sMiPrfFile end subet128 Voir également Fonction LocateFile$( ) Fonction GetGridCellValue( ) Objectif Détermine la valeur d'une cellule de grille si celle-ci n'est pas nulle. Syntaxe GetGridCellValue( table_id, x_pixel, y_pixel ) Référence 353 Fonction GetMetadata$( ) table_id est une chaîne qui représente un nom de table, un numéro de table entier positif ou 0 (zéro). La table doit être une table de grille. x_pixel est le nombre entier de la coordonnée X de la cellule de la grille. Le nombre de pixels commence à 0. La valeur maximale de pixels est (pixel_width-1). Elle est déterminée en appelant RasterTableInfo(...RASTER_TAB_INFO_WIDTH). y_pixel est le nombre entier de la coordonnée Y de la cellule de la grille. Le nombre de pixels commence à 0. La valeur maximale de pixels est (pixel_height-1). Elle est déterminée en appelant RasterTableInfo(...RASTER_TAB_INFO_HEIGHT). Valeur renvoyée Un nombre à virgule flottante est renvoyé. Il représente la valeur d'une cellule spécifiée dans la table si la cellule n'est pas nulle. La fonction IsGridCellNull() doit être utilisée avant d'être appelée pour déterminer si la cellule est nulle ou si elle contient une valeur. Voir également Instruction Create Grid, GridTableInfo( ), Fonction IsGridCellNull( ), Fonction RasterTableInfo( ) Fonction GetMetadata$( ) Objectif Extrait les métadonnées d'une table. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe GetMetadata$( table_name, key_name ) table_name est le nom d'une table ouverte, spécifiée sous forme de nom de table explicite (par exemple, World) ou de chaîne qui représente un nom de table (par exemple, "World"). key_name est une chaîne qui représente le nom d'une clé de métadonnées. Valeur renvoyée Chaîne qui comporte jusqu'à 239 octets. Si la clé n'existe pas ou si aucune valeur n'est définie pour celle-ci, MapInfo Professional renvoie une chaîne vide. Description Cette fonction renvoie une valeur de métadonnées à partir d'une table. Pour plus d'informations sur les requêtes de métadonnées d'une table, reportez-vous à la section Instruction Metadata ou consultez le Guide de l'utilisateur MapBasic. 354 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exemple Si la table Parcels comporte une clé de métadonnée appelée "\Copyright", l'instruction ci-dessous lit la valeur de la clé : Print GetMetadata$(Parcels, "\Copyright") Voir également Instruction Metadata Fonction GetPreferencePath$( ) Objectif Renvoie le chemin d'accès stocké dans les préférences MapInfo Professional pour chaque type de table ou de boîte de dialogue de fichier. Ce chemin d'accès est utilisé pour initialiser la boîte de dialogue la première fois que celle-ci est ouverte lors d'une session MapInfo Professional ou suite à la modification de ce chemin d'accès dans la boîte de dialogue Préférences. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe GetPreferencePath$( preference_path_id ) preference_path_id est l'une des valeurs suivantes : • • • • • • • • • • • • • PREFERENCE_PATH_TABLE (0) PREFERENCE_PATH_WORKSPACE (1) PREFERENCE_PATH_MBX (2) PREFERENCE_PATH_IMPORT (3) PREFERENCE_PATH_SQLQUERY (4) PREFERENCE_PATH_THEMETHEMPLATE (5) PREFERENCE_PATH_MIQUERY (6) PREFERENCE_PATH_NEWGRID (7) PREFERENCE_PATH_CRYSTAL (8) PREFERENCE_PATH_GRAPHSUPPORT (9) PREFERENCE_PATH_REMOTETABLE (11) PREFERENCE_PATH_WFSTABLE (12) PREFERENCE_PATH_WMSTABLE (13) Valeur renvoyée Chaîne Description Avec l'ID d'un répertoire spécial de préférences MapInfo, la fonction GetPreferencePath$( ) renvoie le chemin de ce répertoire. Ce répertoire par défaut est un exemple de répertoire spécial MapInfo où MapInfo Professional écrit les nouvelles tables MapInfo natives. Référence 355 Fonction GetSeamlessSheet( ) Exemple include "mapbasic.def" declare sub main sub main dim sMiPrfFile as string sMiPrfFile = GetPreferencePath$( PREFERENCE_PATH_WORKSPACE) Print sMiPrfFile end sub Voir également Fonction GetCurrentPath$( ), Fonction LocateFile$( ) Fonction GetSeamlessSheet( ) Objectif Invite l'utilisateur à sélectionner une feuille dans une table logique, puis renvoie le nom de la feuille sélectionnée. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe GetSeamlessSheet( table_name ) table_name est le nom d'une table logique ouverte. Valeur renvoyée Chaîne qui représente un nom de table (ou une chaîne vide si l'utilisateur annule l'opération). Description Cette fonction affiche une boîte de dialogue qui répertorie toutes les feuilles qui composent une table logique. Si l'utilisateur sélectionne une feuille et clique sur OK, cette fonction renvoie le nom de la table sélectionnée par l'utilisateur. Si l'utilisateur annule l'opération, cette fonction renvoie une chaîne vide. Exemple Sub Browse_A_Table(ByVal s_tab_name As String) Dim s_sheet As String If TableInfo(s_tab_name, TAB_INFO_SEAMLESS) Then s_sheet = GetSeamlessSheet(s_tab_name) If s_sheet <> "" Then Browse * From s_sheet End If Else Browse * from s_tab_name End If End Sub Voir également Instruction Set Table, Fonction TableInfo( ) 356 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction GetTime() Objectif Renvoie le composant d'heure d'un élément de date/heure. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe GetTime( DateTime ) Valeur renvoyée Heure correspondant à une valeur entière stockée sur 5 octets : 2 octets pour les millisecondes, 1 octet pour les secondes, 1 octet pour les minutes et 1 octet pour les heures. Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. dim dtX as datetime dim Z as time dtX = "03/07/2007 12:09:09.000 AM" Z = GetTime(dtX) Print FormatTime$(Z,"hh:mm:ss.fff tt") Voir également Fonction FormatDate$( ), Fonction FormatTime$( ), Fonction NumberToDateTime( ),Fonction GetDate( ) Instruction Global Objectif Définit une ou plusieurs variables globales. Syntaxe Global var_name [ , var_name... ] As var_type [ , var_name... ] As var_type... ] var_name est le nom d'une variable globale à définir. var_type est un entier, un nombre à virgule flottante, une date, une valeur logique, une chaîne ou une variable Type personnalisée. Description Une instruction Global définit une ou plusieurs variables globales.Les instructions Global ne peuvent apparaître qu'en dehors d'une sous-procédure. La syntaxe de l'instruction Global est identique à celle de l'instruction Dim, la différence étant que les variables définies par une instruction Global ont une portée globale, alors que celles définies via une Référence 357 Instruction Goto instruction Dim sont locales. Une variable locale peut être examinée ou modifiée uniquement par la sous-procédure qui l'a définie, alors que n'importe quelle sous-procédure d'un programme peut examiner ou modifier une variable globale. Une sous-procédure peut définir des variables locales avec des noms correspondant à ceux des variables globales. Dans ce cas-là, les propres variables locales de la sous-procédure prévalent (par exemple, dans la sous-procédure, les références au nom d'une variable utilisent la variable locale et non la variable globale du même nom). Les variables de tableau globales peuvent être redimensionnées avec l'instruction ReDim. Les variables globales Windows sont « visibles » par les autres applications Windows à travers les conversations DDE. Exemple Declare Sub testing( ) Declare Sub Main( ) Global gi_var As Integer Sub Main( ) Call testing Note Str$(gi_var) ' this displays "23" End Sub Sub testing( ) gi_var = 23 End Sub Voir également Instruction Dim, Instruction ReDim, Instruction Type, Fonction UBound( ) Instruction Goto Objectif Passe à un emplacement différent (dans la même procédure), identifié par une étiquette. Restrictions Vous ne pouvez pas exécuter d'instruction Goto à l'aide de la fenêtre MapBasic. Syntaxe Goto label label est une étiquette qui apparaît à un autre endroit dans la même procédure. Description L'instruction Goto effectue un saut inconditionnel. L'exécution du programme se poursuit à la ligne d'instruction identifiée par la valeur label. La valeur label, elle-même, devrait être précédée du caractère deux-points. En revanche, le nom de la valeur label doit apparaître dans l'instruction Goto sans le caractère deux-points. En règle générale, l'instruction Goto ne devrait pas être utilisée pour quitter une boucle prématurément. L'instruction Exit Do et l'instruction Exit For permettent de quitter une boucle. De même, vous ne devriez pas utiliser une instruction Goto pour passer au corps d'une boucle. Une instruction Goto ne peut passer à la valeur label que dans la même procédure. 358 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exemple Goto endproc ... endproc: End Program Voir également Instruction Do Case...End Case, Instruction Do...Loop , Instruction For...Next, Instruction OnError , Instruction Resume Instruction Graph Objectif Ouvre une nouvelle fenêtre Graphique. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Graph label_column, expr ["label_text"][ , ... ] From table [ Position ( x, y ) [ Units paperunits ] ] [ Width window_width [ Units paperunits ] ] [ Height window_height [ Units paperunits ] ] [ Min | Max ] [ Using template_file [ Restore ] [ Series In Columns ] ] label_column est le nom de la colonne à utiliser pour étiqueter l'axe des Y. expr est une expression qui fournit les valeurs à représenter graphiquement. label_text est le texte qui apparaît pour chaque étiquette à la place du nom de la colonne table est le nom d'une table ouverte. paperunitsest le nom d'une unité papier (par exemple, « in »). x, y spécifie la position du coin supérieur gauche de la fenêtre Graphique, en unités papier. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. window_width et window_height définissent la taille de la fenêtre Graphique, en unités papier. Pour obtenir une liste des unités papier, reportez-vous à la section Instruction Set Paper Units. template_file est un fichier de modèle de graphique valide. Description Si la clause Using est présente et que template_file indique un fichier de modèle de graphique valide, un graphique est créé selon le fichier de modèle spécifié. Autrement, un graphique de version 5.0 est créé. Si la clause Restore est incluse, le texte du titre dans le fichier de modèle est utilisé dans la fenêtre Graphique. Autrement, le texte par défaut est utilisé pour chaque titre du graphique. Le mot-clé Restore est inclus lorsque vous écrivez la commande Graphique dans un document. Aussi, lorsque le document est ouvert, le texte du titre est restauré exactement tel qu'il était lorsque le document a été enregistré. Référence 359 Fonction GridTableInfo( ) Le mot-clé Restore n'est pas utilisé dans la commande Graphique créée par l'Assistant de création de graphique. Ainsi, le texte par défaut est utilisé pour chaque titre. Si Series In Columns est inclus, la série de graphique est basée sur les colonnes de la table. Autrement, la série est basée sur les lignes de la table. L'instruction Graph ajoute une nouvelle fenêtre Graphique à l'écran et affiche la table spécifiée. Le graphique s'affiche sous forme de graphique à barres pivotant. Les instructions Set Graph qui suivent peuvent reconfigurer les aspects spécifiques du graphique (par exemple, la rotation des graphiques, le type de graphique, le titre, etc.). La boîte de dialogue Fenêtre > Graphique de MapInfo Professional est limitée dans le sens où elle permet uniquement à l'utilisateur de sélectionner des noms de colonne à représenter graphiquement. Cependant, l'instruction Graph de MapBasic est capable de représenter graphiquement des expressions entières qui comprennent des noms de colonne. De même, même si la boîte de dialogue Graphique ne permet à l'utilisateur de sélectionner que quatre colonnes à représenter graphiquement, l'instruction Graph peut créer un graphique comportant un maximum de 255 colonnes. Si l'instruction Graph comprend le mot-clé facultatif Max, la fenêtre Graphique qui en résulte est agrandie et occupe la totalité de l'espace disponible sur l'écran pour MapInfo Professional. Inversement, si l'instruction Graph inclut le mot-clé Min, la fenêtre est réduite. Exemple (graphiques de version 5.5 et ultérieure) Graph State_Name, Pop_1980, Pop_1990, Num_Hh_80 From States Using "C:\Program Files\MapInfo\GRAPHSUPPORT\Templates\Column\Percent.3tf" Graph City, Tot_hu, Tot_pop From City_125 Using "C:\Program Files\MapInfo\GRAPHSUPPORT\Templates\Bar\Clustered.3tf" Series In Columns Exemple (graphiques de version antérieure à la version 5.5) Graph Country, Population From Selection Voir également Instruction Set Graph Fonction GridTableInfo( ) Objectif Renvoie des informations relatives à une table grille. Syntaxe GridTableInfo( table_id, attribute ) table_id est une chaîne qui représente un nom de table, un numéro de table entier positif ou 0 (zéro). La table doit être une table de grille. attribute est un code d'entier qui indique l'aspect de la table grille à renvoyer. Valeur renvoyée Chaîne, entier court, entier ou valeur logique selon le paramètre attribute spécifié. 360 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Le paramètre attribute peut être n'importe quelle valeur qui figure dans le tableau ci-dessous. Les codes dans la colonne de gauche (par exemple, GRID_TAB_INFO_) sont définis dans MAPBASIC.DEF. Code attribute ID GridTableInfo() renvoie : GRID_TAB_INFO_MIN_VALUE 1 Résultat à virgule flottante représentant la valeur de cellule de grille minimale dans le fichier GRID_TAB_INFO_MAX_VALUE 2 Résultat à virgule flottante représentant la valeur de cellule de grille maximale dans le fichier GRID_TAB_INFO_HAS_HILLSHADE 3 Résultat logique : TRUE si le fichier grille contient des informations d'analyse. Cet indicateur ne dépend pas de l'affichage du fichier avec analyse ou non. Voir également Instruction Create Grid, Fonction GetGridCellValue( ), Fonction IsGridCellNull( ), Fonction RasterTableInfo( ) Fonction GroupLayerInfo Objectif Cette fonction renvoie des informations sur un groupe de couches précis de la carte. Syntaxe GroupLayerInfo ( map_window_id, group_layer_id, attribute ) map_window_id est un identifiant de fenêtre Carte. group_layer_id est le numéro d'un groupe de couches de la fenêtre Carte (par exemple, 1 pour le premier groupe) ou le nom d'un groupe de couches de la carte. Pour déterminer le nombre de groupes de couches d'une fenêtre Carte, appelez la fonction MapperInfo( ). attribute est un code qui indique le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous. Valeur renvoyée Dépend du paramètre attribute. Description Les attributs disponibles sont les suivants : Valeur des paramètres window_id, ID attribute Description GROUPLAYER_INFO_NAME Renvoie une valeur de chaîne, qui correspond au nom du groupe de couches. Référence 1 361 Fonction HomeDirectory$( ) Valeur des paramètres window_id, ID attribute Description GROUPLAYER_INFO_LAYERLIST_ID 2 Renvoie une valeur numérique, à savoir l'ID du groupe de couches dans la liste correspondante (position occupée par ce groupe dans la liste de couches). GROUPLAYER_INFO_DISPLAY Renvoie une valeur booléenne. 3 • GROUPLAYER_INFO_DISPLAY_ON (True si la couche est visible (0)) • GROUPLAYER_INFO_DISPLAY_OFF (False si la couche est invisible (non nulle)) GROUPLAYER_INFO_LAYERS 4 Renvoie le nombre de couches graphiques dans le groupe. Cet attribut ignore les groupes de couches mais inclut toutes les couches graphiques emboîtées. GROUPLAYER_INFO_ALL_LAYERS 5 Renvoie le nombre de couches et de groupes de couches (couches et groupes de couches emboîtés inclus). GROUPLAYER_INFO_TOPLEVEL_LAYERS 6 Renvoie le nombre de couches graphiques ou de groupes de couches situés au début de la liste des groupes de couches. GROUPLAYER_INFO_PARENT_GROUP_ID 7 Renvoie l'ID de groupe de couches du groupe contenant ce groupe. Renvoie zéro (0) si le groupe de couches se trouve dans la liste de niveau supérieur. Les ID de groupes de couches sont compris entre zéro (0) et n, n étant le nombre de groupes de la liste et zéro (0), le niveau supérieur ou « racine » de la liste de couches. Tous les attributs d'informations des groupes de couches s'appliqueront à la racine de la liste, à l'exception de GROUPLAYER_INFO_DISPLAY (3). GROUPLAYER_INFO_NAME (1) renvoie le nom de la carte (identique au titre de la fenêtre). La couche Dessin est incluse dans tous les attributs servant à décompter le nombre de couches graphiques. Indiquer un ID de fenêtre Carte égal à zéro (0) renvoie le nom de la fenêtre Carte, ainsi que le nom de la couche Dessin sous la forme « cosmetic1 », « cosmetic2 ». Voir également Fonction LayerInfo( ), Fonction MapperInfo( ) Fonction HomeDirectory$( ) Objectif Renvoie une chaîne indiquant le chemin d'accès au répertoire de base de l'utilisateur. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe HomeDirectory$( ) 362 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Valeur renvoyée Chaîne Description La fonction HomeDirectory$( ) renvoie une chaîne qui indique le chemin d'accès au répertoire de base de l'utilisateur. L'importance du chemin d'accès au répertoire de base varie en fonction de la plate-forme matérielle de l'utilisateur. Le tableau ci-dessous récapitule le processus de définition du chemin d'accès au répertoire de base en fonction de la plate-forme. Environnement Définition du chemin d'accès au répertoire de base Windows Chemin d'accès au répertoire Windows de l'utilisateur. Exemple Dim s_home_dir As String s_home_dir = HomeDirectory$( ) Voir également Fonction ApplicationDirectory$( ), Fonction ProgramDirectory$( ), Fonction SystemInfo( ) Fonction HotlinkInfo( ) Objectif Renvoie des informations sur une définition de liaison dynamique dans une couche de la carte. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe HotlinkInfo ( map_window_id, layer_number, hotlink_number, attribute ) map_window_id est un identifiant de fenêtre Carte. layer_numbercorrespond au numéro d'une couche de la fenêtre Carte active (1 pour la couche supérieure, par exemple). Pour déterminer le nombre de couches d'une fenêtre Carte, appelez la fonction MapperInfo( ). hotlink_number correspond à l'index de la définition de liaison dynamique sur laquelle porte la requête. La première définition de liaison dynamique d'une couche dispose de l'index 1. attribute représente l'une des valeurs suivantes : Nom de la liaison dynamique ID Description HOTLINK_INFO_EXPR 1 Renvoie l'expression de nom de fichier pour cette définition de liaison dynamique. Référence 363 Fonction Hour( ) Nom de la liaison dynamique ID Description HOTLINK_INFO_MODE 2 Renvoie le mode de la définition de liaison dynamique, c.-à-d. l'une des valeurs prédéfinies suivantes : • HOTLINK_MODE_LABEL (0) • HOTLINK_MODE_OBJ (1) • HOTLINK_MODE_BOTH (2) HOTLINK_INFO_RELATIVE 3 Renvoie TRUE si l'option de chemin relatif est activée pour cette définition de liaison dynamique. HOTLINK_INFO_ENABLED 4 Renvoie TRUE si cette définition de liaison dynamique est activée. HOTLINK_INFO_ALIAS 5 Renvoie une valeur TRUE si cette définition de liaison dynamique est un alias. Voir également Instruction Set Map, Fonction LayerInfo( ) Fonction Hour( ) Objectif Récupère le composant Hour d'une valeur Time sous forme de nombre entier (0-23). Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Hour ( Time ) Valeur renvoyée Entier court Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. dim Z as time dim iHour as integer Z = CurDateTime() iHour = Hour(Z) Print iHour Voir également Fonction Minute( ), Fonction Second( ) 364 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Instruction If...Then Objectif Décide quel groupe d'instructions exécuter (le cas échéant), selon la valeur actuelle d'une ou de plusieurs expressions. Syntaxe If if_condition Then if_statement_list [ ElseIf elseif_condition Then elseif_statement_list ] [ ElseIf ... ] [ Else else_statement_list ] End If condition est évalue la valeur TRUE ou FALSE. statement_list est une liste contenant ou non des instructions. Restrictions Vous ne pouvez pas exécuter l'instruction If...Then via la fenêtre MapBasic. Description L'instruction If...Then permet l'exécution conditionnelle de différents groupes d'instructions. Dans sa forme la plus simple, l'instruction If n'inclut ni de clause ElseIf, ni de clause Else : If if_condition Then if_statement_list End If Avec cette disposition, MapBasic évalue la condition if_condition lors de l'exécution. Si la condition if_condition est TRUE, MapBasic exécute la liste if_statement_list ; sinon, MapBasic ignore if_statement_list. Une instruction If peut aussi inclure la clause facultative Else : If if_condition Then if_statement_list Else else_statement_list End If Avec cette disposition, MapBasic exécute soit la liste if_statement_list (si la condition est TRUE) soit la liste else_statement_list (si la condition est FALSE). De plus, une instruction If peut inclure une ou plusieurs clauses ElseIf, à la suite de la clause If (et avant la clause facultative Else) : If if_condition Then if_statement_list ElseIf elseif_condition Then Référence 365 Instruction Import elseif_statement_list Else else_statement_list End If Avec cette disposition, MapBasic teste une série de deux conditions minimum, jusqu'à ce qu'une de ces conditions renvoie TRUE ou jusqu'à ce que la clause Else ou End If soit atteinte. Si la condition if_condition est TRUE, MapBasic exécute la liste if_statement_list, puis passe directement à l'instruction qui se trouve à la suite de End If. Par contre, si la condition est FALSE, MapBasic évalue alors la condition else_if_condition. Si cette condition est TRUE, MapBasic exécute la liste elseif_statement_list. Une instruction If peut inclure au moins deux clauses ElseIf et vous permet ainsi de tester plusieurs conditions possibles. Toutefois, si vous testez une condition parmi la multitude de conditions possibles, l'instruction Do Case...End Case est plus appropriée qu'une instruction If associée à plusieurs clauses ElseIf. Exemple Dim today As Date Dim today_mon, today_day, yearcount As Integer today = CurDate( ) ' get current date today_mon = Month(today) ' get the month value today_day = Day(today) ' get the day value (1-31) If today_mon = 1 And today_day = 1 Then Note "Happy New Year!" yearcount = yearcount + 1 ElseIf today_mon = 2 And today_day = 14 Then Note "Happy Valentine's Day!" ElseIf today_mon = 12 And today_day = 25 Then Note "Merry Christmas!" Else Note "Good day." End If Voir également Instruction Do Case...End Case Instruction Import Objectif Crée une nouvelle table MapInfo Professional en important un fichier exporté, tel qu'un fichier GML ou DXF. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Voir Importation de fichiers MIF/MID, PICT, ou MapInfo pour DOS, Importation de fichiers DXF, Importing GML Files ou Importation de fichiers GML. Importation de fichiers MIF/MID, PICT, ou MapInfo pour DOS Syntaxe Import file_name [ Type file_type ] 366 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z [ Into table_name ] [ Overwrite ] file_name est une chaîne qui définit le nom du fichier à importer. file_type est une chaîne qui définit le format du fichier à importer (MIF, MBI, MMI, IMG, ou PICT). table_name définit le nom de la nouvelle table à créer. Description L'instruction Import crée une nouvelle table MapInfo en important le contenu d'un fichier existant. Remarque: Pour créer une table MapInfo basée sur un fichier de feuille de calcul ou de base de données, utilisez l'instruction Register Table et non l'instruction Import. La clause Type facultative définit le format du fichier à importer. La clause Type peut prendre l'une des formes suivantes : Clause Type Format de fichier défini Type "DXF" Fichier DXF (format pris en charge par les logiciels de CAO, tels qu'AutoCAD). Reportez-vous à la section Importation de fichiers DXF. Type MIF Paire de fichiers MIF/MID créée lors de l'exportation d'une table MapInfo. Type MBI MapInfo Boundary Interchange, créé par MapInfo pour DOS. Type MMI MapInfo Map Interchange, créé par MapInfo pour DOS. Type IMG Fichier image MapInfo, créé par MapInfo pour DOS. Type GML Fichiers GML. Reportez-vous à la section Importation de fichiers GML. Type GML21 Fichiers GML 2.1. Reportez-vous à la section Importation de fichiers GML 2.1. Si vous omettez la clause Type, MapInfo Professional considère que l'extension du fichier correspond au format de celui-ci. Un fichier appelé PARCELS.DXF est ainsi supposé être un fichier DXF. (Pour plus d'informations sur DXF, reportez-vous à la section Importation de fichiers DXF.) La clause Into vous permet de modifier le nom et l'emplacement de la table MapInfo créée. Si aucune clause Into n'est définie, la nouvelle table est créée dans le même répertoire que le fichier d'origine, avec un nom de fichier correspondant. Par exemple, sous Windows, si vous importez le fichier texte WORLD.MIF, le nom par défaut de la nouvelle table est WORLD.TAB. Si vous incluez le mot-clé Overwrite facultatif, MapInfo Professional crée une nouvelle table, qu'il existe déjà ou non une table portant le même nom. La nouvelle table remplace la table existante. Si vous omettez le mot-clé Overwrite et que la table existe déjà, MapInfo Professional ne l'écrase pas. Référence 367 Instruction Import Exemple Exemple d'importation à l'aide du style MapInfo actuel : Import "D:\midata\GML\test.gml" Type "GML" layer "TopographicLine" style auto off Into "D:\midata\GML\test_TopographicLine.TAB" Overwrite L'exemple suivant détaille l'importation d'un fichier MIF (MapInfo Interchange Format) : Import "WORLD.MIF" Type "MIF" Into "world_2.tab" Map From world_2 Importation de fichiers DXF Syntaxe Import file_name [ Type "DXF" ] [ Into table_name ] [ Overwrite ] [ Warnings { On | Off } ] [ Preserve [ AttributeData ] [ Preserve ] [ Blocks As MultiPolygonRgns ] ] [ CoordSys... ] [ Autoflip ] [ Transform ( DXF_x1, DXF_y1 ) ( DXF_x2, DXF_y2 ) ( MI_x1, MI_y1 ) ( MI_x2, MI_y2 ) ] [ Read [ Integer As Decimal ] [ Read ] [ Float As Decimal ] ] [ Store [ Handles ] [ Elevation ] [ VisibleOnly ] ] [ Layer DXF_layer_name [ Into table_name ] [ Preserve [ AttributeData ] [ Preserve ] [ Blocks As MultiPolygonRgns ] ] ] [ Layer... ] file_name est une chaîne qui définit le nom du fichier à importer. table_name définit le nom de la nouvelle table à créer. DXF_x1, DXF_y1, etc. sont des nombres qui représentent des coordonnées dans le fichier DXF. MI_x1, MI_y1, etc. sont des nombres qui représentent des coordonnées dans la table MapInfo. DXF_layer_name est une chaîne qui représente le nom d'une couche du fichier DXF. Description Si vous importez un fichier DXF, l'instruction Import peut inclure les clauses DXF spécifiques suivantes. Remarque: L'ordre des clauses est important. Placer les clauses dans le mauvais ordre peut entraîner des erreurs de compilation. Warnings On ou Warnings Off : contrôle si des messages d'avertissement sont affichés pendant l'opération d'import. Par défaut, les avertissements sont désactivés. 368 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Preserve AttributeData : incluez cette clause si vous souhaitez que MapInfo Professional préserve les données d'attributs du fichier DXF. Preserve Blocks As MultiPolygonRgns : incluez cette clause si vous souhaitez que MapInfo Professional stocke l'ensemble des polygones d'un enregistrement de bloc DXF dans un objet région incluant plusieurs polygones. Si vous omettez cette clause, chaque polygone DXF devient un objet région MapInfo Professional distinct. CoordSys : contrôle la projection et le système de coordonnées de la table. Pour plus d'informations, reportez-vous à la section Clause CoordSys. Autoflip : incluez cette option si vous souhaitez qu'une symétrie des coordonnées x de la carte soit créée au niveau de la ligne centrale de la carte. Cette option n'est autorisée que si le système de coordonnées défini est non terrestre. Transform : indique une transformation de coordonnées. Dans la clause Transform, vous pouvez définir les coordonnées x et y minimales et maximales du fichier importé et les coordonnées minimales et maximales dont vous souhaitez disposer dans la table MapInfo. Read Integer As Decimal : incluez cette clause si vous souhaitez stocker les nombres entiers du fichier DXF dans une colonne des valeurs décimales de la nouvelle table. Cette clause n'est autorisée que lorsque la clause Preserve AttributeData est incluse. Read Float As Decimal : incluez cette clause si vous souhaitez stocker les nombres à virgule flottante du fichier DXF dans une colonne des valeurs décimales de la nouvelle table. Cette clause n'est autorisée que lorsque la clause Preserve AttributeData est incluse. Store [Handles] [Elevation] [VisibleOnly] : si vous incluez Handles, la table MapInfo stocke les poignées (numéros d'identification uniques des objets du dessin) dans une colonne appelée _DXFHandle. Si vous incluez Elevation, MapInfo Professional stocke l'élévation centrale de chaque objet dans une colonne appelée _DXFElevation. (Pour les lignes, MapInfo Professional stocke l'élévation au centre de la ligne ; pour les régions, MapInfo Professional stocke la moyenne des valeurs d'élévation de l'objet.) Si vous incluez VisibleOnly, MapInfo Professional ne prend pas en compte les objets invisibles. Layer clause : si vous n'incluez aucune clause Layer, tous les objets du fichier DXF sont importés dans une même table MapInfo. Si vous incluez une ou plusieurs clauses Layer, chaque couche DXF désignée devient une table MapInfo distincte. Si le fichier DXF contient plusieurs couches et si l'instruction Import inclut une ou plusieurs clauses Layer, MapInfo Professional importe uniquement les couches désignées. Supposons, par exemple, que votre fichier DXF contienne quatre couches (couches 0, 1, 2 et 3). L'instruction Import suivante permet d'importer les quatre couches dans une même table MapInfo : Import "FLOORS.DXF" Into "FLOORS.TAB" Preserve AttributeData L'instruction suivante permet d'importer les couches 1 et 3, mais pas les couches 0 et 2 : Import "FLOORS.DXF" Layer "1" Into "FLOOR_1.TAB" Preserve AttributeData Layer "3" Into "FLOOR_3.TAB" Preserve AttributeData Référence 369 Instruction Import Importation de fichiers GML Syntaxe Import file_name [ Type "GML" ] [ Layer layer_name ] [ Into table_name ] [ Style Auto [ On | Off ] ] file_name est une chaîne qui définit le nom du fichier à importer. layer_name est une chaîne qui représente le nom d'une couche du fichier GML. table_name définit le nom de la nouvelle table à créer. Description Type est “GML” pour les fichiers GML. MapInfo Professional prend en charge l'importation des fichiers GML de l'OSGB (Ordnance Survey of Great Britain). Les éléments Cartographic Symbol, Topographic Point, Topographic Line, Topographic Area et Boundary Line sont pris en charge. L'élément Cartographic Text n'est pas pris en charge. L'élément Topographic Area peut être distribué de deux manières : MapInfo Professional prend en charge la forme non topologique. Si le fichier contient des liens XLINKS, MapInfo Professional importe uniquement les données d'attributs et non les objets spatiaux. Les liens XLINK sont stockés dans le fichier GML sous « xlink:href= ». Si des objets topologiques sont inclus dans le fichier, un avertissement s'affiche, indiquant que les objets spatiaux ne peuvent pas être importés. Accédez à la fenêtre Données pour afficher les données d'attributs. Exemple Exemple d'importation à l'aide du style GML : Import "D:\midata\GML\est.gml" Type "GML" layer "LandformArea" style auto on Into "D:\midata\GML\est_LandformArea.TAB" Overwrite Importation de fichiers GML 2.1 Syntaxe Import file_name [ Type "GML21" ] [ Layer layer_name] [ Into table_name ] [ Overwrite ] [ CoordSys... ] file_name correspond au nom du fichier GML 2.1 à importer. layer_name correspond au nom de la couche GML. table_name correspond au nom de la table MapInfo. 370 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description Type est « GML21 » pour les fichiers GML 2.1. Overwrite entraîne l'écrasement automatique du fichier TAB. Lorsque la clause Overwrite n'est pas spécifiée, une erreur est générée si le fichier TAB existe déjà. La clause Coordsys est facultative. Si le fichier GML contient une projection prise en charge et si la clause Coordsys n'est pas spécifiée, la projection du fichier GML est utilisée. Si le fichier GML contient une projection prise en charge et si la clause Coordsys est spécifiée, la projection de la clause Coordsys est utilisée. Si le fichier GML ne contient aucune projection prise en charge, la clause Coordsys doit être spécifiée. Remarque: Si la clause Coordsys ne correspond pas à la projection du fichier GML, il est possible que les données ne soient pas importées correctement. Le système de coordonnées doit correspondre à celui du fichier GML. Les données ne seront pas transformées d'une projection à une autre. Exemple Exemple d'importation à l'aide du style GML21 : Import "D:\midata\GML\GML2.1\mi_usa.xml" Type "GML21" layer "USA" Into "D:\midata\GML\GML2.1\mi_usa_USA.TAB" Overwrite CoordSys Earth Projection 1, 104 Voir également Instruction Export Instruction Include Objectif Intègre le contenu d'un fichier texte distinct à un programme MapBasic. L'exécution de cette instruction de la fenêtre MapBasic dans MapInfo Professional ne fonctionne pas. Syntaxe Include "filename" filename est le nom du fichier texte existant. Restrictions Vous ne pouvez pas exécuter l'instruction Include via la fenêtre MapBasic. Description Lorsque MapBasic compile le fichier d'un programme et rencontre une instruction Include, tout le contenu du fichier inclus est inséré dans le fichier du programme. Le fichier défini par l'instruction Include doit être un fichier texte, contenant uniquement des instructions MapBasic légitimes. Si le paramètre filename ne définit pas le chemin d'accès à un répertoire et si le fichier indiqué n'existe pas dans le répertoire sélectionné, le compilateur MapBasic recherche le fichier dans le répertoire du Référence 371 Instruction Input # programme. Cette disposition vous permet de conserver les fichiers de définitions standard, tels que MAPBASIC.DEF, dans un répertoire (au lieu de copier les fichiers de définitions dans les répertoires où vous conservez les fichiers de programmes). L'instruction Include est le plus souvent utilisée pour inclure le fichier de définitions MapBasic standard, MAPBASIC.DEF. Ce fichier, fourni avec MapBasic, définit un certain nombre d'identifiants importants, tels que TRUE et FALSE. Lorsque vous modifiez le contenu d'un fichier utilisé via une instruction Include, vous devez recompiler tous les programmes MapBasic incluant le fichier en question. Exemple Include "MAPBASIC.DEF" Instruction Input # Objectif Lit les données à partir d'un fichier et les stocke dans des variables. Syntaxe Input # filenum, var_name [ , var_name... ] filenum est le numéro d'un fichier ouvert via l'instruction Open File. var_name est le nom d'une variable. Description L'instruction Input # lit les données à partir d'un fichier ouvert en mode séquentiel (par exemple, le mode INPUT) et stocke les données dans une ou plusieurs variables MapBasic. L'instruction Input # lit les données (jusqu'à la prochaine fin de ligne) dans la ou les variables indiquées par les paramètres var_name. MapInfo Professional traite les virgules et les caractères de fins de ligne comme des délimiteurs de champs. Pour lire une ligne entière de texte dans une seule variable de type chaîne, utilisez l'instruction Line Input. MapBasic convertit automatiquement les données au type des variables. Lors de la lecture de données dans une variable de type chaîne, l'instruction Input # traite une ligne vide comme une chaîne vide. Lors de la lecture de données dans une variable numérique, l'instruction Input # traite une ligne vide comme une valeur nulle. Après avoir émis une instruction Input #, appelez la fonction EOF( ) pour déterminer si MapInfo Professional a pu lire les données. Si l'entrée est concluante, la fonction EOF( ) renvoie la valeur FALSE. Si la fin de fichier a été atteinte avant que l'entrée ait abouti, la fonction EOF( ) renvoie la valeur TRUE. Pour obtenir un exemple de l'instruction Input #, reportez-vous à l'exemple de programme NVIEWS (Named Views : vues nommées). Les types de données suivants ne sont pas disponibles avec l'instruction Input # : • Alias 372 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z • • • • • Pen Valeur de remplissage (Brush) Police Symboles Objet Voir également Fonction EOF( ), Instruction Line Input, Instruction Open File, Instruction Write # Instruction Insert Objectif Ajoute de nouvelles lignes à une table ouverte. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Insert Into table [ ( columnlist ) ] { Values ( exprlist ) | Select columnlist From table } table est le nom d'une table ouverte. columnlist est la liste des expressions de colonnes, séparées par des virgules. exprlist est une liste d'une ou plusieurs expressions, séparées par des virgules. Description L'instruction Insert permet d'insérer de nouvelles lignes dans une table ouverte. Cette instruction dispose de deux formes principales, vous permettant d'ajouter une ligne à la fois ou d'insérer des groupes de lignes d'autres tables (via la clause Select). Dans les deux cas, le nombre de valeurs de colonnes insérées doit correspondre au nombre de colonnes de la liste. Si aucune liste de colonnes n'est définie, tous les champs sont pris en compte. Notez que vous devez utiliser une instruction Commit Table si vous souhaitez sauvegarder de manière permanente (sur disque) les enregistrements nouvellement insérés. Si vous connaissez le nombre exact de colonnes de la table en cours de modification et si vous disposez de valeurs pour chacune des colonnes, il n'est pas nécessaire de définir la clause facultative columnlist. Dans l'exemple suivant, nous savons que la table compte quatre colonnes (pour le nom, l'adresse, la ville et l'État) et nous fournissons à MapBasic une valeur pour chacune de ces colonnes. Insert Into customers Values ("Mary Ryan", "23 Main St", "Dallas", "TX") S'il s'avère que la table contient moins (ou plus) de quatre colonnes, l'instruction précédente génèrerait une erreur lors de l'exécution. Si vous ne connaissez pas le nombre exact de colonnes d'une table ou l'ordre exact dans lequel les colonnes apparaissent, vous pouvez utiliser la clause facultative columnlist. Référence 373 Fonction InStr( ) Exemples L'exemple suivant insère une nouvelle ligne dans la table des clients tout en ne fournissant qu'une seule valeur de colonne pour la nouvelle ligne. Toutes les autres colonnes de la nouvelle ligne seront donc initialement vierges. La valeur définie par la clause Values est stockée dans la colonne du nom, quel que soit le nombre de colonnes de la table et quelle que soit la position de la colonne du nom dans la structure de la table. Insert Into customers (Name) Values ("Steve Harris") L'instruction suivante crée un objet point et insère l'objet dans une nouvelle ligne de la table Sites. Notez que le nom Obj est un nom de colonne spécial, représentant les objets graphiques de la table. Insert Into sites (Obj) Values ( CreatePoint(-73.5, 42.8) ) L'exemple suivant indique comment l'instruction Insert peut permettre d'ajouter les enregistrements d'une table à une autre. Dans cet exemple, nous partons du principe que la table NY_ZIPS contient les limites des codes postaux de l'État de New York et la table NJ_ZIPS celles du New Jersey. Pour des raisons pratiques, nous souhaitons regrouper toutes les limites de codes postaux dans une même table (des opérations telles que Find ne pouvant être appliquées que dans une table à la fois). En conséquence, l'instruction Insert ci-dessous ajoute tous les enregistrements de la table du New Jersey à la table de New York. Insert Into NY_ZIPS Select * From NJ_ZIPS Dans l'exemple suivant, nous sélectionnons les objets graphiques de la table World, puis insérons chaque objet en tant que nouvel enregistrement dans la table Outline. Open Table "world" Open Table "outline" Insert Into outline (Obj) Select Obj From World Voir également Instruction Commit Table, Instruction Delete, Instruction Rollback Fonction InStr( ) Objectif Renvoie une position de caractère, indiquant l'emplacement où une sous-chaîne apparaît pour la première fois dans une chaîne. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe InStr( position, string, substring ) position est un entier positif, indiquant la position de départ de la recherche. string est une expression de chaîne. substring est une expression de chaîne que nous tentons de localiser dans la chaîne. 374 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Valeur renvoyée Entier Description La fonction InStr( ) vérifie que l'expression de chaîne string contient l'expression de chaîne substring. MapBasic recherche l'expression de chaîne, en commençant à l'emplacement indiqué par le paramètre position. Ainsi, si la valeur du paramètre position est un, MapBasic procède à la recherche au tout début du paramètre string. Si le paramètre string ne contient pas l'expression de chaîne substring, la fonction InStr( ) renvoie la valeur 0. Si le paramètre string contient l'expression de chaîne substring, la fonction InStr( ) renvoie la position de caractère à laquelle la sous-chaîne apparaît. Par exemple, si l'expression de chaîne substring apparaît au tout début du paramètre string, InStr( ) renvoie une valeur équivalente à un. Si le paramètre substring est une chaîne nulle, la fonction InStr( ) renvoie zéro. La fonction InStr( ) respecte la casse. En d'autres termes, la fonction InStr( ) ne peut pas localiser la sous-chaîne « BC » dans la chaîne principale « abcde » parce que la sous-chaîne « BC » est en majuscules. Conditions d'erreur L'erreur ERR_FCN_ARG_RANGE (644) est générée si un argument se trouve en dehors de la plage valide. Exemple Dim fullname As String, pos As Integer fullname = "New York City" pos = InStr(1, fullname, "York") ' pos will now contain a value of 5 (five) pos = InStr(1, fullname, "YORK") ' pos will now contain a value of 0; ' YORK is uppercase, so InStr will not locate it ' within the string "New York City" Voir également Fonction Mid$( ) Fonction Int( ) Objectif Renvoie une valeur entière, obtenue en supprimant la partie fractionnelle d'une valeur décimale. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Int( num_expr ) Référence 375 Fonction IntersectNodes( ) num_expr représente une expression numérique. Valeur renvoyée Entier Description La fonction Int( ) renvoie la valeur entière la plus proche, inférieure ou égale à l'expression num_expr spécifiée. La Fonction Fix( ) est similaire, mais pas identique à la fonction Int( ). Les deux fonctions ne traitent pas les valeurs fractionnelles négatives de la même manière. Lorsqu'un nombre fractionnel négatif est transmis à la Fonction Fix( ) , celle-ci renvoie la valeur entière la plus proche, supérieure ou égale à la valeur initiale. L'appel de fonction Fix(-2,3) renvoie donc une valeur de -2. Cependant, lorsqu'un nombre fractionnel négatif est transmis à la fonction Int( ) celle-ci renvoie la valeur entière la plus proche, inférieure ou égale à la valeur initiale. L'appel de fonction Int(-2.3) renvoie donc une valeur de -3. Exemple Dim whole As Integer whole = Int(5.999) ' whole now has the value 5 whole = Int(-7.2) ' whole now has the value -8 Voir également Fonction Fix( ), Fonction Round( ) Fonction IntersectNodes( ) Objectif Calcule l'ensemble de points au niveau duquel deux objets se rencontrent et renvoie un objet polyligne contenant chacun des points d'intersection. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe IntersectNodes( object1, object2, points_to_include ) object1 et object2 sont des expressions d'objet. Il ne s'agit pas forcément d'objets point ou texte. points_to_include correspond à l'une des valeurs d'entier court suivantes : • INCL_CROSSINGS renvoie les points d'intersection des segments. • INCL_COMMON renvoie les extrémités de segments qui se chevauchent. • INCL_ALL renvoie les points d'intersection et de chevauchement des segments. Valeur renvoyée Objet polyligne contenant les points d'intersection spécifiés. 376 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description La fonction IntersectNodes( ) renvoie un objet polyligne contenant tous les nœuds d'intersection de deux objets. Fonction IsGridCellNull( ) Objectif Renvoie une valeur logique. Renvoie TRUE si l'emplacement (x, y) de la valeur de la cellule est valide pour la table et représente une cellule à valeur nulle (elle n'a pas de valeur affectée). Renvoie FALSE si la cellule contient une valeur non nulle. La fonction GetCellValue() peut être utilisée pour extraire la valeur. Syntaxe IsGridCellNull( table_id, x_pixel, y_pixel ) table_id est une chaîne qui représente un nom de table, un numéro de table entier positif ou 0 (zéro). La table doit être une table de grille. x_pixel est le nombre entier de pixels de la coordonnée X de la cellule de la grille. Le nombre de pixels commence à 0. La valeur maximale de pixels est (pixel_width-1). Elle est déterminée en appelant RasterTableInfo(...RASTER_TAB_INFO_WIDTH) y_pixel est le nombre entier de pixels de la coordonnée Y de la cellule de la grille. Le nombre de pixels commence à 0. La valeur maximale de pixels est (pixel_height-1). Elle est déterminée en appelant RasterTableInfo(...RASTER_TAB_INFO_HEIGHT). Valeur renvoyée Une valeur logique est renvoyée. Elle indique si la cellule définie dans la table est nulle ou non nulle. Si la cellule de la grille est non nulle (IsGridCellNull() renvoie FALSE), alors la fonction GetGridCellValue() peut être appelée afin d'extraire la valeur pour ce pixel de la grille. Voir également Instruction Create Grid, Fonction GetGridCellValue( ), GridTableInfo( ), Fonction RasterTableInfo( ) Fonction IsogramInfo( ) Objectif Renvoie tous les attributs définis pour une connexion à l'aide de l'instruction Set Connection Isogram. Inclut les attributs permettant de traiter le nombre maximal d'enregistrements pour les valeurs de serveur, de temps et de distance. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe IsogramInfo( connection_handle, attribute ) Référence 377 Fonction IsogramInfo( ) connection_handle est un entier correspondant au numéro de connexion renvoyé par l'instruction Open Connection. attribute est un code d'entier qui indique le type d'informations à renvoyer. Valeur renvoyée Nombre à virgule flottante, valeur logique ou chaîne, selon le paramètre attribute. Description Cette fonction renvoie les propriétés définies par défaut pour la connexion ou les propriétés modifiées à l'aide de l'instruction Set Connection Isogram. La fonction IsogramInfo( ) peut renvoyer plusieurs attributs. Les codes sont définis dans le fichier MAPBASIC.DEF. 378 Paramètre attribute ID Valeur renvoyée par IsogramInfo( ) : ISOGRAM_BANDING 1 Valeur logique représentant l'option Banding ISOGRAM_MAJOR_ROADS_ONLY 2 Valeur logique représentant l'option MajorRoadsOnly ISOGRAM_RETURN_HOLES 3 Valeur logique indiquant si les régions avec des trous doivent être renvoyées ou non. ISOGRAM_MAJOR_POLYGON_ONLY 4 Valeur logique indiquant si seul le polygone principal d'une région doit être renvoyé. ISOGRAM_MAX_OFF_ROAD_DISTANCE 5 Valeur à virgule flottante représentant la valeur Maximum off Road Distance. ISOGRAM_MAX_OFF_ROAD_DISTANCE_UNITS 6 Chaîne de l'unité associée à la valeur ISOGRAM_SIMPLIFICATION_FACTOR 7 Valeur à virgule flottante représentant le facteur de simplification (un pourcentage représenté sous la forme d'une valeur comprise entre 0 et 1). ISOGRAM_DEFAULT_AMBIENT_SPEED 8 Valeur à virgule flottante représentant la vitesse ambiante par défaut. ISOGRAM_DEFAULT_AMBIENT_SPEED_DISTANCE_UNIT 9 Valeur de chaîne représentant l'unité de distance (« mi », « km »). ISOGRAM_DEFAULT_AMBIENT_SPEED_TIME_UNIT 10 Valeur de chaîne représentant l'unité de temps (« hr », « min », « sec »). ISOGRAM_DEFAULT_PROPAGATION_FACTOR 11 Détermine le pourcentage de réseau non routier des frais restants (distance) pour lesquels les trajets hors réseau sont autorisés lors de la définition de la limite Distance. Les routes n'appartenant pas au réseau peuvent MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Paramètre attribute ID Valeur renvoyée par IsogramInfo( ) : être des allées, des voies d'accès, etc. Le facteur de propagation est un pourcentage des frais utilisé pour calculer la distance entre le point de départ et la limite Distance. La valeur par défaut de cette propriété est 0,16. ISOGRAM_BATCH_SIZE 12 Valeur entière représentant le nombre maximal d'enregistrements envoyés simultanément au service. ISOGRAM_POINTS_ONLY 13 Valeur logique indiquant si les enregistrements contenant des objets autres que des objets point doivent être ignorés ou non. ISOGRAM_RECORDS_INSERTED 14 Valeur entière représentant le nombre d'enregistrements insérés dans la dernière commande. ISOGRAM_RECORDS_NOTINSERTED 15 Valeur entière représentant le nombre d'enregistrements NON insérés dans la dernière commande. ISOGRAM_MAX_BATCH_SIZE 16 Valeur entière représentant le nombre maximal d'enregistrements (c'est-à-dire de points) dont l'envoi simultané au service est autorisé par le serveur. ISOGRAM_MAX_BANDS 17 Valeur entière représentant le nombre maximal de bandes ISO (c'est-à-dire de distances ou de temps) autorisées. ISOGRAM_MAX_DISTANCE 18 Valeur à virgule flottante représentant la distance maximale autorisée pour une requête Isodistance. Les unités de distance sont définies par ISOGRAM_MAX_DISTANCE_UNITS. ISOGRAM_MAX_DISTANCE_UNITS 19 Valeur de chaîne représentant les unités pour ISOGRAM_MAX_DISTANCE. ISOGRAM_MAX_TIME 20 Valeur à virgule flottante représentant le temps maximal autorisé pour une requête Isochrone. Les unités de temps sont définies par ISOGRAM_MAX_TIME_UNITS. ISOGRAM_MAX_TIME_UNITS 21 Valeur de chaîne représentant les unités pour ISOGRAM_MAX_TIME. Référence 379 Fonction IsPenWidthPixels( ) Exemple Le segment de code MapBasic suivant imprime les contraintes de routing Envinsa dans la fenêtre Message de MapInfo Professional : Include "MapBasic.Def" declare sub main sub main dim iConnect as integer Open Connection Service Isogram URL "http://envinsa_server:8062/Route/services/Route" User "john" Password "green" into variable iConnect Print "Isogram_Max_Batch_Size: " + IsogramInfo(iConnect,Isogram_Max_Batch_Size) Print "Isogram_Max_Bands: " + IsogramInfo(iConnect, Isogram_Max_Bands) Print "Isogram_Max_Distance: " + IsogramInfo(iConnect, Isogram_Max_Distance) Print "Isogram_Max_Distance_Units: " + IsogramInfo(iConnect, Isogram_Max_Distance_Units) Print "Isogram_Max_Time: " + IsogramInfo(iConnect,Isogram_Max_Time) Print "Isogram_Max_Time_Units: " + IsogramInfo(iConnect,Isogram_Max_Time_Units) Close Connection iConnect end sub Voir également Instruction Create Object, Instruction Open Connection, Instruction Set Connection Isogram Fonction IsPenWidthPixels( ) Objectif La fonction IsPenWidthPixels détermine si l'épaisseur d'une ligne est exprimée en pixels ou en points. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe IsPenWidthPixels( penwidth ) penwidth est un entier court représentant l'épaisseur de la ligne. Valeur renvoyée True si l'épaisseur est en pixels. False si l'épaisseur est en points. Description La fonction IsPenWidthPixels( ) renvoie TRUE si l'épaisseur de ligne est indiquée en pixels. L'épaisseur d'une ligne peut être déterminée à l'aide de la fonction StyleAttr( ). Exemple Include "MAPBASIC.DEF" Dim CurPen As Pen 380 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Dim Width As Integer Dim PointSize As Float CurPen = CurrentPen( ) Width = StyleAttr(CurPen, PEN_WIDTH) If Not IsPenWidthPixels(Width) Then PointSize = PenWidthToPoints(Width) End If Voir également Fonction CurrentPen( ), Fonction MakePen( ), Clause Pen, Fonction PenWidthToPoints( ), Fonction StyleAttr( ) Instruction Kill Objectif Supprime un fichier. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Kill filespec filespec est une chaîne définissant le nom d'un fichier (et, éventuellement, le chemin d'accès au fichier). Valeur renvoyée Chaîne Description L'instruction Kill permet de supprimer un fichier du disque. L'instruction Kill ne peut être annulée. Il est donc nécessaire d'appliquer l'instruction Kill avec prudence. Exemple Kill "C:\TEMP\JUNK.TXT" Voir également Instruction Open File Fonction LabelFindByID( ) Objectif Initialise un pointeur d'étiquette interne. Vous pouvez ainsi effectuer une requête sur l'étiquette d'une ligne spécifique dans une couche de carte. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LabelFindByID( map_window_id, layer_number, row_id, table, b_mapper ) Référence 381 Fonction LabelFindByID( ) map_window_id est un identifiant de fenêtre entier, désignant une fenêtre Carte. layer_number correspond au numéro d'une couche de la fenêtre Carte sélectionnée (1 pour la couche supérieure, par exemple). row_id est une valeur entière positive indiquant le numéro de la ligne contenant l'étiquette sur laquelle repose votre requête. table est un nom de table ou une chaîne vide ("") : lorsque vous effectuez une requête dans une table appartenant à une table logique, définissez le nom de la table membre. Sinon, définissez une chaîne vide. b_mapper est une valeur logique. Indiquez TRUE pour rechercher les étiquettes qui apparaissent lorsque la carte est active, ou FALSE pour effectuer une requête sur les étiquettes qui apparaissent lorsque la carte est intégrée à une mise en page. Valeur renvoyée Valeur logique : TRUE indique qu'il existe une étiquette pour la ligne spécifiée. Description Appelez la fonction LabelFindByID( ) lorsque vous souhaitez effectuer une requête sur l'étiquette d'une ligne spécifique d'une couche de carte. Si la valeur renvoyée est TRUE, il existe une étiquette pour la ligne. Vous pouvez effectuer une requête sur l'étiquette en appelant la Fonction LabelInfo( ). Exemple L'exemple suivant trace la table World, affiche les étiquettes automatiques et détermine si une étiquette a été dessinée pour une ligne spécifique de la table. Include "mapbasic.def" Dim b_morelabels As Logical Dim i_mapid As Integer Dim obj_mytext As Object Open Table "World" Interactive As World Map From World i_mapid = FrontWindow( ) Set Map Window i_mapid Layer 1 Label Auto On ' Make sure all labels draw before we continue... Update Window i_mapid ' Now see if row # 1 was auto-labeled b_morelabels = LabelFindByID(i_mapid, 1, 1, "", TRUE) If b_morelabels Then ' The object was labeled; now query its label. obj_mytext = LabelInfo(i_mapid, 1, LABEL_INFO_OBJECT) ' At this point, you could save the obj_mytext object ' in a permanent table; or you could query it by ' calling ObjectInfo( ) or ObjectGeography( ). End If Voir également Fonction LabelFindFirst( ), Fonction LabelFindNext( ), Fonction LabelInfo( ) 382 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction LabelFindFirst( ) Objectif Initialise un pointeur d'étiquette interne. Vous pouvez ainsi effectuer une requête sur la première étiquette d'une couche de carte. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LabelFindFirst( map_window_id, layer_number, b_mapper ) map_window_id est un identifiant de fenêtre entier, désignant une fenêtre Carte. layer_number correspond au numéro d'une couche de la fenêtre Carte sélectionnée (1 pour la couche supérieure, par exemple). b_mapper est une valeur logique. Indiquez TRUE pour rechercher les étiquettes qui apparaissent lorsque la carte est active, ou FALSE pour effectuer une requête sur les étiquettes qui apparaissent lorsque la carte est intégrée à une mise en page. Valeur renvoyée Valeur logique : TRUE indique qu'il existe des étiquettes pour la couche définie (les étiquettes sont actuellement visibles ou l'utilisateur a modifié des étiquettes et celles-ci ne sont pas visibles actuellement). Description Appelez la fonction LabelFindFirst( ) si vous souhaitez parcourir les étiquettes d'une couche de carte en boucle pour y effectuer une requête. Les requêtes dans les étiquettes se déroulent en deux étapes : 1. Définissez le pointeur d'étiquette interne de MapBasic en appelant la fonction LabelFindFirst( ), la Fonction LabelFindNext( ) ou la Fonction LabelFindByID( ). 2. Si la fonction appelée à l'étape 1 ne renvoie pas FALSE, vous pouvez effectuer une requête sur l'étiquette sélectionnée en appelant la Fonction LabelInfo( ). Pour effectuer des requêtes dans d'autres étiquettes, retournez à l'étape 1. Exemple Un exemple vous est proposé dans la section Fonction LabelInfo( ). Voir également Fonction LabelFindByID( ), Fonction LabelFindNext( ), Fonction LabelInfo( ) Référence 383 Fonction LabelFindNext( ) Fonction LabelFindNext( ) Objectif Faites avancer le pointeur d'étiquette interne, afin de pouvoir effectuer une requête dans la prochaine étiquette d'une couche de carte. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LabelFindNext( map_window_id, layer_number ) map_window_id est un identifiant de fenêtre entier, désignant une fenêtre Carte. layer_number correspond au numéro d'une couche de la fenêtre Carte sélectionnée (1 pour la couche supérieure, par exemple). Valeur renvoyée Valeur logique : TRUE indique que le pointeur d'étiquette a atteint l'étiquette suivante, FALSE indique que la couche ne contient pas d'autres étiquettes. Description Une fois que vous avez appelé la Fonction LabelFindFirst( ) pour lancer la recherche des étiquettes, vous pouvez appeler la fonction LabelFindNext( ) pour atteindre la prochaine étiquette de la couche. Exemple Un exemple vous est proposé dans la section Fonction LabelInfo( ). Voir également Fonction LabelFindByID( ), Fonction LabelFindFirst( ), Fonction LabelInfo( ) Fonction LabelInfo( ) Objectif Renvoie des informations sur l'étiquette d'une carte. LabelInfo peut renvoyer une étiquette sous forme d'objet texte qui peut être aligné ou sous forme de texte droit ayant subi une rotation. Cependant, si l'étiquette est alignée, elle est renvoyée en tant que texte plat ayant subi une rotation. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Labelinfo( map_window_id, layer_number, attribute ) map_window_id est un identifiant de fenêtre entier, désignant une fenêtre Carte. layer_number correspond au numéro d'une couche de la fenêtre Carte sélectionnée (1 pour la couche supérieure, par exemple). 384 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z attribute est un code qui indique le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous. Valeur renvoyée La valeur renvoyée varie en fonction du paramètre attribute. Description La fonction Labelinfo( ) renvoie des informations sur une étiquette de la fenêtre Carte. Remarque: Les étiquettes ne sont pas des objets texte. Pour effectuer une requête sur un objet texte, appelez des fonctions telles que la Fonction ObjectInfo( ) ou la Fonction ObjectGeography( ). Avant d'appeler la fonction Labelinfo( ), vous devez initialiser le pointeur d'étiquette interne de MapBasic en appelant la Fonction LabelFindFirst( ), la Fonction LabelFindNext( ) ou la Fonction LabelFindByID( ). Reportez-vous à l'exemple ci-dessous. Le paramètre attribute doit être l'un des codes répertoriés dans le tableau suivant. Les codes sont définis dans MAPBASIC.DEF. Code attribute ID Valeur renvoyée par Labelinfo( ) LABEL_INFO_OBJECT 1 Objet texte correspondant à une approximation de l'étiquette. Cette fonction vous permet de convertir une étiquette en objet texte, que vous pouvez enregistrer dans une table permanente. Remarque: LABEL_INFO_OBJECT renvoie un objet texte. Cependant, si l'étiquette est alignée, la fonction renvoie une étiquette avec une orientation parallèle. MapBasic ne prend pas en charge les étiquettes alignées en tant qu'objets texte. LABEL_INFO_POSITION 2 Valeur entière comprise entre 0 et 8, indiquant la position de l'étiquette par rapport à son emplacement d'ancrage. La valeur renvoyée correspond à l'un des codes suivants : • • • • • • • • • • Référence LAYER_INFO_LBL_POS_AUTO (-1), LAYER_INFO_LBL_POS_CC (0), LAYER_INFO_LBL_POS_TL (1), LAYER_INFO_LBL_POS_TC (2), LAYER_INFO_LBL_POS_TR (3), LAYER_INFO_LBL_POS_CL (4), LAYER_INFO_LBL_POS_CR (5), LAYER_INFO_LBL_POS_BL (6), LAYER_INFO_LBL_POS_BC (7), LAYER_INFO_LBL_POS_BR (8). 385 Fonction LabelInfo( ) Code attribute ID Valeur renvoyée par Labelinfo( ) Par exemple, si l'étiquette est située dans la zone inférieure droite du point d'ancrage, sa position est de 8. Si l'étiquette est centrée horizontalement et verticalement au-dessus de son point d'ancrage, sa position est de 0. Si l'étiquette est positionnée automatiquement, sa position est -1. 386 LABEL_INFO_ANCHORX 3 Valeur à virgule flottante indiquant la coordonnée x de l'emplacement d'ancrage de l'étiquette. LABEL_INFO_ANCHORY 4 Valeur à virgule flottante indiquant la coordonnée y de l'emplacement d'ancrage de l'étiquette. LABEL_INFO_OFFSET 5 Valeur entière comprise entre 0 et 200, indiquant la distance de décalage (en points) de l'étiquette par rapport à son emplacement d'ancrage. LABEL_INFO_ROWID 6 Valeur entière représentant l'identifiant de la ligne à laquelle cette étiquette appartient. Renvoie zéro s'il n'existe aucune étiquette. LABEL_INFO_TABLE 7 Valeur de chaîne représentant le nom de la table à laquelle cette étiquette appartient. Cette fonction est utile si vous utilisez des tables logiques et que vous souhaitez savoir à quelle table membre appartient l'étiquette. LABEL_INFO_EDIT 8 Valeur logique, TRUE si l'étiquette a été modifiée. LABEL_INFO_EDIT_VISIBILITY 9 Valeur logique, TRUE si la visibilité de l'étiquette est désactivée. LABEL_INFO_EDIT_ANCHOR 10 Valeur logique, TRUE si l'étiquette a été déplacée. LABEL_INFO_EDIT_OFFSET 11 Valeur logique, TRUE si le décalage de l'étiquette a été modifié. LABEL_INFO_EDIT_FONT 12 Valeur logique, TRUE si la police de l'étiquette a été modifiée. LABEL_INFO_EDIT_PEN 13 Valeur logique, TRUE si le style Pen de la ligne de renvoi a été modifié. LABEL_INFO_EDIT_TEXT 14 Valeur logique, TRUE si le texte de l'étiquette a été modifié. LABEL_INFO_EDIT_TEXTARROW 15 Valeur logique, TRUE si le type de flèche du texte de l'étiquette a été modifié. LABEL_INFO_EDIT_ANGLE 16 Valeur logique, TRUE si l'angle de rotation de l'étiquette a été modifié. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Code attribute ID Valeur renvoyée par Labelinfo( ) LABEL_INFO_EDIT_POSITION 17 Valeur logique, TRUE si la position de l'étiquette (par rapport au point d'ancrage) a été modifiée. LABEL_INFO_EDIT_TEXTLINE 18 Valeur logique, TRUE si la ligne de renvoi a été déplacée. LABEL_INFO_SELECT 19 Valeur logique, TRUE si l'étiquette est sélectionnée. LABEL_INFO_DRAWN 20 Valeur logique, TRUE si l'étiquette est actuellement visible. LABEL_INFO_ORIENTATION 21 Renvoie une valeur d'entier court indiquant l'orientation de l'étiquette sélectionnée. L'étiquette sélectionnée est initialisée à l'aide d'une des fonctions Label suivantes : LabelFindFirst, LabelFindByID, ou LabelFindNext. La valeur renvoyée est l'une des valeurs suivantes : • LAYER_INFO_LABEL_ORIENT_HORIZONTAL (l'angle de l'étiquette est nul) • LAYER_INFO_LABEL_ORIENT_PARALLEL (l'étiquette est inclinée) • LAYER_INFO_LABEL_ORIENT_CURVED (l'étiquette est alignée) Exemple L'exemple ci-dessous indique comment parcourir l'ensemble des étiquettes d'une ligne en boucle via la fonction Labelinfo( ) pour effectuer une requête dans chaque étiquette. Dim b_morelabels As Logical Dim i_mapid, i_layernum As Integer Dim obj_mytext As Object ' Here, you would assign a Map window's ID to i_mapid, ' and assign a layer number to i_layernum. b_morelabels = LabelFindFirst(i_mapid, i_layernum, TRUE) Do While b_morelabels obj_mytext = LabelInfo(i_mapid, i_layernum, LABEL_INFO_OBJECT) ' At this point, you could save the obj_mytext object ' in a permanent table; or you could query it by ' calling ObjectInfo( ) or ObjectGeography( ). b_morelabels = LabelFindNext(i_mapid, i_layernum) Loop Voir également Fonction LabelFindByID( ), Fonction LabelFindFirst( ), Fonction LabelFindNext( ) Fonction LabelOverrideInfo( ) Renvoie des informations sur un remplacement d'étiquette spécifique. Syntaxe LabelOverrideInfo ( window_id, layer_number, labeloverride_index, attribute ) Référence 387 Fonction LabelOverrideInfo( ) window_id est l'identifiant de fenêtre entier d'une fenêtre Carte. layer_numbercorrespond au numéro d'une couche de la fenêtre Carte active (1 pour la couche supérieure, par exemple). Pour déterminer le nombre de couches d'une fenêtre Carte, appelez la fonction MapperInfo( ) . labeloverride_index est un index d'entier (à base 1) pour la définition de remplacement dans la couche. Chaque remplacement d'étiquette est associé à un seuil de zoom et classé par ordre croissant selon la valeur du seuil de zoom (index 1). attribute est un code qui indique le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous. Valeur renvoyée La valeur renvoyée varie en fonction du paramètre attribute. Description La section Fonction LabelOverrideInfo( ) renvoie les informations de l'étiquette pour un remplacement spécifique dans une couche de fenêtre Carte existante. layer_number doit être une couche valide (1 est la couche de la table supérieure, etc.). Le paramètre attribute doit être l'un des codes répertoriés dans le tableau suivant. Les codes sont définis dans MAPBASIC.DEF. Code attribute ID Valeur renvoyée par LabelOverrideInfo( ) LBL_OVR_INFO_NAME 1 Nom du remplacement des paramètres d'étiquetage LBL_OVR_INFO_VISIBILITY 2 Valeur d'entier court indiquant si le remplacement des paramètres d'étiquetage est visible. La valeur renvoyée est l'une des valeurs suivantes : • LBL_OVR_INFO_VIS_OFF (0) Le remplacement des paramètres d'étiquetage est désactivé/off, jamais visible. • LBL_OVR_INFO_VIS_ON (1) Le remplacement des paramètres d'étiquetage est actuellement visible sur la carte. • LBL_OVR_INFO_VIS_OFF_ZOOM (2) Le remplacement des paramètres d'étiquetage est actuellement invisible car il ne figure pas dans le seuil de zoom de la carte. LBL_OVR_INFO_ZOOM_MIN 388 3 Valeur à virgule flottante indiquant le zoom minimal (dans les unités de distance sélectionnées dans MapBasic) utilisé pour l'affichage du remplacement des paramètres d'étiquetage. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Code attribute ID Valeur renvoyée par LabelOverrideInfo( ) LBL_OVR_INFO_ZOOM_MAX 4 Valeur à virgule flottante indiquant le zoom maximal utilisé pour l'affichage du remplacement des paramètres d'étiquetage. LBL_OVR_INFO_EXPR 5 Valeur de chaîne : expression utilisée dans les étiquettes. LBL_OVR_INFO_LT 6 Valeur d'entier court qui indique le type de trait (le cas échéant) reliant une étiquette à son emplacement d'origine une fois l'étiquette déplacée. La valeur renvoyée correspond à l'une des valeurs suivantes : • LAYER_INFO_LBL_LT_NONE (0), Pas de trait • LAYER_INFO_LBL_LT_SIMPLE (1) Trait simple • LAYER_INFO_LBL_LT_ARROW (2), Trait avec une flèche LBL_OVR_INFO_FONT 7 Style Font utilisé pour les étiquettes. LBL_OVR_INFO_PARALLEL 8 Valeur logique : TRUE si la couche est configurée pour des étiquettes parallèles. LBL_OVR_INFO_POS 9 Valeur d'entier court indiquant l'emplacement de l'étiquette. La valeur renvoyée correspond à l'une des valeurs suivantes (T = haut, B = bas, C = centre, R = droite, L = gauche) : • • • • • • • • • LAYER_INFO_LBL_POS_CC (0) LAYER_INFO_LBL_POS_TL (1) LAYER_INFO_LBL_POS_TC (2) LAYER_INFO_LBL_POS_TR (3) LAYER_INFO_LBL_POS_CL (4) LAYER_INFO_LBL_POS_CR (5) LAYER_INFO_LBL_POS_BL (6) LAYER_INFO_LBL_POS_BC (7) LAYER_INFO_LBL_POS_BR (8) LBL_OVR_INFO_OVERLAP 10 Valeur logique . TRUE si les étiquettes se chevauchant sont autorisées. LBL_OVR_INFO_DUPLICATES 11 Valeur logique : TRUE si les étiquettes en double sont autorisées. Référence 389 Fonction LabelOverrideInfo( ) Code attribute ID Valeur renvoyée par LabelOverrideInfo( ) LBL_OVR_INFO_OFFSET 12 Valeur d'entier court comprise entre 0 et 50, définissant le décalage des étiquettes par rapport aux centroïdes des objets. La valeur de décalage représente une distance en points. LBL_OVR_INFO_MAX 13 Valeur entière indiquant le nombre maximal d'étiquettes autorisées pour ce remplacement des paramètres d'étiquetage. Si aucune valeur maximale n'a été définie, la valeur renvoyée est 2 147 483 647. LBL_OVR_INFO_PARTIALSEGS 14 Valeur logique : TRUE si la case Objets partiellement visibles est cochée pour cette couche. LBL_OVR_INFO_ORIENTATION 15 Renvoie la valeur d'entier court indiquant le paramètre d'orientation des étiquettes automatiques de la couche. La valeur renvoyée est l'une des valeurs suivantes : • LAYER_INFO_LABEL_ORIENT_HORIZONTAL L'angle des étiquettes est nul. • LAYER_INFO_LABEL_ORIENT_PARALLEL Les étiquettes sont inclinées. • LAYER_INFO_LABEL_ORIENT_CURVED Les étiquettes sont alignées. Si la valeur LBL_OVR_LABEL_ORIENT_PARALLEL est renvoyée, la fonction LAYER_INFO_INFO_PARALLEL renvoie TRUE. LBL_OVR_INFO_ALPHA 16 Valeur d'entier court représentant le facteur alpha pour les étiquettes de la couche définie. • 0 = totalement transparent. • 255 = totalement opaque. Pour définir la translucidité ou le facteur alpha d'une couche, utilisez la clause Label de l'instruction Set Map (reportez-vous à la section Gestion des propriétés de chaque étiquette). 390 LBL_OVR_INFO_AUTODISPLAY 17 Valeur logique : TRUE si ce remplacement des paramètres d'étiquetage est configuré pour afficher les étiquettes automatiquement. LBL_OVR_INFO_POS_RETRY 18 Valeur logique : TRUE si l'étiquette en chevauche d'autres ; positionnez les étiquettes MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Code attribute ID Valeur renvoyée par LabelOverrideInfo( ) à différents endroits jusqu'à ce qu'il n'y ait plus de chevauchement ou de positions possibles. LBL_OVR_INFO_LINE_PEN 19 Style de ligne utilisé pour l'affichage de la ligne d'étiquette. LBL_OVR_INFO_PERCENT_OVER 20 Valeur d'entier court, pourcentage maximal de dépassement de l'étiquette alignée sur la polyligne. LBL_OVR_INFO_AUTO_POSITION 21 Valeur logique : TRUE si l'option d'étiquetage de région avancé de remplacement des paramètres d'étiquetage est activée ou désactivée. LBL_OVR_INFO_AUTO_SIZES 22 Valeur entière : indique le nombre de tailles de police qui peuvent être utilisées lorsque vous tentez d'insérer les étiquettes dans des régions lors du remplacement des paramètres d'étiquetage. Le nombre de polices peut varier de 1 à 10. Une valeur 0 (zéro) indique que la valeur par défaut est choisie, pour que MapInfo Professional définisse le nombre de polices à utiliser. LBL_OVR_INFO_SUPPRESS_IF_NO_FIT 23 Valeur logique : TRUE si l'option d'étiquetage est On. Si, après l'application d'incréments descendants de la taille de police facultative, l'étiquette est encore plus grande que la région, alors l'étiquette n'est pas dessinée. LBL_OVR_INFO_AUTO_SIZE_STEP 24 Valeur entière : définit le pourcentage global de l'incrément de taille de police utilisé pour redimensionner automatiquement la police des étiquettes pour adapter une étiquette lors du remplacement des paramètres d'étiquetage. Si la taille de la police originale est de 24 pts et que l'incrément correspond à 66, la police la plus petite sera donc 66 % plus petite que 24 pts (la plus petite police est de 8 pts). LBL_OVR_INFO_CURVED_BEST_POSITION 25 Valeur logique : indique si le positionnement automatique des étiquettes alignées est activé ou désactivé. LBL_OVR_INFO_CURVED_FALLBACK Valeur logique : indique si l'option de tolérance de création d'une étiquette pivotée est activée ou désactivée. Référence 26 391 Fonction LayerControlInfo( ) Code attribute ID Valeur renvoyée par LabelOverrideInfo( ) LBL_OVR_INFO_USE_ABBREVIATION 27 Valeur logique : indique si l'utilisation des abréviations est activée ou désactivée. LBL_OVR_INFO_ABBREVIATION_EXPR 28 Renvoie l'expression de champ utilisée pour les étiquettes abrégées. LBL_OVR_INFO_AUTO_CALLOUT 29 Valeur logique : TRUE si l'option d'étiquetage de région avancé du rendu de renvoi du remplacement des paramètres d'étiquetage est activée. Exemple LabelOverrideInfo(nMID, nLayer, nOverride, LBL_OVR_INFO_ORIENTATION) Voir également Fonction StyleOverrideInfo( ), Fonction LayerStyleInfo( ), Instruction Set Map, Fonction LayerInfo( ) Fonction LayerControlInfo( ) Objectif Renvoie des informations sur la fenêtre Contrôle des couches. Syntaxe LayerControlInfo( attribute ) attribute est un code qui indique le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous. Description Le paramètre attribute est une valeur figurant dans la table ci-dessous. Les codes figurant dans la colonne de gauche sont définis dans MAPBASIC.DEF. Code attribute ID TableInfo( ) renvoie LC_INFO_SEL_COUNT 1 Résultat sous forme d'entier court indiquant le nombre d'éléments sélectionnés. Exemple LayerControlInfo(LC_INFO_SEL_COUNT) Voir également Fonction LayerControlSelectionInfo( ) 392 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction LayerControlSelectionInfo( ) Objectif Renvoie des informations sur l'élément sélectionné dans la fenêtre Contrôle des couches. Syntaxe LayerControlSelectionInfo( selection_index, attribute ) selection_id est l'index d'un élément sélectionné dans le contrôle des couches. attribute est un code qui indique le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous. Description Le paramètre attribute peut être n'importe quelle valeur qui figure dans le tableau ci-dessous. Les codes figurant dans la colonne de gauche sont définis dans MAPBASIC.DEF. Code attribute ID TableInfo( ) renvoie LC_SEL_INFO_NAME 1 Résultat sous forme de chaîne représentant le nom de l'élément sélectionné. LC_SEL_INFO_TYPE 2 Résultat sous forme d'entier court qui indique le type d'élément sélectionné. La valeur renvoyée est l'une des valeurs suivantes : • • • • • LC_SEL_INFO_TYPE_MAP (0) LC_SEL_INFO_TYPE_LAYER (1) LC_SEL_INFO_TYPE_GROUPLAYER (2) LC_SEL_INFO_TYPE_STYLE_OVR (3) LC_SEL_INFO_TYPE_LABEL_OVR (4) LC_SEL_INFO_MAPWIN_ID 3 Valeur entière qui représente l'identifiant de la fenêtre de la carte associée à l'élément sélectionné. LC_SEL_INFO_LAYER_ID 4 Valeur d'entier court qui indique l'identifiant de la couche associée à l'élément sélectionné. Si vous interrogez cette valeur alors qu'un élément est sélectionné, la valeur renvoyée est -1. LC_SEL_INFO_OVR_ID 5 Valeur d'entier court qui indique l'index du remplacement associé à l'élément sélectionné. Si vous interrogez cette valeur alors qu'un élément de carte, de couche ou de groupe de couches est sélectionné, la valeur renvoyée est -1. Exemple LayerControlSelectionInfo(layer_number, LC_SEL_INFO_NAME) Référence 393 Fonction LayerInfo( ) Voir également Fonction LayerControlInfo( ) Fonction LayerInfo( ) Objectif Renvoie des informations sur une couche d'une fenêtre Carte. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LayerInfo( window_id, layer_number, attribute ) window_id est l'identifiant de fenêtre entier d'une fenêtre Carte. layer_number correspond au numéro d'une couche de la fenêtre Carte active (1 pour la couche supérieure, par exemple). Pour déterminer le nombre de couches d'une fenêtre Carte, appelez la fonction MapperInfo( ). attribute est un code qui indique le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous. Valeur renvoyée La valeur renvoyée varie en fonction du paramètre attribute. Restrictions Un grand nombre des paramètres sur lesquels vous pouvez effectuer une requête à l'aide de la fonction LayerInfo( ) s'appliquent uniquement aux couches de carte conventionnelles (par opposition aux couches de carte Dessin, aux couches de carte thématiques et aux couches de carte représentant des tables d'images raster). Reportez-vous à l'exemple ci-dessous. Description La fonction LayerInfo( ) renvoie des informations sur la couche d'une fenêtre Carte existante. layer_number doit être une couche valide (1 est la couche de la table supérieure, etc.). Le paramètre attribute doit être l'un des codes répertoriés dans le tableau suivant. Les codes sont définis dans MAPBASIC.DEF. À ce niveau, vous pouvez également effectuer des requêtes sur les options de liaison dynamique à l'aide des attributs LAYER_HOTLINK_*. 394 Code attribute ID Valeur renvoyée par LayerInfo( ) : LAYER_INFO_NAME 1 Chaîne indiquant le nom de la table associée à cette couche de carte. Si la couche indiquée est la couche Dessin de la carte, la chaîne correspond à un nom de table tel que « Cosmetic1 ». Ce nom de table peut être utilisé avec d'autres instructions (telle, par exemple, l'instruction Select). MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Code attribute ID Valeur renvoyée par LayerInfo( ) : LAYER_INFO_EDITABLE 2 Valeur logique, TRUE si la couche peut être modifiée. LAYER_INFO_SELECTABLE 3 Valeur logique, TRUE si la couche peut être sélectionnée. LAYER_INFO_ZOOM_LAYERED 4 Valeur logique, TRUE si les seuils de visibilité sont activés. LAYER_INFO_ZOOM_MIN 5 Valeur à virgule flottante indiquant le zoom minimal (dans les unités de distance sélectionnées dans MapBasic) utilisé pour l'affichage de la couche. (Pour définir les unités de distance de MapBasic, utilisez l'instruction Set Distance Units.) LAYER_INFO_ZOOM_MAX 6 Valeur à virgule flottante indiquant la valeur de zoom maximale utilisée pour l'affichage de la couche. LAYER_INFO_COSMETIC 7 Logique, TRUE s'il s'agit de la couche Dessin. LAYER_INFO_PATH 8 Valeur de chaîne représentant le chemin d'accès complet au répertoire de la table associée à la couche de carte. LAYER_INFO_DISPLAY 9 Entier court indiquant si et comment cette couche est affichée. La valeur renvoyée est l'une des valeurs suivantes : • LAYER_INFO_DISPLAY_OFF (0) La couche n'est pas affichée. • LAYER_INFO_DISPLAY_GRAPHIC (1) Les objets de cette couche sont affichés conformément à leur style par défaut, c.-à-d. le style enregistré dans la table. • LAYER_INFO_DISPLAY_GLOBAL (2) Les objets de cette couche sont affichés conformément à un style général, défini dans la boîte de dialogue Contrôle des couches. • LAYER_INFO_DISPLAY_VALUE (3) Les objets de cette couche sont affichés sous forme d'analyse thématique. LAYER_INFO_OVR_LINE Référence 10 Style Pen utilisé pour l'affichage des objets linéaires. Si l'ensemble de base des propriétés de la couche inclut un style superposé, la ligne 395 Fonction LayerInfo( ) Code attribute ID Valeur renvoyée par LayerInfo( ) : renvoyée est la première instance du style superposé. LAYER_INFO_OVR_PEN 11 Style Pen utilisé pour l'affichage des bordures des objets remplis. Si l'ensemble de base des propriétés de la couche inclut un style superposé, la ligne renvoyée est la première instance du style superposé. LAYER_INFO_OVR_BRUSH 12 Style Brush utilisé pour l'affichage des objets remplis. Si l'ensemble de base des propriétés de la couche inclut un style superposé, le style renvoyé est la première instance du style superposé. LAYER_INFO_OVR_SYMBOL 13 Style Symbol utilisé pour l'affichage des objets point. Si l'ensemble de base des propriétés de la couche inclut un style superposé, le symbole renvoyé est la première instance du style superposé. LAYER_INFO_OVR_FONT 14 Style Font utilisé pour l'affichage des objets texte. Si l'ensemble de base des propriétés de la couche inclut un style superposé, la police renvoyée est la première instance du style superposé. LAYER_INFO_LBL_EXPR 15 Valeur de chaîne : expression utilisée dans les étiquettes. LAYER_INFO_LBL_LT 16 Valeur d'entier court qui indique le type de trait (le cas échéant) reliant une étiquette à son emplacement d'origine une fois l'étiquette déplacée. La valeur renvoyée correspond à l'une des valeurs suivantes : • LAYER_INFO_LBL_LT_NONE (0), Pas de trait • LAYER_INFO_LBL_LT_SIMPLE (1) Trait simple • LAYER_INFO_LBL_LT_ARROW (2), Trait avec une flèche 396 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Code attribute ID Valeur renvoyée par LayerInfo( ) : LAYER_INFO_LBL_CURFONT 17 Pour les applications compilées à l'aide de MapBasic 3.x, cette requête renvoie les valeurs suivantes : Valeur logique : TRUE si la couche est configurée pour utiliser la police sélectionnée ou FALSE si la couche est configurée pour utiliser la police personnalisée (voir LAYER_INFO_LBL_FONT). Pour les applications compilées à l'aide de MapBasic 4.0 ou version ultérieure, cette requête renvoie toujours FALSE. LAYER_INFO_LBL_FONT 18 Style Font utilisé pour les étiquettes. LAYER_INFO_LBL_PARALLEL 19 Valeur logique : TRUE si la couche est configurée pour des étiquettes parallèles. LAYER_INFO_LBL_POS 20 Valeur d'entier court indiquant l'emplacement de l'étiquette. La valeur renvoyée correspond à l'une des valeurs suivantes (T = haut, B = bas, C = centre, R = droite, L = gauche) : • • • • • • • • • LAYER_INFO_LBL_POS_TL (1) LAYER_INFO_LBL_POS_TC (2) LAYER_INFO_LBL_POS_TR (3) LAYER_INFO_LBL_POS_CL (4) LAYER_INFO_LBL_POS_CC (0) LAYER_INFO_LBL_POS_CR (5) LAYER_INFO_LBL_POS_BL (6) LAYER_INFO_LBL_POS_BC (7) LAYER_INFO_LBL_POS_BR (8) LAYER_INFO_ARROWS 21 Valeur logique : TRUE si la couche affiche des flèches de direction sur les objets linéaires. LAYER_INFO_NODES 22 Valeur logique : TRUE si la couche affiche des nœuds d'objets. LAYER_INFO_CENTROIDS 23 Valeur logique : TRUE si la couche affiche des centroïdes d'objets. LAYER_INFO_TYPE 24 Valeur d'entier court indiquant le type de fichier de cette couche : • LAYER_INFO_TYPE_NORMAL (0) Pour une couche normale Référence 397 Fonction LayerInfo( ) Code attribute ID Valeur renvoyée par LayerInfo( ) : • LAYER_INFO_TYPE_COSMETIC (1) Pour la couche Dessin • LAYER_INFO_TYPE_IMAGE (2) Pour une couche d'image raster • LAYER_INFO_TYPE_THEMATIC (3) Pour une couche thématique • LAYER_INFO_TYPE_GRID (4) Pour une couche d'image de grille • LAYER_INFO_TYPE_WMS (5) Pour une couche d'un serveur WMS (Web Map Service) • LAYER_INFO_TYPE_TILESERVER (6) Pour une couche provenant d'un serveur d'images tuilées LAYER_INFO_LBL_VISIBILITY 25 Valeur d'entier court indiquant si les étiquettes sont visibles. Reportez-vous à la clause Visibility de l'instruction Set Map. La valeur renvoyée est l'une des valeurs suivantes : • LAYER_INFO_LBL_VIS_ON (3) Étiquettes toujours visibles • LAYER_INFO_LBL_VIS_OFF (1) Étiquettes jamais visibles • LAYER_INFO_LBL_VIS_ZOOM (2) Étiquettes visibles lorsqu'elles se trouvent dans le seuil de zoom 398 LAYER_INFO_LBL_ZOOM_MIN 26 Valeur à virgule flottante indiquant la distance de zoom minimale pour les étiquettes de cette couche. LAYER_INFO_LBL_ZOOM_MAX 27 Valeur à virgule flottante indiquant la distance de zoom maximale pour les étiquettes de cette couche. LAYER_INFO_LBL_AUTODISPLAY 28 Valeur logique : TRUE si cette couche est configurée pour afficher les étiquettes automatiquement. Reportez-vous à la clause Auto de l'instruction Set Map. LAYER_INFO_LBL_OVERLAP 29 Valeur logique . TRUE si les étiquettes se chevauchant sont autorisées. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Code attribute ID Valeur renvoyée par LayerInfo( ) : LAYER_INFO_LBL_DUPLICATES 30 Valeur logique : TRUE si les étiquettes en double sont autorisées. LAYER_INFO_LBL_OFFSET 31 Valeur d'entier court comprise entre 0 et 50, définissant le décalage des étiquettes par rapport aux centroïdes des objets. La valeur de décalage représente une distance en points. LAYER_INFO_LBL_MAX 32 Valeur entière indiquant le nombre maximal d'étiquettes autorisées pour cette couche. Si aucune valeur maximale n'a été définie, la valeur renvoyée est 2 147 483 647. LAYER_INFO_LBL_PARTIALSEGS 33 Valeur logique : TRUE si la case Objets partiellement visibles est cochée pour cette couche. LAYER_INFO_HOTLINK_EXPR 34 Renvoie l'expression de nom de fichier de la liaison dynamique de la couche. Peut renvoyer une chaîne vide (""). LAYER_INFO_HOTLINK_MODE 35 Renvoie le mode de liaison dynamique de la couche, l'une des valeurs prédéfinies suivantes : • HOTLINK_MODE_LABEL (0) default • HOTLINK_MODE_OBJ (1) • HOTLINK_MODE_BOTH (2) LAYER_INFO_HOTLINK_RELATIVE 36 Renvoie TRUE si l'option de chemin relatif est activée et FALSE dans le cas contraire. FALSE est la valeur par défaut. LAYER_INFO_HOTLINK_COUNT 37 Vous permet d'effectuer une requête sur le nombre de définitions de liaison dynamique contenues dans une couche. LAYER_INFO_LBL_ORIENTATION* 38 Valeur d'entier court indiquant le paramètre d'orientation des étiquettes automatiques de la couche. La valeur renvoyée est l'une des valeurs suivantes : • LAYER_INFO_LABEL_ORIENT_HORIZONTAL L'angle des étiquettes est nul. • LAYER_INFO_LABEL_ORIENT_PARALLEL Les étiquettes sont inclinées. • LAYER_INFO_LABEL_ORIENT_CURVED Les étiquettes sont alignées. Référence 399 Fonction LayerInfo( ) Code attribute ID Valeur renvoyée par LayerInfo( ) : Si la valeur LBL_OVR_LABEL_ORIENT_PARALLEL est renvoyée, la fonction LAYER_INFO_INFO_PARALLEL renvoie TRUE. LAYER_INFO_LAYER_ALPHA 39 Valeur d'entier court représentant le facteur alpha pour la couche définie. • 0 = totalement transparent. • 255 = totalement opaque. Pour définir la translucidité ou le facteur alpha d'une couche, utilisez l'instruction Set Map. LAYER_INFO_LAYER_TRANSLUCENCY 40 Valeur d'entier court représentant le pourcentage de translucidité pour la couche définie. • 100 = totalement transparent. • 0 = totalement opaque. Pour définir la translucidité ou le facteur alpha d'une couche, utilisez l'instruction Set Map. LAYER_INFO_LABEL_ALPHA 41 Valeur d'entier court représentant le facteur alpha pour les étiquettes de la couche définie. • 0 = totalement transparent. • 255 = totalement opaque. Pour définir la translucidité ou le facteur alpha d'une couche, utilisez la clause Label de l'instruction Set Map. 400 LAYER_INFO_LAYERLIST_ID 42 Renvoie l'ID numérique global de la couche dans la liste de couches actuelle. Si, par exemple, une couche se trouve dans le premier groupe de la liste des couches de la carte, en partant de la fin, son ID de groupe de couches sera 1. Par contre, s'il s'agit de la quatrième couche de la liste, son ID de liste de couches sera 4. Cet ID peut être utilisé avec la fonction LayerListInfo( ). LAYER_INFO_PARENT_GROUP_ID 43 Renvoie l'identifiant de groupe de couches du groupe contenant cette couche. Renvoie 0 si la couche se trouve dans la liste de niveau supérieur. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Code attribute ID Valeur renvoyée par LayerInfo( ) : LAYER_INFO_OVR_STYLE_COUNT 44 Valeur d'entier court indiquant le nombre de remplacements du style d'affichage. LAYER_INFO_OVR_LBL_COUNT 45 Valeur d'entier court indiquant le nombre de remplacements des paramètres d'étiquetage. LAYER_INFO_OVR_STYLE_CURRENT 46 Valeur d'entier court indiquant l'index de remplacement de style d'affichage dans le seuil de zoom actuel ; 0 signifie qu'il n'y a pas de remplacement. LAYER_INFO_OVR_LBL_CURRENT 47 Valeur d'entier court indiquant l'index de remplacement des paramètres d'étiquetage dans le seuil de zoom actuel ; 0 signifie qu'il n'y a pas de remplacement. LAYER_INFO_OVR_LINE_COUNT 48 Valeur d'entier court indiquant le nombre de styles de ligne définis en vue de l'affichage des objets linéaires pour l'ensemble de base des propriétés de la couche. LAYER_INFO_OVR_PEN_COUNT 49 Valeur d'entier court indiquant le nombre de styles de ligne définis en vue de l'affichage des bordures des objets remplis pour l'ensemble de base des propriétés de la couche. LAYER_INFO_OVR_BRUSH_COUNT 50 Valeur d'entier court indiquant le nombre de styles de trame définis en vue de l'affichage des objets remplis pour l'ensemble de base des propriétés de la couche. LAYER_INFO_OVR_SYMBOL_COUNT 51 Valeur d'entier court indiquant le nombre de styles de symbole définis en vue de l'affichage des objets point pour l'ensemble de base des propriétés de la couche. LAYER_INFO_OVR_FONT_COUNT 52 Valeur d'entier court indiquant le nombre de styles de polices définis en vue de l'affichage des objets texte pour l'ensemble de base des propriétés de la couche. Ceci renvoie toujours 1 car le style de police n'est pas pris en charge par les styles superposés. LAYER_INFO_TILE_SERVER_LEVEL 53 Valeur d'entier court représentant le niveau de serveur d'images tuilées utilisé pour afficher la couche dans la vue actuelle de la carte. -1 pour les couches de serveur d'images non tuilées. Référence 401 Fonction LayerInfo( ) 402 Code attribute ID Valeur renvoyée par LayerInfo( ) : LAYER_INFO_LBL_AUTO_POSITION 54 Valeur logique : indique si l'option d'étiquetage de région avancé de la couche est activée ou désactivée. LAYER_INFO_LBL_AUTO_SIZES 55 Valeur logique : définit le nombre de tailles de polices qui peuvent être utilisées lors d'une tentative d'ajustement des étiquettes dans les régions. Le nombre de polices peut varier de 1 à 10. Une valeur 0 (zéro) indique que la valeur par défaut est choisie, pour que MapInfo Professional définisse le nombre de polices à utiliser. LAYER_INFO_LBL_SUPPRESS_IF_NO_FIT 56 Valeur logique : indique si cette option d'étiquetage est Activée ou Désactivée. Si, après l'application d'incréments descendants de la taille de police facultative, l'étiquette est encore plus grande que la région, alors l'étiquette n'est pas dessinée. LAYER_INFO_LBL_AUTO_SIZE_STEP 57 Valeur d'entier court : définit le pourcentage global de l'incrément de taille de police utilisé pour redimensionner automatiquement la police de l'étiquette en vue de son ajustement. Si la taille de la police originale est de 24 pts et que l'incrément correspond à 66, la police la plus petite sera donc 66 % plus petite que 24 pts (la plus petite police est de 8 pts). LAYER_INFO_LBL_CURVED_BEST_POSITION 58 Valeur logique : indique si le positionnement automatique des étiquettes alignées est activé ou désactivé. LAYER_INFO_LBL_CURVED_FALLBACK 59 Valeur logique : indique si l'option de tolérance de création d'une étiquette pivotée est activée ou désactivée. LAYER_INFO_LBL_USE_ABBREVIATION 60 Valeur logique : indique si l'utilisation des abréviations est activée ou désactivée. LAYER_INFO_ABBREVIATION_EXPR 61 Renvoie l'expression de champ utilisée pour les étiquettes abrégées. LAYER_INFO_LBL_AUTO_CALLOUT 62 Valeur logique : indique si l'option d'étiquetage de région avancé du rendu de renvoi de la couche est activée ou désactivée. LAYER_INFO_LBL_ORDER 63 Valeur d'entier court : ordre d'étiquetage de la couche. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Liaisons dynamiques À des fins de rétrocompatibilité, le jeu d'attributs original antérieur à la version 10.0 fonctionne toujours et renvoie les valeurs de la première définition de liaison dynamique de la couche. Si aucune liaison dynamique n'est définie lors de l'appel de la fonction, les valeurs suivantes sont renvoyées : LAYER_INFO_HOTLINK_EXPR chaîne vide ("") LAYER_INFO_HOTLINK_MODE : renvoie la valeur par défaut HOTLINK_MODE_LABEL LAYER_INFO_HOTLINK_RELATIVE : renvoie la valeur par défaut FALSE Exemples Un grand nombre des paramètres sur lesquels vous pouvez effectuer une requête à l'aide de la fonction LayerInfo( ) s'appliquent uniquement aux couches de carte conventionnelles (par opposition aux couches de carte Dessin, aux couches de carte thématiques et aux couches de carte représentant des tables d'images raster). Pour déterminer si une couche de carte est une couche conventionnelle, utilisez le paramètre LAYER_INFO_TYPE comme indiqué ci-dessous : i_lay_type = LayerInfo( map_id, layer_number, LAYER_INFO_TYPE) If i_lay_type = LAYER_INFO_TYPE_NORMAL Then ' ' ... then this is a "normal" layer ' End If L'exemple suivant illustre la priorité des couches. Si l'ordre de priorité des étiquettes est défini comme : Set Map Window FrontWindow() LabelPriority 5, 1, 2, 4, 3 l'exemple suivant retourne une valeur de 1, car l'ordre de dessin par défaut des étiquettes est identique à l'ordre de dessin des couches de carte (selon un processus ascendant). LayerInfo(FrontWindow(), 5, LAYER_INFO_LBL_ORDER) Voir également Fonction GroupLayerInfo, Fonction LayerListInfo( ), Fonction MapperInfo( ), Instruction Set Map Fonction LayerListInfo( ) Objectif Cette fonction énumère la liste des couches d'une carte et peut désigner à la fois des groupes de couche et des couches graphiques. Syntaxe LayerListInfo( map_window_id, numeric_counter, attribute ) map_window_id est un identifiant de fenêtre Carte. Référence 403 Fonction LayerStyleInfo( ) numeric_counter est la valeur comprise entre zéro (0) et celle de MAPPER_INFO_ALL_LAYERS. Elle indique le nombre de couches dans la fenêtre Carte, sauf la couche Dessin. Pour obtenir des détails sur MAPPER_INFO_ALL_LAYERS, reportez-vous à la section Fonction MapperInfo( ). attribute est un code qui indique le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous. Valeur renvoyée Dépend du paramètre attribute. Description Cette fonction peut être utilisée pour itérer tous les composants de la liste de couches de la carte lorsque numeric_counter est compris entre zéro (0) et la valeur de MAPPER_INFO_ALL_LAYERS. Les attributs disponibles sont les suivants : Valeur des paramètres window_id, ID attribute Description LAYERLIST_INFO_TYPE Types de couche dans la liste : 1 • LAYERLIST_INFO_TYPE_LAYER (0) • LAYERLIST_INFO_TYPE_GROUP (1) LAYERLIST_INFO_NAME 2 Renvoie une valeur de chaîne qui correspond au nom de la couche ou du groupe de couches. LAYERLIST_INFO_LAYER_ID 3 Renvoie une valeur numérique, identifiant de la couche. Utilisez cette valeur pour interroger la couche à l'aide de la fonction LayerInfo( ). LAYERLIST_INFO_GROUPLAYER_ID 4 Renvoie une valeur numérique, identifiant du groupe de couches. Utilisez cette valeur pour interroger la couche à l'aide de la fonction GroupLayerInfo. Si le type renvoie une couche graphique, utilisez LayerInfo pour en obtenir les attributs. S'il s'agit d'un groupe de couches, utilisez GroupLayerInfo pour en obtenir les attributs. Pour parcourir cette vue à plat de la liste de couches, utilisez MAPPER_INFO_ALL_LAYERS comme limite de boucle. Indiquer un identifiant de fenêtre Carte égal à zéro (0) renvoie des informations sur la couche Dessin. Voir également Fonction GroupLayerInfo, Fonction LayerInfo( ), Fonction MapperInfo( ) Fonction LayerStyleInfo( ) Renvoie des informations sur un style superposé (un style composé d'une ou plusieurs définitions de style). 404 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Syntaxe LayerStyleInfo ( window_id, layer_number, override_index, pass_index, attribute ) window_id est l'identifiant de fenêtre entier d'une fenêtre Carte. layer_numbercorrespond au numéro d'une couche de la fenêtre Carte active (1 pour la couche supérieure, par exemple). Pour déterminer le nombre de couches d'une fenêtre Carte, appelez la fonction MapperInfo( ) . override_index est un index d'entier (à base 0, où 0 représente l'ensemble de base des propriétés de la couche) ; 1 ou plus représente un remplacement de style. pass_index est un index d'entier (à base 1) où l'index correspond à une instance du style superposé. La première instance est la partie du style dessinée en premier, la deuxième instance est la partie du style dessinée en deuxième, et ainsi de suite. attribute est un code qui indique le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous. Valeur renvoyée La valeur renvoyée varie en fonction du paramètre attribute. Description La fonction LayerStyleInfo( ) renvoie des informations sur un style superposé. Un style superposé est constitué d'une ou plusieurs définitions de style. Par exemple, une ligne dessinée avec deux styles différents, une ligne fine rouge clair par dessus une ligne épaisse rouge foncé, serait décrite de la façon suivante à l'aide de la syntaxe MapBasic : Line (7,2,12582912), Line (3,2,16736352) Dans cet exemple, la ligne la plus épaisse rouge foncé est dessinée en premier. layer_number doit être une couche valide (1 est la couche de la table supérieure, etc.). Le paramètre attribute doit être l'un des codes répertoriés dans le tableau suivant. Les codes sont définis dans MAPBASIC.DEF. Code attribute ID Valeur renvoyée par LayerStyleInfo( ) STYLE_OVR _INFO_LINE 10 Style de ligne utilisé en vue de l'affichage des instances spécifiées pour les objets linéaires. STYLE_OVR _INFO_PEN 11 Style de ligne utilisé en vue de l'affichage des instances spécifiées pour les bordures des objets remplis. STYLE_OVR_INFO_BRUSH 12 Style de trame utilisé en vue de l'affichage des instances spécifiées pour les objets remplis. STYLE_OVR_INFO_SYMBOL 13 Style de symbole utilisé en vue de l'affichage des instances spécifiées pour les objets point. STYLE_OVR_INFO_FONT 14 Style de police utilisé en vue de l'affichage des instances spécifiées pour les objets texte. Référence 405 Instruction Layout Exemple LayerStyleInfo(nMID, nLayer, nOverride, nPass, STYLE_OVR_INFO_PEN) Voir également Fonction StyleOverrideInfo( ), Fonction LabelOverrideInfo( ), Instruction Set Map, Fonction LayerInfo( ) Instruction Layout Objectif Ouvre une nouvelle fenêtre Mise en page. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Layout [ Position ( x, y ) [ Units paperunits ] ] [ Width window_width [ Units paperunits ] ] [ Height window_height [ Units paperunits ] ] [ { Min | Max } ] paperunits est une chaîne qui représente le nom d'une unité papier (par exemple, « in » ou « mm »). x, y définit l'emplacement du coin supérieur gauche de la mise en page, en unités papier, où 0,0 représente le coin supérieur gauche de la fenêtre MapInfo Professional. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. window_width et window_height définissent la taille de la fenêtre, en unités papier. Description L'instruction Layout ouvre une nouvelle fenêtre Mise en page. Si l'instruction inclut le mot-clé Min facultatif, la fenêtre est réduite avant d'être affichée. Si l'instruction inclut le mot-clé Max facultatif, la fenêtre est agrandie, occupant tout l'espace de l'écran de MapInfo Professional. Les clauses Width et Height déterminent la taille de la fenêtre Mise en page, pas la taille de la mise en page même. La taille de la mise en page est déterminée par la taille du papier en cours d'utilisation et le nombre de pages incluses dans la mise en page. Pour plus d'informations sur la définition du nombre de pages d'une mise en page, reportez-vous à la section Instruction Set Layout. MapInfo Professional attribue un nom de table masqué particulier à chaque fenêtre Mise en page. La première fenêtre Mise en page ouverte est appelée Layout1, la suivante est appelée Layout2, etc. Le programme MapBasic peut créer, sélectionner ou modifier les objets d'une fenêtre Mise en page en exécutant des instructions faisant référence à ces noms de table. Par exemple, l'instruction suivante sélectionne tous les objets d'une fenêtre Mise en page : Select * From Layout1 406 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exemple L'exemple suivant crée une fenêtre Mise en page de 2 pouces de large et de 4 pouces de haut, placée dans le coin supérieur gauche du document MapInfo Professional. Layout Position (0, 0) Width 2 Height 4 Voir également Instruction Open Window, Instruction Set Layout Fonction LCase$( ) Objectif Renvoie l'équivalent en minuscules d'une chaîne. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LCase$( string_expr ) string_expr est une expression de type chaîne. Valeur renvoyée Chaîne Description La fonction LCase$( ) renvoie la chaîne qui est l'équivalent en minuscules de l'expression de chaîne string_expr. La conversion de majuscules en minuscules n'affecte que les caractères alphabétiques (A à Z). Les caractères numériques et les signes de ponctuation ne sont pas concernés. Ainsi, l'appel de fonction : LCase$( "A#12a" ) renvoie la chaîne « a#12a ». Exemple Dim regular, lower_case As String regular = "Los Angeles" lower_case = LCase$(regular) ' ' Now, lower_case contains the value "los angeles" ' Voir également Fonction Proper$( ), Fonction UCase$( ) Référence 407 Fonction Left$( ) Fonction Left$( ) Objectif Renvoie une chaîne, complète ou partielle, en commençant par l'extrémité gauche de la chaîne. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Left$( string_expr, num_expr ) string_expr est une expression de type chaîne. num_expr est une expression numérique supérieure ou égale à zéro. Valeur renvoyée Chaîne Description La fonction Left$( ) renvoie une chaîne composée des caractères num_expr situés à gauche de l'expression de chaîne string_expr. Le paramètre num_expr doit être une valeur entière, supérieure ou égale à zéro. Si num_expr est une valeur fractionnelle, MapBasic arrondit à l'entier le plus proche. Si num_expr est égal à zéro, Left$( ) renvoie une chaîne vide. Si le paramètre num_expr est plus élevé que le nombre de caractères de la chaîne string_expr, Left$( ) renvoie une copie de toute la chaîne string_expr. Exemple Dim whole, partial As String whole = "Afghanistan" partial = Left$(whole, 6) ' at this point, partial contains the string: "Afghan" Voir également Fonction Mid$( ), Fonction Right$( ) Fonction LegendFrameInfo( ) Objectif Renvoie des informations sur un cadre de légende. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LegendFrameInfo( window_id, frame_id, attribute ) window_id est un numéro qui définit la fenêtre Légende sur laquelle vous souhaitez effectuer une requête. 408 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z frame_id est un numéro qui définit le cadre de la fenêtre Légende sur laquelle porte votre requête. Les cadres sont numérotés de 1 à n, où n correspond au nombre de cadres de la légende. attribute est un code d'entier qui indique le type d'informations à renvoyer. Valeur renvoyée Dépend du paramètre attribute. Codes attribute ID Valeur renvoyée par LegendFrameInfo( ) : FRAME_INFO_TYPE 1 Renvoie l'une des constantes prédéfinies suivantes, qui indiquent le type de cadre : • FRAME_TYPE_STYLE (1) • FRAME_TYPE_THEME (2) FRAME_INFO_MAP_LAYER_ID 2 Renvoie l'identifiant de la couche à laquelle le cadre correspond. FRAME_INFO_REFRESHABLE 3 Renvoie TRUE si le cadre a été créé sans le mot-clé Norefresh. Renvoie toujours TRUE pour les cadres thématiques. FRAME_INFO_POS_X 4 Renvoie la distance entre le coin supérieur gauche du cadre et le bord gauche de la zone de légende (en unités papier). FRAME_INFO_POS_Y 5 Renvoie la distance entre le coin supérieur gauche du cadre et le bord supérieur de la zone de légende (en unités papier). FRAME_INFO_WIDTH 6 Renvoie la largeur du cadre (en unités papier). Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. FRAME_INFO_HEIGHT 7 Renvoie la hauteur du cadre (en unités papier). FRAME_INFO_TITLE 8 Renvoie le titre d'un cadre de style ou d'un cadre thématique. FRAME_INFO_TITLE_FONT 9 Renvoie la police du titre d'un cadre de légende. Si le cadre ne porte pas de titre, la valeur renvoyée est la police de titre par défaut. FRAME_INFO_SUBTITLE 10 Renvoie le sous-titre d'un cadre de style ou d'un cadre thématique. FRAME_INFO_SUBTITLE_FONT 11 Identique à FRAME_INFO_TITLE_FONT (9) Référence 409 Fonction LegendFrameInfo( ) Codes attribute ID Valeur renvoyée par LegendFrameInfo( ) : FRAME_INFO_BORDER_PEN 12 Renvoie le stylo utilisé pour tracer la bordure dans une fenêtre Légende cartographique ou Légende thématique. La fenêtre de conception de légende ne prend pas en charge cette fonction et renvoie un style de stylo vide (invisible) : Pen (0, 1, 0). FRAME_INFO_NUM_STYLES 13 Renvoie le nombre de styles d'un cadre. FRAME_INFO_VISIBLE 14 Renvoie TRUE si le cadre est visible (les cadres thématiques peuvent être invisibles). FRAME_INFO_COLUMN 15 Renvoie le nom de la colonne d'attributs de la légende sous forme de chaîne (le cas échéant). Renvoie une chaîne vide pour un cadre thématique. FRAME_INFO_LABEL 16 Renvoie l'expression de l'étiquette sous forme de chaîne (le cas échéant). Renvoie une chaîne vide pour un cadre thématique. FRAME_INFO_COLUMNS 17 Renvoie le nombre de colonnes d'un cadre de légende. Renvoie -1 pour une fenêtre Légende cartographique. FRAME_INFO_NUM_VISIBLE_ROWS 18 Renvoie le nombre de lignes visibles dans un cadre de légende. Pour les fenêtres Légende cartographique (avant la version 11.5), renvoie -1. FRAME_INFO_LINE_SAMPLE_WIDTH 19 Renvoie la largeur d'un exemple de ligne en unités papier MapBasic. Renvoie -1 pour la fenêtre Légende cartographique. FRAME_INFO_REGION_SAMPLE_WIDTH 20 Renvoie la largeur d'un exemple de région en unités papier MapBasic. Renvoie -1 pour la fenêtre Légende cartographique. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. FRAME_INFO_REGION_SAMPLE_HEIGHT 21 Renvoie la hauteur d'un exemple de région en unités papier MapBasic. Renvoie -1 pour la fenêtre Légende cartographique. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. Voir également Fonction LegendInfo( ), Fonction LegendTextFrameInfo( ), Fonction LegendStyleInfo( ) 410 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction LegendInfo( ) Objectif Renvoie des informations sur une légende. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LegendInfo( window_id, attribute ) window_id est un numéro qui définit la fenêtre Légende sur laquelle vous souhaitez effectuer une requête. attribute est un code d'entier qui indique le type d'informations à renvoyer. Valeur renvoyée Dépend du paramètre attribute. Code attribute ID Valeur renvoyée par LegendInfo( ) : LEGEND_INFO_MAP_ID 1 Renvoie l'identifiant de la fenêtre Carte parent (il est également possible d'obtenir cette valeur en appelant la fonction WindowInfo( ) avec le code WIN_INFO_TABLE). LEGEND_INFO_ORIENTATION 2 Renvoie une valeur prédéfinie indiquant la mise en page de la légende : • ORIENTATION_PORTRAIT (1) • ORIENTATION_LANDSCAPE (2) • ORIENTATION_CUSTOM (3) LEGEND_INFO_NUM_FRAMES 3 Renvoie le nombre de cadres de la légende. LEGEND_INFO_STYLE_SAMPLE_SIZE 4 Renvoie 0 pour les exemples de légende de petite taille ou 1 pour ceux de grande taille. Renvoie -1 pour une fenêtre de conception de légende. LEGEND_INFO_LINE_SAMPLE_WIDTH 5 Renvoie la largeur d'un exemple de ligne en unités papier MapBasic. Pour une fenêtre Légende cartographique, renvoie la valeur -1. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. LEGEND_INFO_REGION_SAMPLE_WIDTH 6 Renvoie la largeur d'un exemple de région en unités papier MapBasic. Pour une fenêtre Légende cartographique, renvoie la valeur -1. Référence 411 Fonction LegendStyleInfo( ) Code attribute ID Valeur renvoyée par LegendInfo( ) : LEGEND_INFO_REGION_SAMPLE_HEIGHT 7 Renvoie la hauteur d'un exemple de région en unités papier MapBasic. Pour une fenêtre Légende cartographique, renvoie la valeur -1. LEGEND_INFO_NUM_TEXTFRAMES Renvoie le nombre de cadres de texte dans la fenêtre de conception de légende en cours. 8 Exemple dim wndLegend, wndMap as integer for i = 1 to NumWindows() If WindowInfo(WindowID(i), WIN_INFO_TYPE) = WIN_MAPPER then wndMap = WindowInfo(WindowID(i), WIN_INFO_WINDOWID) end if if WindowInfo(WindowID(i), WIN_INFO_TYPE) = WIN_LEGEND_DESIGNER then wndLegend = WindowInfo(WindowID(i), WIN_INFO_WINDOWID) end if next Cet exemple montre comment connaître l'identifiant de la fenêtre Carte utilisé pour la création de la fenêtre de conception de légende. If LegendInfo(wndLegend, LEGEND_INFO_MAP_ID) = wndMap then Print "Map ID: " + str$(MapID) + " was correct" End if Voir également Fonction LegendFrameInfo( ), Fonction LegendTextFrameInfo( ), Fonction LegendStyleInfo( ) Fonction LegendStyleInfo( ) Objectif Renvoie des informations sur un élément de style d'un cadre de légende. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LegendStyleInfo( window_id, frame_id, style_id, attribute ) window_id est un numéro qui définit la fenêtre Légende sur laquelle vous souhaitez effectuer une requête. frame_id est un numéro qui définit le cadre de la fenêtre Légende sur laquelle porte votre requête. Les cadres sont numérotés de 1 à n, où n correspond au nombre de cadres de la légende. style_id est un numéro qui définit le style du cadre sur lequel vous souhaitez effectuer une requête. Les styles sont numérotés de 1 à n, où n correspond au nombre de styles du cadre. attribute est un code d'entier qui indique le type d'informations à renvoyer. 412 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Valeur renvoyée Code attribute ID Valeurs renvoyées par LegendStyleInfo( ) : LEGEND_STYLE_INFO_TEXT 1 Renvoie le texte du style. LEGEND_STYLE_INFO_FONT 2 Renvoie la police du style. LEGEND_STYLE_INFO_OBJ 3 Renvoie l'objet du style. Les valeurs de type de légende thématique possibles sont les suivantes : • Thème de classes – rectangle, ligne ou point • • • • • LEGEND_STYLE_INFO_ROW_VISIBLE 4 Thème de barres – rectangle Thématique de coloration continue – rectangle Thème de symboles proportionnels – point Thème de densité de points – rectangle Graphique à secteurs – rectangle Indique si la ligne de style est visible ou non dans la légende. Pour les fenêtres Légende cartographique (avant la version 11.5), renvoie une valeur True. Conditions d'erreur Génère une erreur lorsque la fonction est émise pour un cadre ne disposant d'aucun style (cadre thématique). Exemple L'exemple suivant illustre la méthode d'appel de la fonction LegendStyleInfo( ) pour ne renvoyer que les informations de style des styles de cadre thématique dans la fenêtre de Conception de légende. Cet exemple suppose que la fenêtre de Conception de légende se trouve au premier plan. Il permet d'obtenir les informations de style d'un échantillon de style n° 1 d'un cadre thématique de classes n° 1. dim dim dim dim dim dim objStyle as object tBrush as Brush tPen as Pen tSymbol as Symbol tFont as Font strSampleText as string objStyle = LegendStyleInfo(FrontWindow(), 1, 1, LEGEND_STYLE_INFO_OBJ) tFont = LegendStyleInfo(FrontWindow(), 1, 1, LEGEND_STYLE_INFO_FONT) strSampleText = LegendStyleInfo(FrontWindow(), 1, 1, LEGEND_STYLE_INFO_TEXT) Do Case ObjectInfo(objStyle, OBJ_INFO_TYPE) Case OBJ_TYPE_POINT tSymbol = ObjectInfo(objStyle, OBJ_INFO_SYMBOL) Print tSymbol 'or use StyleAttr() to return specific properties of the Symbol Style, for example: StyleAttr(tSymbol, SYMBOL_FONT_NAME) Case OBJ_TYPE_LINE tPen = ObjectInfo(objStyle, OBJ_INFO_PEN) Print tPen Référence 413 Fonction LegendTextFrameInfo( ) 'or use StyleAttr() to return specific properties of the Pen\Line Style, for example: StyleAttr(tPen, PEN_COLOR) Case OBJ_TYPE_RECT tBrush = ObjectInfo(objStyle, OBJ_INFO_BRUSH) Print tBrush 'or use StyleAttr() to return specific properties of the Brush\Region Style, for example: StyleAttr(tBrush, BRUSH_FORECOLOR) Case Else Note "Unexpected Object type" End Case Print tFont 'for example: Font ("Arial",0,8,0,0) Utilisez la fonction StyleAttr() pour renvoyer des propriétés spécifiques du style de police, par exemple : StyleAttr(tFont, FONT_NAME) et imprimer le texte de la première valeur de plage thématique (de 5 700 000 à 23 700 000 par exemple). Print strSampleText Voir également Fonction StyleAttr() Fonction LegendTextFrameInfo( ) Objectif Renvoie des informations sur un cadre de texte dans la fenêtre de de conception de légende. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LegendTextFrameInfo( window_id, frame_id, attribute ) window_id est un numéro qui définit la fenêtre Légende sur laquelle vous souhaitez effectuer une requête. frame_id est un numéro qui définit le cadre de la fenêtre Légende sur laquelle porte votre requête. Les cadres sont numérotés de 1 à n, où n correspond au nombre de cadres de la légende. attribute est un code d'entier qui indique le type d'informations à renvoyer. Valeur renvoyée Dépend du paramètre attribute. 414 Codes attribute ID Valeur renvoyée par LegendTextFrameInfo( ) FRAME_INFO_POS_X 1 Renvoie la distance entre le coin supérieur gauche du cadre et le bord gauche de la zone de légende (en unités papier). FRAME_INFO_POS_Y 2 Renvoie la distance entre le coin supérieur gauche du cadre et le bord supérieur de la zone de légende (en unités papier). MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Codes attribute ID Valeur renvoyée par LegendTextFrameInfo( ) FRAME_INFO_WIDTH 3 Renvoie la largeur du cadre (en unités papier). Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. FRAME_INFO_HEIGHT 4 Renvoie la hauteur du cadre (en unités papier). Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. FRAME_INFO_TEXT 5 Renvoie le texte d'un cadre de texte. FRAME_INFO_TEXT_FONT 6 Renvoie la police du texte du cadre de texte. Voir également Fonction LegendInfo( ), Fonction LegendFrameInfo( ), Fonction LegendStyleInfo( ) Fonction Len( ) Objectif Renvoie le nombre de caractères d'une chaîne ou le nombre d'octets d'une variable. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Len( expr ) expr est une expression variable. expr ne peut pas être une variable Pen, Brush, Symbol, Font ou Alias. Valeur renvoyée Entier court Description Le comportement de la fonction Len( ) varie en fonction du type de données du paramètre expr. Si l'expression expr représente une chaîne de caractères, la fonction Len( ) renvoie le nombre de caractères de la chaîne. Si l'expression expr est une variable MapBasic, Len( ) renvoie la taille de la variable, en octets. Ainsi, si vous transmettez une variable entière, Len( ) renvoie la valeur 4 (chaque variable entière occupe 4 octets). En revanche, si vous transmettez une variable entière courte, Len( ) renvoie la valeur 2 (chaque variable entière courte occupe 2 octets). Exemple Dim name_length As SmallInt name_length = Len("Boswell") ' name_length now has the value: 7 Référence 415 Fonction LibraryServiceInfo( ) Voir également Fonction ObjectLen( ) Fonction LibraryServiceInfo( ) Objectif Renvoie des informations sur les services Bibliothèque, tels que le mode de fonctionnement actuel, la version, ou l'URL par défaut pour les services Bibliothèques. Offre également la liste des URL CSW exposées par MapInfo Manager. Syntaxe LibraryServiceInfo( attribute ) attribute est un code qui indique le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous. Description La fonction LibraryServiceInfo( ) renvoie une information sur les services Bibliothèque. Le paramètre attribute est une valeur figurant dans la table ci-dessous. Les codes figurant dans la colonne de gauche sont définis dans MAPBASIC.DEF. Code attribute ID LibraryServiceInfo( ) renvoie LIBSRVC_INFO_LIBSRVCMODE 1 Résultat entier représentant le mode de fonctionnement actuel du service Bibliothèque. LIBSRVC_INFO_LIBVERSION 2 Résultat sous forme de chaîne représentant la version du service Bibliothèque. L'URL du service Bibliothèque par défaut doit être définie avant d'appeler cette fonction. LIBSRVC_INFO_DEFURLPATH 3 Résultat sous forme de chaîne représentant l'URL par défaut du service Bibliothèque. La valeur par défaut pour l'URL de la Bibliothèque est une chaîne vide. LIBSRVC_INFO_LISTCSWURL 4 Résultat sous forme de chaîne, qui donne la liste des URL CSW exposées par le serveur MapInfo Manager sous forme de simple chaîne délimitée par un point virgule (;). Exemple L'exemple suivant montre comment utiliser cette fonction : include "mapbasic.def" declare sub main sub main dim liburlpath as string dim libversion as string liburlpath = LibraryServiceInfo(LIBSRVC_INFO_DEFURLPATH)if StringCompare(liburlpath, "") == 0 then Set LibraryServiceInfo URL "http://localhost:8080/LibraryService/LibraryService" 416 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z endif libversion = LibraryServiceInfo(LIBSRVC_INFO_LIBVERSION) end sub Voir également Instruction Set LibraryServiceInfo Fonction Like( ) Objectif Renvoie TRUE ou FALSE pour indiquer si une chaîne répond aux critères de correspondance des éléments. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Like( string, pattern_string, escape_char ) string est une expression de chaîne à tester. pattern_string est une chaîne contenant des caractères classiques ou des caractères génériques spéciaux. escape_char est une expression de chaîne définissant un caractère d'échappement. Utilisez un caractère d'échappement (« \ », par exemple) si vous devez tester la présence d'un des caractères génériques (« % » et « _ ») dans l'expression de chaîne. Si vous ne souhaitez disposer d'aucun caractère d'échappement, utilisez une chaîne vide (""). Valeur renvoyée Valeur logique (TRUE si la chaîne correspond au paramètre pattern_string). Description La fonction Like( ) met en correspondance des éléments de chaînes. Cette comparaison des chaînes respecte la casse. Pour procéder à une comparaison qui ne respecte pas la casse, utilisez l'opérateur Like. Le paramètre pattern_string peut inclure les caractères génériques suivants : _ (caractère de soulignement) correspond à un caractère. % (pourcentage) correspond à zéro caractère ou plusieurs. Pour rechercher des instances de caractères de soulignement ou de pourcentage, utilisez un paramètre escape_char, comme indiqué dans le tableau ci-dessous. Référence 417 Instruction Line Input Pour déterminer si une chaîne... Utilisez ces paramètres : commence par « South » Like( string_var, "South%", "") se termine par « America » Like( string_var, "%America", "") contient « ing » en n'importe quel point Like( string_var, "%ing%", "" ) commence par un caractère de soulignement Like( string_var, "\_%", "\") Voir également Fonction Len( ), Fonction StringCompare( ) Instruction Line Input Objectif Lit une ligne d'un fichier texte séquentiel dans une variable. Syntaxe Line Input [#] filenum, var_name filenum est une valeur entière qui indique le numéro d'un fichier ouvert. var_name est le nom d'une variable de type chaîne. Description L'instruction Line Input lit une ligne entière d'un fichier texte et stocke les résultats dans une variable de type chaîne. Le fichier texte doit déjà être ouvert en mode Input. L'instruction Line Input traite chaque ligne du fichier comme une longue chaîne. Si chaque ligne du fichier contient une liste d'expressions séparées par des virgules et que vous voulez lire chaque expression dans une variable distincte, utilisez l'instruction Input # au lieu de Line Input. Exemple Le programme ci-dessous ouvre un fichier texte existant, lit son contenu une ligne à la fois et copie le contenu du fichier dans un fichier texte distinct. Dim str As String Open File "original.txt" For Input As #1 Open File "copy.txt" For Output As #2 Do While Not EOF(1) Line Input #1, str If Not EOF(1) Then Print #2, str End If Loop Close File #1 Close File #2 418 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Instruction Input #, Instruction Open File, Instruction Print # Fonction LocateFile$( ) Objectif Renvoie le chemin d'accès à l'un des fichiers de données de l'application MapInfo. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LocateFile$( file_id ) file_id est l'une des valeurs suivantes : Valeur ID Description LOCATE_PREF_FILE 0 Fichier de préférences (MAPINFOW.PRF). LOCATE_DEF_WOR 1 Fichier de document par défaut (MAPINFOW.WOR). LOCATE_CLR_FILE 2 Fichier de couleurs (MAPINFOW.CLR). LOCATE_PEN_FILE 3 Fichier de styles de ligne (MAPINFOW.PEN). LOCATE_FNT_FILE 4 Fichier de symboles (MAPINFOW.FNT). LOCATE_ABB_FILE 5 Fichier d'abréviations (MAPINFOW.ABB). LOCATE_PRJ_FILE 6 Fichier de projection (MAPINFOW.PRJ). LOCATE_MNU_FILE 7 Fichier de menus (MAPINFOW.MNU). LOCATE_CUSTSYMB_DIR 8 Répertoire de symboles personnalisés (CUSTSYMB). LOCATE_THMTMPLT_DIR 9 Répertoire de modèles d'analyse thématique (THMTMPL). LOCATE_GRAPH_DIR 10 Répertoire de prise en charge des graphiques (GRAPHSUPPORT). LOCATE_WMS_SERVERLIST 11 Liste XML des serveurs WMS (MIWMSSERVERS.XML). LOCATE_WFS_SERVERLIST 12 Liste XML des serveurs WFS (MIWFSSERVERS.XML). LOCATE_GEOCODE_SERVERLIST 13 Liste XML des serveurs de géocodage (MIGEOCODESERVERS.XML). LOCATE_ROUTING_SERVERLIST Liste XML des serveurs de routing (MIROUTINGSERVERS.XML). 14 LOCATE_LAYOUT_TEMPLATE_DIR 15 Référence Répertoire de modèles de mise en page (LAYOUTTEMPLATE) 419 Fonction LOF( ) Valeur renvoyée Chaîne Description Cette fonction s'appuie sur l'identifiant d'un fichier de données de l'application MapInfo Professional pour renvoyer l'emplacement où MapInfo Professional a trouvé le fichier en question. MapInfo Professional installe ces fichiers sous le répertoire des données d'application de l'utilisateur. Il existe cependant plusieurs emplacements valides pour ces fichiers, notamment le répertoire du programme. Les applications MapBasic ne doivent pas déterminer l'emplacement de ces fichiers par déduction. Au contraire, la fonction LocateFile$( ) doit être utilisée. Exemple include "mapbasic.def" declare sub main sub main dim sGraphLocations as string sGraphLocations = LocateFile$(LOCATE_GRAPH_DIR) Print sGraphLocations end sub Voir également Fonction GetFolderPath$( ) Fonction LOF( ) Objectif Renvoie la longueur d'un fichier ouvert. Syntaxe LOF( filenum ) filenum est le numéro d'un fichier ouvert. Valeur renvoyée Entier Description La fonction LOF( ) renvoie la longueur d'un fichier ouvert, en octets. Le paramètre filenum représente le numéro d'un fichier ouvert. Il correspond au même numéro spécifié dans la clause As de l'Instruction Open File. Conditions d'erreur L'erreur ERR_FILEMGR_NOTOPEN (366) est générée si le fichier spécifié n'est pas ouvert. 420 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exemple Dim size As Integer Open File "import.txt" For Binary As #1 size = LOF(1) ' size now contains the # of bytes in the file Voir également Instruction Open File Fonction Log( ) Objectif Renvoie le logarithme naturel d'un nombre. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Log( num_expr ) num_expr représente une expression numérique. Valeur renvoyée Nombre à virgule flottante Description La fonction Log( ) renvoie le logarithme naturel de l'expression numérique spécifiée par le paramètre num_expr. Le logarithme naturel représente le nombre qui doit être ajouté à la valeur mathématique e pour obtenir le paramètre num_expr. e possède une valeur approximative de 2,7182818. Le logarithme est uniquement défini pour les nombres positifs. En conséquence, la fonction Log( ) génère une erreur si num_expr contient une valeur négative. Vous pouvez calculer les valeurs logarithmiques en d'autres bases (base 10, par exemple) à l'aide du logarithme naturel. Pour obtenir le logarithme en base 10 du nombre n, divisez le logarithme naturel de n ( Log( n ) ) par le logarithme naturel de 10 ( Log( 10 ) ). Exemple Dim original_val, log_val As Float original_val = 2.7182818 log_val = Log(original_val) ' log_val will now have a value of 1 (approximately), ' since E raised to the power of 1 equals ' 2.7182818 (approximately) Voir également Fonction Exp( ) Référence 421 Fonction LTrim$( ) Fonction LTrim$( ) Objectif Supprime les espaces au début d'une chaîne et renvoie les résultats. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe LTrim$( string_expr ) string_expr est une expression de type chaîne. Valeur renvoyée Chaîne Description La fonction LTrim$( ) supprime les espaces du début de la chaîne string_expr, et renvoie la chaîne résultante. Exemple Dim name As String name = " Mary Smith" name = LTrim$(name) ' name now contains the string "Mary Smith" Voir également Fonction RTrim$( ) Procédure Main Objectif Première procédure appelée lors de l'exécution d'une application. Syntaxe Declare Sub Main Sub Main statement_list End Sub statement_list est une liste d'instructions à exécuter lors de l'exécution d'une application. Description Main est un nom de procédure MapBasic ayant un objectif particulier. Si une application contient une sous-procédure appelée Main, MapInfo Professional exécute cette procédure automatiquement lors de 422 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z la première exécution d'une application. La procédure Main peut alors entreprendre des actions (par exemple, l'exécution d'une Instruction Call) afin d'entraîner l'exécution d'autres procédures. Toutefois, vous n'êtes pas obligé de déclarer explicitement la procédure Main. Au lieu de déclarer une procédure nommée Main, placez simplement une ou plusieurs instructions dans la partie supérieure de votre fichier de programme ou à proximité de celui-ci, en dehors de toute déclaration de procédure. MapBasic traite alors ce groupe d'instructions comme si elles faisaient partie d'une procédure Main. Cette procédure est également dite procédure Main « implicite » (à la différence d'une procédure Main). Exemple Un programme MapBasic peut être constitué d'une seule ligne. Par exemple, vous pouvez créer un programme MapBasic comprenant uniquement l'instruction suivante : Note "Testing, one two three." Si l'instruction ci-dessus comprend votre programme tout entier, MapBasic considère ce programme comme une procédure Main implicite. Lors de l'exécution de cette application, MapBasic exécute l'Instruction Note. Inversement, l'exemple suivant déclare de façon explicite la procédure Main ce qui entraîne les mêmes résultats (par exemple, une Instruction Note). Declare Sub Main Sub Main Note "Testing, one two three." End Sub L'exemple suivant contient une procédure Main implicite et une sous-procédure distincte appelée Talk. La procédure Main implicite appelle la procédure Talk via l'Instruction Call. Declare Sub Talk(ByVal msg As String) Call Talk("Hello") Call Talk("Goodbye") Sub Talk(ByVal msg As String) Note msg End Sub L'exemple suivant contient une procédure Main implicite et une sous-procédure distincte appelée Talk. La procédure Main appelle la procédure Talk par le biais de l'instruction Call. Declare Sub Main Declare Sub Talk(ByVal msg As String) Sub Main Call Talk("Hello") Call Talk("Goodbye") End Sub Sub Talk(ByVal msg As String) Note msg End Sub Voir également Procédure EndHandler, Procédure RemoteMsgHandler, Procédure SelChangedHandler, Instruction Sub...End Sub, Procédure ToolHandler, Procédure WinClosedHandler Référence 423 Fonction MakeBrush( ) Fonction MakeBrush( ) Objectif Renvoie une valeur Brush. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MakeBrush( pattern, forecolor, backcolor) pattern est une valeur entière comprise entre 1 et 8 ou entre 12 et 186 définissant une trame de remplissage. Pour obtenir la liste des trames, reportez-vous à la section Clause Brush. forecolor est une valeur entière qui représente la couleur RVB du premier plan de la trame. Pour plus d'informations, reportez-vous à la section Fonction RGB( ). backcolor est une valeur entière qui représente la couleur RVB du fond de la trame. Si vous souhaitez que l'arrière-plan soit transparent, indiquez -1 pour la couleur de fond et définissez une trame de 3 ou plus. Valeur renvoyée Valeur de remplissage (Brush) Description La fonction MakeBrush( ) renvoie une valeur Brush. La valeur renvoyée peut être attribuée à une variable Brush ou utilisée comme paramètre d'une instruction basée sur une valeur Brush (telle que Create Ellipse, Set Map, Set Style ou Shade). Pour plus d'informations sur les paramètres Brush, reportez-vous à la section Clause Brush. Exemple Include "mapbasic.def" Dim b_water As Brush b_water = MakeBrush(64, CYAN, BLUE) Voir également Clause Brush, Fonction CurrentBrush( ), Fonction RGB( ), Fonction StyleAttr( ) Fonction MakeCustomSymbol( ) Objectif Renvoie une valeur Symbol basée sur un fichier bitmap. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MakeCustomSymbol( filename, color, size, customstyle ) 424 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z filename correspond à une chaîne ayant jusqu'à 31 caractères, qui représente le nom d'un fichier bitmap. Le fichier doit se trouver dans le répertoire CustSymb, dans le répertoire MapInfo de l'utilisateur. color représente une valeur de couleur RVB sous forme d'entier. Pour plus de détails, reportez-vous à la section Fonction RGB( ). size correspond à une taille en points sous forme d'entier, comprise entre 1 et 48. customstyle est un code d'entier qui contrôle les attributs de couleur et de fond. Reportez-vous au tableau ci-dessous. Valeur renvoyée Symboles Description La fonction MakeCustomSymbol( ) renvoie une valeur Symbol basée sur un fichier bitmap. Pour plus d'informations sur les autres types de symboles, reportez-vous à la section Clause Symbol. Le tableau suivant indique comment l'argument style_personnalisé commande le style du symbole : Valeur customstyle Style symbole 0 Les paramètres Fond, Appliquer couleur et Afficher à la taille actuelle sont désactivés. Le symbole s'affiche dans son état par défaut à la taille en points spécifiée par le paramètre correspondant. Les pixels blancs de l'image bitmap sont transparents, ce qui permet de voir tout élément situé le symbole derrière. 1 Le paramètre Fond est activé. Les pixels blancs de l'image bitmap sont opaques. 2 Le paramètre Appliquer couleur est activé. Les pixels qui ne sont pas blancs sur l'image bitmap sont remplacés par le paramètre de couleur du symbole. 3 Les paramètres Fond et Appliquer couleur sont activés. 4 Le paramètre Afficher à la taille actuelle est activé. L'image bitmap est rendue à sa largeur et à sa hauteur d'origine en pixels. 5 Les paramètres Fond et Afficher à la taille actuelle sont activés. 7 Les paramètres Fond, Appliquer couleur et Afficher à la taille actuelle sont activés. Exemple Include "mapbasic.def" Dim sym_marker As Symbol sym_marker = MakeCustomSymbol("CAR1-64MP", BLUE, 18, 0) Voir également Fonction CurrentSymbol( ), Fonction MakeFontSymbol( ), Fonction MakeSymbol( ), Fonction StyleAttr( ), Clause Symbol Référence 425 Fonction MakeDateTime( ) Fonction MakeDateTime( ) Objectif Renvoie une valeur DateTime basée sur la date et l'heure définies. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MakeDateTime( Date, Time ) Valeur renvoyée DateTime, qui représente une valeur entière DateTime sur 9 octets : 4 octets pour la date et 5 octets pour l'heure. Les 5 octets pour l'heure comprennent 2 octets pour les millisecondes, 1 octet pour les secondes, 1 octet pour les minutes et 1 octet pour les heures. Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. dim tX as time dim dX as date dim dtX as datetime tX = 105604123 dX = 20070908 dtX = MakeDateTime(dX,tX) Print FormatDate$(GetDate(dtX)) Print FormatTime$(GetTime(dtX), "hh:mm:ss.fff tt") Voir également Fonction DateWindow( ), Instruction Set Date Window( ) Fonction MakeFont( ) Objectif Renvoie une valeur de police. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MakeFont( fontname, style, size, forecolor, backcolor ) fontname est une chaîne de texte définissant une police (Arial, par exemple). Cet argument est sensible à la casse. style est une expression entière positive : 0 = texte normal, 1 = texte en gras, etc. Pour plus d'informations, reportez-vous à la clause Font. size représente une taille en points sous forme d'entier (un ou plus). 426 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z forecolor est une valeur correspondant à la couleur RVB du texte. Reportez-vous à la section Fonction RGB( ). backcolor est une valeur correspondant à la couleur RVB du fond (ou du halo, si le paramètre de style définit un halo). Si vous souhaitez que l'arrière-plan soit transparent, indiquez -1 pour la couleur de fond. Valeur renvoyée Police Description La fonction MakeFont( ) renvoie une valeur de police. La valeur renvoyée peut être attribuée à une variable Font ou utilisée comme paramètre d'une instruction basée sur une police (telle que l'instruction Create Text ou l'instruction Set Style). Pour plus d'informations sur les paramètres de police, reportez-vous à la section Clause Font. Exemple Include "mapbasic.def" Dim big_title As Font big_title = MakeFont("Arial", 1, 20,BLACK,WHITE) Voir également Fonction CurrentFont( ), Clause Font, Fonction StyleAttr( ) Fonction MakeFontSymbol( ) Objectif Renvoie une valeur Symbol en utilisant un caractère d'une police TrueType comme symbole. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MakeFontSymbol( shape, color, size, fontname, fontstyle, rotation ) shape est une valeur d'entier court, de 31 ou plus (31 signifiant invisible), qui définit un code de caractère à partir d'une police TrueType. color représente une valeur de couleur RVB sous forme d'entier. Pour plus de détails, reportez-vous à la section Fonction RGB( ). size est une valeur d'entier court, comprise entre 1 et 48, définissant la taille en points du symbole. fontname est une chaîne qui représente le nom d'une police TrueType (WingDings, par exemple). Cet argument est sensible à la casse. fontstyle correspond à un code numérique qui contrôle les attributs de gras, de contours et autres. Voir ci-dessous. rotation est un nombre à virgule flottante qui indique l'angle de rotation du symbole en degrés. Référence 427 Fonction MakePen( ) Valeur renvoyée Symboles Description La fonction MakeFontSymbol( ) renvoie une valeur Symbol basée sur un caractère d'une police TrueType. Pour plus d'informations sur les autres types de symboles, reportez-vous à la section Clause Symbol. Le tableau suivant indique comment le paramètre fontstyle commande le style du symbole : style de police valeur Style symbole 0 Brut 1 Gras 16 Bordure (contour noir) 32 Ombré 256 Halo (contour blanc) Pour définir plusieurs attributs de style, ajoutez les valeurs de la colonne de gauche. Par exemple, pour indiquer les attributs Gras et Ombré, utilisez la valeur fontstyle 33. Les styles Bordure et Halo s'excluent mutuellement. Exemple Include "mapbasic.def" Dim sym_marker As Symbol sym_marker = MakeFontSymbol(65,RED,24,"WingDings",32,0) Voir également Fonction CurrentSymbol( ), Fonction MakeCustomSymbol( ), Fonction MakeSymbol( ), Fonction StyleAttr( ), Clause Symbol Fonction MakePen( ) Objectif Renvoie une valeur Pen. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MakePen( width, pattern, color ) width définit une épaisseur de ligne. pattern représente une trame de ligne. Pour obtenir une liste complète, reportez-vous à la clause Pen. color représente une valeur de couleur RVB. Pour plus de détails, reportez-vous à la section Fonction RGB( ). 428 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Valeur renvoyée Pen Description La fonction MakePen( ) renvoie une valeur Pen qui définit le style de ligne. La valeur renvoyée peut être attribuée à une variable Font ou utilisée comme paramètre d'une instruction basée sur une police (telle que l'instruction Create Line, l'instruction Create Pline, l'instruction Set Style ou l'instruction Set Map). Pour plus d'informations sur les paramètres de ligne, reportez-vous à la section Clause Pen clause. Exemple Include "mapbasic.def" Dim p_bus_route As Pen p_bus_route = MakePen(3, 9, RED) Voir également Fonction CurrentPen( ), Clause Pen, Fonction StyleAttr( ), Fonction RGB( ) Fonction MakeSymbol( ) Objectif Renvoie une valeur Symbol en utilisant un caractère du jeu de symboles MapInfo 3.0. Il s'agit du jeu de symboles initialement publié avec MapInfo pour Windows 3.0, conservé dans les versions suivantes de MapInfo Professional. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MakeSymbol( shape, color, size ) shape est une valeur d'entier court, de 31 ou plus (31 signifiant invisible), qui définit une forme de symbole. Le jeu de symboles standard inclut les symboles 31 à 67. Pour obtenir une liste complète, reportez-vous à la section Clause Symbol. color représente une valeur de couleur RVB sous forme d'entier. Pour plus de détails, reportez-vous à la section Fonction RGB( ). size est une valeur d'entier court, comprise entre 1 et 48, définissant la taille en points du symbole. Valeur renvoyée Symboles Description La fonction MakeSymbol( ) renvoie une valeur de symbole. La valeur renvoyée peut être attribuée à une variable Symbol ou utilisée comme paramètre d'une instruction basée sur une clause Symbol Référence 429 Instruction Map comme paramètre (telle que l'instruction Create Point, l'instruction Set Map, l'instruction Set Style ou l'instruction Shade). Pour créer un symbole à partir d'un caractère d'une police TrueType, appelez la fonction MakeFontSymbol( ). Pour créer un symbole à partir d'un fichier bitmap, appelez la fonction MakeCustomSymbol( ). Pour plus d'informations sur les paramètres de symboles, reportez-vous à la section Clause Symbol. Exemple Include "mapbasic.def" Dim sym_marker As Symbol sym_marker = MakeSymbol(44, RED, 16) Voir également Fonction CurrentSymbol( ), Fonction MakeCustomSymbol( ), Fonction MakeFontSymbol( ), Fonction StyleAttr( ), Clause Symbol Instruction Map Objectif Ouvre une nouvelle fenêtre Carte. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Map From item [ , item ... ] [ Position ( x, y ) [ Units paperunits ] ] [ Width window_width [ Units paperunits ] ] [ Height window_height [ Units paperunits ] ] [ { Min | Max } ] où item = table | [GroupLayer ("friendly_name" [ , item ...]) item est le nom d'une table ouverte ou d'un groupe de couches friendly_name fest obligatoire pour chaque groupe de couches mais ne doit pas nécessairement être unique. Les groupes de couches peuvent contenir d'autres groupes de couches et/ou tables et ils peuvent être vides (sans aucune table). paperunitsest le nom d'une unité papier (par exemple, « in »). x, y indique la position du coin supérieur gauche de la fenêtre Carte, en unités papier. Pour obtenir des détails sur les unités papier, consultez la section Instruction Set Paper Units. window_width et window_height définissent la taille de la fenêtre, en unités papier. Description L'instruction Map ouvre une nouvelle fenêtre Carte. Une fois ouverte, vous pouvez la modifier en émettant plusieurs fois l'instruction Set Map. 430 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Le mot-clé GroupLayer permet désormais de créer des groupes de couches imbriqués. Les groupes de couches sont un type de couche spécifique permettant aux utilisateurs de regrouper les couches de carte entre elles, tout comme les dossiers et les sous-dossiers permettent aux utilisateurs d'organiser les fichiers. Ils simplifient la gestion des cartes possédant de nombreuses couches. Les deux principaux avantages des groupes de couches sont les suivants : 1. Une meilleure organisation : il est plus facile de gérer les listes de couches lorsque celles-ci sont organisées en fonction de groupes explicites. 2. Une plus grande efficacité : lorsque les couches sont rassemblées en groupes, les opérations du type « désactiver toutes les couches de rues » sont simplifiées et peuvent être effectuées en quelques clics/étapes seulement. La table définie doit déjà être ouverte. La table doit également pouvoir être cartographiée. En d'autres termes, il doit être possible d'associer des objets graphiques aux enregistrements de la table. Il n'est pas nécessaire qu'elle en contienne mais sa structure doit permettre d'affecter des objets. L'instruction Map doit inclure au moins une table, que celle-ci fasse ou non partie d'un groupe de couches, car toute fenêtre Carte doit contenir au moins une couche. L'instruction Map peut également définir plusieurs noms de tables (séparés par des virgules) de manière à ouvrir une fenêtre Carte à plusieurs couches. Le premier nom de table de l'instruction Map est dessiné en dernier lorsque la fenêtre Carte est mise à jour. Ainsi, la première table de l'instruction Map correspond toujours à la carte supérieure. Généralement, les tables avec des objets point apparaissent en premier dans les instructions Map, et les tables avec des objets région (limite) sont énoncées par la suite. La taille par défaut de la fenêtre Carte obtenue correspond à environ un quart de l'écran. La position par défaut varie en fonction du nombre de fenêtres actuellement affichées à l'écran. Les clauses facultatives Position, Height et Width vous permettent de contrôler la taille et la position de la nouvelle fenêtre Carte. Les clauses Height et Width définissent la taille de la fenêtre en pouces. Notez que la clause Position de base sur le coin supérieur gauche de l'application MapInfo Professional et non sur le coin supérieur gauche de l'écran. Si l'instruction Map inclut le mot-clé Max facultatif, la nouvelle fenêtre Carte est agrandie et occupe la totalité de l'espace disponible sur l'écran pour MapInfo Professional. Inversement, si l'instruction Map inclut le mot-clé Min, la fenêtre est immédiatement réduite. Chaque fenêtre Carte peut disposer de sa propre projection. MapInfo Professional définit la projection initiale d'une fenêtre Carte en fonction de la projection native de la première table cartographiée. L'utilisateur peut modifier la projection d'une carte en sélectionnant la commande Carte > Options. Le programme MapBasic peut modifier la projection en émettant une instruction Set Map. Exemples L'exemple suivant ouvre une fenêtre Carte de 3 in (7,5 cm) de large et 2 in (5 cm) de haut, avec une marge de 1 in (2,5 cm) à partir du coin supérieur gauche de l'application MapInfo Professional. La carte possède deux couches. Open Table "world" Open Table "cust1994" As customers Map from customers, world Position (1,1) Width 3 Height 2 Référence 431 Instruction Map L'exemple suivant ouvre une fenêtre Carte possédant plusieurs groupes de couches, dont certains sont imbriqués (toutes les tables ont d'abord été ouvertes). Map From GroupLayer ( "Grid", GroupLayer ("Tropics", Tropic_Of_Capricorn, Tropic_Of_Cancer), Wgrid15 ), GroupLayer ( "World Places", WorldPlaces, WorldPlacesMajor, WorldPlaces_Capitals ), Airports, GroupLayer ("World Boundaries", world_Border), GroupLayer ( "Roads", Roads, US_Primary_Roads, US_Secondary_Roads, US_Major_Roads ), GroupLayer ("Countries" Countries_small, Countries_large), Ocean Les ID de groupe de couches, tout comme les ID de couche, sont uniques. Les ID de couche peuvent être des numéros ou des noms de tables. Les ID numériques représentent l'ordre (inverse de celui de dessin) des couches dans la liste à partir de la fin. Les ID des groupes de couches font partie d'une autre séquence, mais ils sont également affectés en partant de la fin. Dans l'exemple ci-dessus, les ID de couche et de groupe de couches seraient les suivants : Groupe de couches ID de couche GroupLayer "Grid" groupe 1 GroupLayer "Tropics" groupe 2 Tropic_Of_Capricorn couche 1 Tropic_Of_Cancer couche 2 Wgrid15 couche 3 GroupLayer "World Places" groupe 3 WorldPlaces couche 4 WorldPlacesMajor 432 couche 5 WorldPlaces_Capitals couche 6 Airports couche 7 GroupLayer "World Boundaries" groupe 4 world_Border couche 8 GroupLayer "Roads" groupe 5 Roads couche 19 US_Primary_Roads couche 10 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Groupe de couches ID de couche US_Secondary_Roads couche 11 US_Major_Roads couche 12 GroupLayer "Countries" groupe 6 Countries_small couche 13 Countries_large couche 14 Ocean couche 15 Voir également Instruction Add Map, Instruction Remove Map, Instruction Set Map, Instruction Set Shade, Instruction Shade Fonction Map3DInfo( ) Objectif Renvoie les propriétés d'une fenêtre Vue3D. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Map3DInfo( window_id, attribute ) window_id est un identifiant de fenêtre entier. attribute est un code d'entier définissant le type d'informations à renvoyer. Valeur renvoyée Nombre à virgule flottante, valeur logique ou chaîne, selon le paramètre attribute. Description La fonction Map3DInfo( ) renvoie des informations sur une fenêtre Vue3D. Le paramètre window_id définit la fenêtre Vue3D à rechercher. Pour obtenir un identifiant de fenêtre, appelez immédiatement la fonction FrontWindow( ) après ouverture de la fenêtre ou appelez la fonction WindowID( ) à tout moment après la création de la fenêtre. La fonction Map3DInfo( ) peut renvoyer différents attributs numériques pour une fenêtre Vue3D. Le paramètre attribute indique à la fonction Map3DInfo( ) les statistiques de fenêtre Carte à renvoyer. Le paramètre attribute doit être l'un des codes répertoriés dans le tableau suivant. Les codes sont définis dans MAPBASIC.DEF. Référence 433 Fonction Map3DInfo( ) 434 Attribut ID Valeur renvoyée MAP3D_INFO_SCALE 1 Résultat à virgule flottante représentant le facteur d'échelle de la fenêtre Vue3D. MAP3D_INFO_RESOLUTION_X 2 Résultat entier représentant la résolution X des grilles de la fenêtre Vue3D. MAP3D_INFO_RESOLUTION_Y 3 Résultat entier représentant la résolution Y des grilles de la fenêtre Vue3D. MAP3D_INFO_BACKGROUND 4 Résultat entier représentant la couleur de fond. Reportez-vous à la fonction RGB. MAP3D_INFO_UNITS 5 Chaîne représentant le nom abrégé de l'unité de surface de la carte (« mi » pour miles, par exemple). MAP3D_INFO_LIGHT_X 6 Résultat à virgule flottante représentant la coordonnée x de l'éclairage dans la scène. MAP3D_INFO_LIGHT_Y 7 Résultat à virgule flottante représentant la coordonnée y de l'éclairage dans la scène. MAP3D_INFO_LIGHT_Z 8 Résultat à virgule flottante représentant la coordonnée z de l'éclairage dans la scène. MAP3D_INFO_LIGHT_COLOR 9 Résultat entier représentant la couleur de l'éclairage. Reportez-vous à la section Fonction RGB( ). MAP3D_INFO_CAMERA_X 10 Résultat à virgule flottante représentant la coordonnée x de la caméra dans la scène. MAP3D_INFO_CAMERA_Y 11 Résultat à virgule flottante représentant la coordonnée y de la caméra dans la scène. MAP3D_INFO_CAMERA_Z 12 Résultat à virgule flottante représentant la coordonnée z de la caméra dans la scène. MAP3D_INFO_CAMERA_FOCAL_X 13 Résultat à virgule flottante représentant la coordonnée x du foyer de la caméra dans la scène. MAP3D_INFO_CAMERA_FOCAL_Y 14 Résultat à virgule flottante représentant la coordonnée y du foyer de la caméra dans la scène. MAP3D_INFO_CAMERA_FOCAL_Z 15 Résultat à virgule flottante représentant la coordonnée z du foyer de la caméra dans la scène. MAP3D_INFO_CAMERA_VU_1 16 Résultat à virgule flottante représentant la première valeur du vecteur ViewUp Unit Normal. MAP3D_INFO_CAMERA_VU_2 17 Résultat à virgule flottante représentant la deuxième valeur du vecteur ViewUp Unit Normal. MAP3D_INFO_CAMERA_VU_3 18 Résultat à virgule flottante représentant la troisième valeur du vecteur ViewUp Unit Normal. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Attribut ID Valeur renvoyée MAP3D_INFO_CAMERA_VPN_1 19 Résultat à virgule flottante représentant la première valeur du vecteur ViewPlane Unit Normal. MAP3D_INFO_CAMERA_VPN_2 20 Résultat à virgule flottante représentant la deuxième valeur du vecteur ViewPlane Unit Normal. MAP3D_INFO_CAMERA_VPN_3 21 Résultat à virgule flottante représentant la troisième valeur du vecteur ViewPlane Unit Normal. MAP3D_INFO_CAMERA_CLIP_NEAR 22 Résultat à virgule flottante représentant les caméras à proximité du plan du pochoir. MAP3D_INFO_CAMERA_CLIP_FAR 23 Résultat à virgule flottante représentant les caméras éloignées du plan du pochoir. Exemple Imprime l'ensemble des variables des États spécifiques à la fenêtre Vue3D. include "Mapbasic.def" Print "MAP3D_INFO_SCALE: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_SCALE) Print "MAP3D_INFO_RESOLUTION_X: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_RESOLUTION_X) Print "MAP3D_INFO_RESOLUTION_Y: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_RESOLUTION_Y) Print "MAP3D_INFO_BACKGROUND: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_BACKGROUND) Print "MAP3D_INFO_UNITS: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_UNITS) Print "MAP3D_INFO_LIGHT_X : " + Map3DInfo(FrontWindow( ), MAP3D_INFO_LIGHT_X ) Print "MAP3D_INFO_LIGHT_Y : " + Map3DInfo(FrontWindow( ), MAP3D_INFO_LIGHT_Y ) Print "MAP3D_INFO_LIGHT_Z: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_LIGHT_Z) Print "MAP3D_INFO_LIGHT_COLOR: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_LIGHT_COLOR) Print "MAP3D_INFO_CAMERA_X: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_X) Print "MAP3D_INFO_CAMERA_Y : " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_Y ) Print "MAP3D_INFO_CAMERA_Z : " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_Z ) Print "MAP3D_INFO_CAMERA_FOCAL_X: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_FOCAL_X) Print "MAP3D_INFO_CAMERA_FOCAL_Y: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_FOCAL_Y) Print "MAP3D_INFO_CAMERA_FOCAL_Z: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_FOCAL_Z) Print "MAP3D_INFO_CAMERA_VU_1: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_VU_1) Print "MAP3D_INFO_CAMERA_VU_2: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_VU_2) Print "MAP3D_INFO_CAMERA_VU_3: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_VU_3) Print "MAP3D_INFO_CAMERA_VPN_1: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_VPN_1) Référence 435 Fonction MapperInfo( ) Print "MAP3D_INFO_CAMERA_VPN_2: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_VPN_2) Print "MAP3D_INFO_CAMERA_VPN_3: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_VPN_3) Print "MAP3D_INFO_CAMERA_CLIP_NEAR: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_CLIP_NEAR) Print "MAP3D_INFO_CAMERA_CLIP_FAR: " + Map3DInfo(FrontWindow( ), MAP3D_INFO_CAMERA_CLIP_FAR) Voir également Instruction Create Map3D, Instruction Set Map3D Fonction MapperInfo( ) Objectif Renvoie des informations sur les coordonnées ou les distances d'une fenêtre Carte. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MapperInfo( window_id, attribute ) window_id est un identifiant de fenêtre entier. attribute est un code d'entier définissant le type d'informations à renvoyer. Reportez-vous au tableau ci-dessous pour les valeurs. Valeur renvoyée Nombre à virgule flottante, valeur logique ou chaîne, selon le paramètre attribute. Description La fonction MapperInfo( ) renvoie des informations sur une fenêtre Carte. Le paramètre window_id définit la fenêtre Carte à rechercher. Pour obtenir un identifiant de fenêtre, appelez immédiatement la fonction FrontWindow( ) après ouverture de la fenêtre ou appelez la fonction WindowID( ) à tout moment après la création de la fenêtre. La fonction MapperInfo( ) peut renvoyer différents attributs numériques pour une fenêtre Carte. Le paramètre attribute indique à la fonction MapperInfo( ) les statistiques de fenêtre Carte à renvoyer. Le paramètre attribute doit être l'un des codes répertoriés dans le tableau suivant. Les codes sont définis dans MAPBASIC.DEF. 436 Paramètre attribute ID Valeur renvoyée par MapperInfo( ) MAPPER_INFO_ZOOM 1 Valeur de zoom actuelle de la fenêtre Carte (par exemple, la distance est-ouest affichée dans la fenêtre Carte), définie à l'aide des unités de distance actuelles de MapBasic. Reportez-vous à la section Instruction Set Distance Units. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Paramètre attribute ID Valeur renvoyée par MapperInfo( ) MAPPER_INFO_SCALE 2 Échelle actuelle de la fenêtre Carte, définie en termes du nombre d'unités de distance de la carte (kilomètres, par exemple) par unité papier (centimètres, par exemple) affichée dans la fenêtre. La valeur est renvoyée selon les unités de distance actuelles de MapBasic. MAPPER_INFO_CENTERX 3 Coordonnée x du centre de la fenêtre Carte. MAPPER_INFO_CENTERY 4 Coordonnée y du centre de la fenêtre Carte. MAPPER_INFO_MINX 5 Coordonnée x la plus petite de la fenêtre. MAPPER_INFO_MINY 6 Coordonnée y la plus petite de la fenêtre. MAPPER_INFO_MAXX 7 Coordonnée x la plus grande de la fenêtre. MAPPER_INFO_MAXY 8 Coordonnée y la plus grande de la fenêtre. MAPPER_INFO_LAYERS 9 Renvoie le nombre de couches de la fenêtre Carte sous forme d'entier court (couche Dessin et groupes de couches non inclus). MAPPER_INFO_EDIT_LAYER 10 Entier court indiquant le numéro de la couche pouvant actuellement être modifiée. La valeur 0 indique que la couche Dessin peut être modifiée. La valeur -1 indique qu'aucune couche ne peut être modifiée. MAPPER_INFO_XYUNITS 11 Chaîne représentant le nom abrégé de l'unité des coordonnées de la carte (« degree », par exemple). MAPPER_INFO_DISTUNITS 12 Chaîne représentant le nom abrégé de l'unité de distance de la carte (« mi » pour miles, par exemple). MAPPER_INFO_AREAUNITS 13 Chaîne représentant le nom abrégé de l'unité de surface de la carte (« sq mi » pour les miles carrés, par exemple). MAPPER_INFO_SCROLLBARS 14 Valeur logique indiquant si la fenêtre Carte comporte des barres de défilement. MAPPER_INFO_DISPLAY 15 Entier court indiquant l'aspect de la carte affiché dans la barre d'état. Correspond à l'instruction Set Map Display. La valeur renvoyée est l'une des suivantes : • MAPPER_INFO_DISPLAY_SCALE (0) • MAPPER_INFO_DISPLAY_ZOOM (1) Référence 437 Fonction MapperInfo( ) Paramètre attribute ID Valeur renvoyée par MapperInfo( ) • MAPPER_INFO_DISPLAY_POSITION (2) • MAPPER_INFO_DISPLAY_CARTOGRAPHIC_SCALE (3) MAPPER_INFO_NUM_THEMATIC 16 Entier court indiquant le nombre de couches thématiques dans une fenêtre Carte. MAPPER_INFO_COORDSYS_CLAUSE 17 Résultat sous forme de chaîne qui indique la clause CoordSys de la fenêtre. MAPPER_INFO_COORDSYS_NAME 18 Résultat sous forme de chaîne, représentant le nom du système de coordonnées de la carte qui figure dans le fichier MAPINFOW.PRJ (sans le suffixe facultatif « \p... » qui s'affiche dans MAPINFOW.PRJ). Renvoie une chaîne vide si le système de coordonnées est introuvable dans MAPINFOW.PRJ. MAPPER_INFO_MOVE_DUPLICATE_NODES 19 Entier court indiquant si les nœuds en double doivent être déplacés lors de la modification d'objets de cette fenêtre Carte. Si la valeur est 0, les nœuds en double ne sont pas déplacés. Si la valeur est 1, les nœuds en double d'une même couche sont déplacés. Pour rétablir les préférences de carte par défaut, appelez l'instruction Set Map Move Nodes Default. MAPPER_INFO_DIST_CALC_TYPE 20 Entier court indiquant le type de calcul à utiliser pour déterminer la distance, la longueur, le périmètre et la surface de la carte active. Correspond à Set Map Distance Type. Les valeurs renvoyées incluent : • MAPPER_INFO_DIST_SPHERICAL (0) • MAPPER_INFO_DIST CARTESIAN (1) MAPPER_INFO_DISPLAY_DMS 21 Entier court indiquant si la carte affiche les coordonnées en degrés décimaux, au format DMS (degrés, minutes, secondes), au format du système de référence de carroyage militaire ou au format de la grille nationale US (USNG). La valeur renvoyée est l'une des suivantes : • MAPPER_INFO_DISPLAY_DECIMAL (0) • MAPPER_INFO_DISPLAY_DEGMINSEC (1) • MAPPER_INFO_DISPLAY_MGRS (2) 438 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Paramètre attribute ID Valeur renvoyée par MapperInfo( ) Système de référence de carroyage militaire • MAPPER_INFO_DISPLAY_USNG_WGS84 (3) Grille nationale US NAD 83/WGS 84 • MAPPER_INFO_DISPLAY_USNG_NAD27 (4) Grille nationale US NAD 27 MAPPER_INFO_COORDSYS_CLAUSE_WITH_BOUNDS 22 Résultat sous forme de chaîne qui indique la clause CoordSys de la fenêtre, limites incluses. MAPPER_INFO_CLIP_TYPE Type de pochoir utilisé. Options possibles : 23 • MAPPER_INFO_CLIP_DISPLAY_ALL (0), • MAPPER_INFO_CLIP_DISPLAY_POLYOBJ (1) • MAPPER_INFO_CLIP_OVERLAY (2) MAPPER_INFO_CLIP_REGION 24 Renvoie une chaîne indiquant si un pochoir est activé. Renvoie la chaîne « on » si un pochoir est activé dans la fenêtre Carte, sinon la chaîne « off ». MAPPER_INFO_REPROJECTION 25 Valeur de chaîne indiquant la valeur actuelle du mode de reprojection : La valeur peut être : • Aucune : la carte n'est jamais reprojetée. • Toujours : la carte est toujours reprojetée. • Auto : MapInfo Professional décide si la reprojection de la carte est appropriée. MAPPER_INFO_RESAMPLING 26 Valeur de chaîne indiquant la méthode de calcul des valeurs en pixels de l'image source reprojetée : La valeur peut être : • CubicConvolution • NearestNeighbor MAPPER_INFO_MERGE_MAP Référence 27 Valeur de chaîne : chaîne des instructions MapBasic dont un utilisateur a besoin pour intégrer une fenêtre Carte à celle en cours. 439 Fonction MapperInfo( ) Paramètre attribute ID Valeur renvoyée par MapperInfo( ) MAPPER_INFO_ALL_LAYERS 28 Renvoie le nombre de couches et de groupes de couches (couches et groupes de couches imbriqués inclus). MAPPER_INFO_GROUPLAYERS 29 Renvoie le nombre de groupes de couches (groupes de couches imbriqués inclus). MAPPER_INFO_LABELS_SELECTABLE 30 Valeur logique indiquant si les étiquettes peuvent être sélectionnées dans la fenêtre Carte. MAPPER_INFO_NUM_ADORNMENTS 200 Renvoie un entier représentant le nombre d'habillages associés à une fenêtre Carte. Utilisez des valeurs compatibles en dehors de la plage habituelle pour MapperInfo, comme 100, par exemple. MAPPER_INFO_ADORNMENT+n 200 Renvoie le WindowID d'un habillage associé à la fenêtre Carte. Lorsque vous appelez la fonction MapperInfo( ) pour obtenir des valeurs de coordonnées (en définissant MAPPER_INFO_CENTERX comme attribut, par exemple), la valeur renvoyée représente une coordonnée du système de MapBasic lequel peut être différent du système de coordonnées de la fenêtre Carte). Utilisez l'instruction Set CoordSys pour définir un autre système de coordonnées. Indiquez un paramètre pour chaque fenêtre Carte pour permettre à MapBasic de définir et obtenir le paramètre actuel de chaque carte active. Lors de la modification, l'option de déplacement des nœuds en double peut être configurée de manière à ne déplacer aucun des nœuds ou à déplacer tous les doublons d'une même couche. Lorsqu'une nouvelle fenêtre Carte est créée, le paramètre initial de déplacement des nœuds en double est récupéré à partir des préférences de la carte active (Options/Préférences/Fenêtre Carte/Synchroniser les nœuds dans). Il est possible de rechercher le paramètre de déplacement des nœuds en double d'une fenêtre Carte existante en utilisant un nouvel attribut dans la fonction MapperInfo( ). L'état de la fenêtre Carte peut être modifié à l'aide de l'instruction Set Map. Valeurs de coordonnées renvoyées MapperInfo( )ne renvoie pas les coordonnées (c'est-à-dire MINX, MAXX, MINY, MAXY) dans les unités définies pour la fenêtre Carte. Les valeurs sont renvoyées conformément aux unités du système de coordonnées interne de la session MapInfo Professional ou de l'application MapBasic qui appelle la fonction (si le système de coordonnées a été modifié au sein de l'application). De même, l'attribut MAPPER_INFO_XYUNITS renvoie les unités utilisées pour afficher l'emplacement du curseur dans la barre d'état (définies à l'aide de la fonction Set Map Window Frontwindow( ) XY Units). 440 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Informations sur le pochoir Depuis la version 6.0 de MapInfo Professional, la fonctionnalité de pochoir dispose de trois méthodes d'utilisation. La méthode MAPPER_INFO_CLIP_OVERLAY (2) était la seule disponible jusqu'à MapInfo Professional 6.0. Elle permet d'utiliser la fonction Overlap( ) (Objet > Supprimer extérieur) en interne. La fonction Overlap( ) ne permettant pas de produire des résultats avec les objets texte, aucun pochoir n'est réalisé à partir de ces derniers. Pour les objets point, un test simple est effectué au niveau du point de la région afin de déterminer si le point est inclus ou non. Les objets étiquette sont traités de manière similaire. Ils sont affichés si le point de l'étiquette se trouve à l'intérieur du pochoir, sinon ils n'apparaissent pas. Le pochoir étant réalisé au niveau des objets spatiaux, il ne concerne jamais les styles (lignes épaisses, symboles, texte). La méthode MAPPER_INFO_CLIP_DISPLAY_ALL (0) crée le pochoir à l'aide de l'affichage des fenêtres. Un pochoir est créé pour tous les types d'objets. Cela vaut également pour les cartes thématiques, les rasters et les grilles. Un pochoir est toujours créé pour les styles (lignes épaisses, symboles, texte). Il s'agit du type de pochoir par défaut. La méthode MAPPER_INFO_CLIP_DISPLAY_POLYOBJ (1) crée un pochoir sélectif à l'aide de l'affichage des fenêtres. Elle reprend les fonctionnalités de la méthode MAPPER_INFO_CLIP_OVERLAY (2). La fonction Windows Display Clipping permet de créer un pochoir de tous les objets « poly » (régions et polylignes) et ceux pouvant être convertis en objets « poly » (rectangles, rectangles arrondis, ellipses et arcs). Un pochoir est toujours créé pour les symboles de ces objets. Les points, les étiquettes et le texte sont traités de la même manière qu'avec la méthode MAPPER_INFO_CLIP_OVERLAY (2). Vous obtiendrez généralement de meilleures performances qu'avec la méthode MAPPER_INFO_CLIP_OVERLAY (2). Conditions d'erreur Une erreur ERR_BAD_WINDOW (590) est générée si le paramètre n'est pas un numéro de fenêtre valide. L'erreur ERR_FCN_ARG_RANGE (644) est générée si un argument se trouve en dehors de la plage valide. Une erreur ERR_WANT_MAPPER_WIN (313) est générée si l'identifiant d'une fenêtre ne correspond pas à une fenêtre Carte. Voir également Fonction LayerInfo( ), Instruction Set Distance Units, Instruction Set Map Fonction Maximum( ) Objectif Renvoie le plus grand de deux nombres. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Maximum( num_expr, num_expr ) num_expr représente une expression numérique. Référence 441 Fonction MBR( ) Valeur renvoyée Nombre à virgule flottante Description La fonction Maximum( ) renvoie la plus grande de deux expressions numériques. Exemple Dim x = y = z = x, y, z As Float 42 27 Maximum(x, y) ' z now contains the value: 42 Voir également Fonction Minimum( ) Fonction MBR( ) Objectif Renvoie un objet rectangle, qui représente le rectangle intérieur d'encadrement d'un autre objet. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MBR( obj_expr ) obj_expr correspond à une expression d'objet. Valeur renvoyée Objet (rectangle) Description La fonction MBR( ) calcule le rectangle intérieur d'encadrement (MBR) de l'objet obj_expr indiqué. Un rectangle intérieur d'encadrement est le plus petit rectangle dans lequel un objet spécifique peut être inséré. En d'autres termes, le rectangle intérieur d'encadrement des États-Unis s'étend à l'est jusqu'à l'extrémité est du Maine, au sud jusqu'à l'extrémité sud de Hawaï, à l'ouest jusqu'à l'extrémité ouest de l'Alaska et au nord jusqu'à l'extrémité nord de l'Alaska. Le rectangle intérieur d'encadrement d'un objet point dispose d'une largeur et d'une hauteur égales à zéro. Exemple Dim o_mbr As Object Open Table "world" Fetch First From world o_mbr = MBR(world.obj) 442 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Fonction Centroid( ), Fonction CentroidX( ), Fonction CentroidY( ) InstructionMenu Bar Objectif Affiche ou masque la barre de menus. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Menu Bar { Hide | Show } Description L'instruction Menu Bar permet d'afficher ou de masquer la barre de menus de MapInfo Professional. Une application peut masquer la barre de menus afin de disposer de davantage d'espace à l'écran pour les fenêtres. À la suite d'une instruction Menu Bar Hide, la barre de menus reste masquée, jusqu'à ce que l'instruction Menu Bar Show soit exécutée. Le fait que la barre de menus soit masquée peut handicaper lourdement les utilisateurs. Vous devez donc utiliser l'instruction Menu Bar Hide avec précaution. Chaque instruction Menu Bar Hide doit être suivie d'une instruction Menu Bar Show. Lorsque la barre de menus est masquée, MapInfo Professional ne prend pas en compte les raccourcis clavier correspondants. Par exemple, un utilisateur de MapInfo Professional peut d'habitude utiliser le raccourci Ctrl+Opour afficher la boîte de dialogue Ouvrir. Cependant, lorsque la barre de menus est masquée, MapInfo Professional ne prend pas en compte le raccourci clavier Ctrl+O. Voir également Instruction Alter Menu Bar, Instruction Create Menu Bar Fonction MenuItemInfoByHandler( ) Objectif Renvoie des informations sur une option de menu de MapInfo Professional. Syntaxe MenuItemInfoByHandler( handler, attribute ) handler représente soit une chaîne (contenant le nom d'une procédure de gestionnaire définie dans une clause Calling), soit un entier (défini comme constante dans une clause Calling). attribute est un code sous forme d'entier qui indique l'attribut à renvoyer. Reportez-vous au tableau ci-dessous. Référence 443 Fonction MenuItemInfoByHandler( ) Description Le paramètre handler peut être un entier ou une chaîne. Si vous définissez une chaîne (nom de procédure) et si plusieurs options de menu appellent cette procédure, MapInfo Professional renvoie les informations concernant la première option. Si vous devez interroger plusieurs options de menu qui appellent la même procédure de gestionnaire, donnez à chacune des options de menu un identifiant (par exemple, en utilisant la clause ID facultative dans l'Instruction Create Menu). Appelez ensuite la Fonction MenuItemInfoByID( ) plutôt que la fonction MenuitemInfoByHandler( ). Le paramètre attribute est un code numérique (défini dans le fichier MAPBASIC.DEF) : 444 Paramètre attribute ID Valeur renvoyée MENUITEM_INFO_ENABLED 1 Valeur logique : TRUE si cette option de menu est activée. MENUITEM_INFO_CHECKED 2 Valeur logique : TRUE si cette option de menu est cochée ; renvoie également TRUE si elle contient du texte alternatif (par exemple, si elle alterne entre Afficher et Masquer), et qu'elle est affichée. Sinon, renvoie FALSE. MENUITEM_INFO_CHECKABLE 3 Valeur logique : TRUE si cette option de menu peut être cochée (si tel est le cas, le préfixe « ! » apparaît dans le texte du menu). MENUITEM_INFO_SHOWHIDEABLE 4 Valeur logique : TRUE si l'option de menu contient du texte alternatif (par exemple, si elle alterne entre Afficher et Masquer). Un élément contient du texte alternatif si, lors de sa création, le préfixe « ! » a été ajouté au début du texte de l'option de menu (dans une Instruction Create Menu ou Instruction Alter Menu) et si la chaîne de cet élément contient un caret (^). MENUITEM_INFO_ACCELERATOR 5 Chaîne : séquence de code pour le raccourci des options de menu (par exemple, /W^Z ou /W#%119) ou chaîne vide si l'option de menu n'a pas de raccourci. Pour plus d'informations sur les raccourcis de menu, reportez-vous à l'instruction Create Menu. MENUITEM_INFO_TEXT 6 Chaîne : totalité du texte utilisé (par exemple, dans une instruction Create Menu) pour créer une option de menu. MENUITEM_INFO_HELPMSG 7 Chaîne : message d'aide de l'option de menu (comme spécifié par la clause HelpMsg dans l'instruction Create Menu) ou chaîne vide si l'option de menu n'inclut pas de message d'aide. MENUITEM_INFO_HANDLER 8 Entier : numéro du gestionnaire de l'option de menu. Si la clause Calling de l'option de menu indique une constante numérique (par exemple, Calling M_FILE_SAVE), cet appel renvoie la valeur de la constante. Si la clause Calling indique OLE, DDE ou le nom d'une procédure, cet appel renvoie un entier unique MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Paramètre attribute ID Valeur renvoyée (numéro de gestionnaire interne) pouvant être utilisé dans les appels ultérieurs à la fonction MenuitemInfoByHandler( ) ou dans l'instruction Run Menu Command. MENUITEM_INFO_ID 9 Entier : identifiant du menu (spécifié par la clause ID facultative d'une instruction Create Menu) ou 0 si l'option de menu n'a pas d'identifiant. Voir également Fonction MenuItemInfoByID( ) Fonction MenuItemInfoByID( ) Objectif Renvoie des informations sur une option de menu de MapInfo Professional. Syntaxe MenuItemInfoByID( menuitem_ID, attribute ) menuitem_ID représente un identifiant de menu sous forme d'entier (spécifié dans la clause ID de l'instruction Create Menu). attribute est un code sous forme d'entier qui indique l'attribut à renvoyer. Description Cette fonction est identique à la fonction MenuItemInfoByHandler( ), à ceci près que le premier argument de cette fonction est un identifiant entier. Appelez cette fonction pour interroger l'état d'une option de menu lorsque vous connaissez son identifiant. Appelez la fonction MenuItemInfoByHandler( ) pour interroger l'état d'une option de menu si vous préférez identifier celle-ci par son gestionnaire. L'argument attribute est un code du fichier MAPBASIC.DEF, tel que MENUITEM_INFO_CHECKED (2). Pour obtenir la liste complète des codes, reportez-vous à la section Fonction MenuItemInfoByHandler( ). Voir également Fonction MenuItemInfoByHandler( ) Instruction Metadata Objectif Gère les métadonnées d'une table. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Référence 445 Instruction Metadata Syntaxe 1 Metadata Table table_name { SetKey key_name To key_value | DropKey key_name [ Hierarchical ] | SetTraverse starting_key_name [ Hierarchical ] Into ID traverse_ID_var } table_name est le nom d'une table ouverte. key_name est une chaîne qui représente le nom d'une clé de métadonnées. La chaîne doit commencer par une barre oblique inverse (« \ ») et ne peut pas se terminer ce caractère. key_value est une chaîne de 239 caractères maximum, représentant la valeur à attribuer à la clé. starting_key_name est une chaîne qui représente le nom de la première clé à récupérer de la table. Utilisez la barre oblique inverse (« \ ») pour configurer le parcours au tout début de la liste de clés. traverse_ID_var est le nom d'une variable sous forme d'entier. MapInfo Professional stocke dans la variable un identifiant de parcours que vous pouvez utiliser dans les instructions Metadata Traverse.... Syntaxe 2 Metadata Traverse traverse_ID { Next Into Key key_name_var In key_value_var | Destroy } traverse_ID est une valeur entière (comme la valeur de la variable var_traverse_ID décrite ci-dessus). key_name_var représente le nom d'une variable de type chaîne. MapInfo Professional stocke le nom de la clé récupérée dans cette variable. key_value_var représente le nom d'une variable de type chaîne. MapInfo Professional stocke la valeur de la clé récupérée dans cette variable. Description L'instruction Metadata gère les métadonnées stockées dans des tables MapInfo. Les métadonnées sont les informations stockées dans le fichier .TAB d'une table (au lieu d'être stockées sous forme de lignes et de colonnes). Chaque table peut disposer de plusieurs clés ou d'aucune. Chaque clé représente une catégorie d'informations, telle que le nom d'un auteur, un avis de copyright, etc. Une valeur de chaîne est associée à chaque clé. Une clé appelée « \Copyright » peut ainsi représenter la valeur « Copyright 2001 Pitney Bowes Software Inc. Corporation ». Pour plus d'informations sur les métadonnées, consultez le Guide de l'utilisateur MapBasic. Modification des métadonnées d'une table Pour créer, modifier ou supprimer des métadonnées, utilisez la syntaxe 1. Les clauses suivantes s'appliquent : SetKey Attribue une valeur à une clé de métadonnées. Si la clé existe déjà, MapInfo Professional lui attribue une nouvelle valeur. Si la clé n'existe pas, MapInfo Professional crée une nouvelle clé. Lors de la création 446 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z d'une nouvelle clé, les modifications sont immédiatement appliquées. Il n'est pas nécessaire de procéder à une opération d'enregistrement. MetaData Table Parcels SetKey "\Info\Date" To Str$(CurDate( )) Remarque: MapInfo Professional crée automatiquement une clé de métadonnées appelée « \IsReadOnly » (avec FALSE comme valeur par défaut) lorsque vous ajoutez une clé de métadonnées à une table pour la première fois. La clé \IsReadOnly est une clé spéciale, réservée à l'usage interne de MapInfo Professional. DropKey Supprime la clé indiquée de la table. Si vous incluez le mot-clé Hierarchical, MapInfo Professional supprime toute la hiérarchie de métadonnées, au niveau de et sous la clé indiquée. Par exemple, si une table dispose des clés « \Info\Author » et « \Info\Date », vous pouvez supprimer les deux clés à l'aide de l'instruction suivante : MetaData Table Parcels DropKey "\Info" Hierarchical Lecture des métadonnées d'une table Pour lire les valeurs de métadonnées d'une table, utilisez la clause SetTraverse pour initialiser un parcours, puis la clause Next pour récupérer les valeurs de clés. Une fois les valeurs récupérées, utilisez la clause Destroy pour libérer la mémoire utilisée par le parcours. Les clauses suivantes s'appliquent : SetTraverse Prépare le parcours des clés de la table, en commençant par la clé indiquée. Pour commencer au début de la liste de clés, utilisez le caractère « \ » comme nom de clé de départ. Si vous incluez le mot-clé Hierarchical, le parcours peut récupérer chaque clé de manière hiérarchique. Si vous omettez le mot-clé Hierarchical le parcours est plat : MapInfo Professional récupère uniquement les clés au niveau de la racine (le parcours récupère ainsi la clé « \Info », mais pas la clé « \Info\Date ») Next Into Key... Into Value... Tente de lire la clé suivante. S'il existe une clé à lire, MapInfo Professional stocke le nom de cette clé dans la variable key_name_var et sa valeur dans la variable key_value_var. Si aucune autre clé n'est disponible à la lecture, MapInfo Professional stocke des chaînes vides dans les deux variables. Destroy Met fin au parcours et libère la mémoire utilisée par celui-ci. Remarque: Le parcours de métadonnées hiérarchiques peut traverser jusqu'à dix niveaux de clés (\Un\Deux\Trois\Quatre\Cinq\Six\Sept\Huit\Neuf\Dix, par exemple) si vous commencez le parcours à la racine (« \ »). Si vous devez récupérer une clé sur plus de dix niveaux, commencez le parcours à un niveau plus bas (par \Un\Deux\Trois\Quatre\Cinq, par exemple). Exemple La procédure suivante permet de lire l'ensemble des valeurs de métadonnées d'une table. Le nom de la table est défini par l'appelant. Cette procédure affiche les noms et les valeurs de clés dans la fenêtre Message. Sub Print_Metadata(ByVal table_name As String) Dim i_traversal As Integer Référence 447 Fonction MGRSToPoint( ) Dim s_keyname, s_keyvalue As String ' Initialize the traversal: Metadata Table table_name SetTraverse "\" Hierarchical Into ID i_traversal ' Attempt to fetch the first key: Metadata Traverse i_traversal Next Into Key s_keyname Into Value s_keyvalue ' Now loop for as long as there are key values; ' with each iteration of the loop, retrieve ' one key, and print it to the Message window. Do While s_keyname <> "" Print " " Print "Key name: " & s_keyname Print "Key value: " & s_keyvalue Metadata Traverse i_traversal Next Into Key s_keyname Into Value s_keyvalue Loop ' Release this traversal to free memory: MetaData Traverse i_traversal Destroy End Sub Voir également Fonction GetMetadata$( ), Fonction TableInfo( ) Fonction MGRSToPoint( ) Objectif Convertit une chaîne représentant une coordonnée du système de référence de carroyage militaire (MGRS) en un objet point du système de coordonnées actuel de MapBasic. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MGRSToPoint( string ) string est une expression de type chaîne représentant une coordonnée du système de référence de carroyage militaire. Le système de coordonnées Longitude/Latitude par défaut est utilisé comme sélection initiale. Valeur renvoyée Objet Description Le point renvoyé est localisé dans le système de coordonnées actuel de MapBasic, c'est-à-dire le système Longitude/Latitude par défaut (sans datum). Pour obtenir des résultats précis lors de l'enregistrement des points obtenus dans une table, configurez le système de coordonnées MapBasic afin qu'il corresponde 448 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z à celui de la table de destination avant d'appeler la fonction MGRSToPoint( ). Ceci permet d'éviter que MapInfo Professional ne procède à une conversion intermédiaire vers le système de coordonnées Longitude/Latitude sans datum, ce qui entraîne une perte de précision importante. Exemple Exemple 1 : dim obj1 as Object dim s_mgrs As String dim obj2 as Object obj1 = CreatePoint(-74.669, 43.263) s_mgrs = PointToMGRS$(obj1) obj2 = MGRSToPoint(s_mgrs) Exemple 2 : Open Table "C:\Temp\MyTable.TAB" as MGRSfile ' When using the PointToMGRS$( ) or MGRSToPoint( ) functions, ' it is very important to make sure that the current MapBasic ' coordsys matches the coordsys of the table where the ' point object is being stored. 'Set the MapBasic coordsys to that of the table used Set CoordSys Table MGRSfile 'Update a Character column (for example COL2) with MGRS strings from 'a table of points Update MGRSfile Set Col2 = PointToMGRS$(obj) 'Update two float columns (Col3 & Col4) with 'CentroidX & CentroidY information 'from a character column (Col2) that contains MGRS strings. Update MGRSfile Set Col3 = CentroidX(MGRSToPoint(Col2)) Update mgrstestfile ' MGRSfile Set Col4 = CentroidY(MGRSToPoint(Col2)) Commit Table MGRSfile Close Table MGRSfile Voir également Fonction PointToMGRS$( ) Fonction Mid$( ) Objectif Renvoie une chaîne extraite du cœur d'une autre chaîne. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Mid$( string_expr, position, length ) string_expr est une expression de type chaîne. position est une expression numérique indiquant une position de départ dans la chaîne. length est une expression numérique indiquant le nombre de caractères à extraire. Référence 449 Fonction MidByte$( ) Valeur renvoyée Chaîne Description La fonction Mid$( ) renvoie une sous-chaîne copiée à partir de la chaîne string_expr indiquée. Mid$( ) copie le nombre de caractères de la chaîne string_expr en commençant par la position indiquée par le paramètre correspondant. Si la valeur de position est inférieure ou égale à 1, MapBasic commence la copie à partir du tout début de la chaîne string_expr. Si la chaîne string_expr n'est pas suffisamment longue, il est possible que le nombre de caractères indiqué par le paramètre de longueur ne puisse pas être copié. Il se peut donc que la fonction Mid$( ) ne renvoie pas une chaîne dont le nombre de caractères correspond au paramètre de longueur défini. Si le paramètre position correspond à un nombre plus élevé que le nombre de caractères constituant la chaîne, la fonction string_expr, Mid$( ) renvoie une chaîne vide. Si le paramètre de longueur est égal à zéro, Mid$( ) renvoie une chaîne vide. Si le paramètre longueur ou position est fractionnel, MapBasic arrondit à l'entier le plus proche. Exemple Dim str_var, substr_var As String str_var = "New York City" substr_var = Mid$(str_var, 10, 4) ' substr_var now contains the string "City" Voir également Fonction InStr( ), Fonction Left$( ), Fonction Right$( ) Fonction MidByte$( ) Objectif Accède aux octets d'une chaîne sur un système qui prend en charge les caractères à deux octets. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe MidByte$( string_expr, position, length ) string_expr est une expression de type chaîne. position est une expression numérique entière indiquant une position de départ dans la chaîne. length est une expression numérique entière indiquant le nombre d'octets à renvoyer. Valeur renvoyée Chaîne 450 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description La fonction MidByte$( ) renvoie les octets d'une chaîne. Utilisez la fonction MidByte$( ) lorsque vous devez extraire une plage d'octets d'une chaîne et que l'application est exécutée sur un système qui prend en charge les jeux de caractères à deux octets. Par exemple, la version japonaise de Microsoft Windows prend en charge les caractères à deux octets. Sur les systèmes qui prennent en charge les caractères à un octet, les résultats renvoyés par la fonction MidByte$( ) sont identiques à ceux renvoyés par la Fonction Mid$( ). Voir également Fonction InStr( ), Fonction Left$( ), Fonction Right$( ) Fonction Minimum( ) Objectif Retourne le plus petit de deux nombres. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Minimum( num_expr, num_expr ) num_expr représente une expression numérique. Valeur renvoyée Nombre à virgule flottante Description La fonction Minimum( ) renvoie la plus petite de deux expressions numériques. Exemple Dim x = y = z = x, y, z As Float 42 -100 Minimum(x, y) ' z now contains the value: -100 Voir également Fonction Maximum( ) Fonction Minute( ) Objectif Récupère la partie minutes d'une valeur Time sous forme de nombre entier (0-59). Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Référence 451 Fonction Month( ) Syntaxe Minute( Time ) Valeur renvoyée Entier court Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. dim X as time dim iMin as integer X = CurDateTime() iMin = Minute(X) Print iMin Voir également Fonction Hour( ), FonctionSecond( ) Fonction Month( ) Objectif Renvoie le composant mois (1 à 12) d'une valeur de date. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe Month( date_expr ) date_expr est une expression de date. Valeur renvoyée Valeur entière courte comprise entre 1 et 12 (inclus) Description La fonction Month( ) renvoie un entier qui représente le composant mois (1 à 12) de la date indiquée. Exemples L'exemple suivant vous indique comment extraire uniquement le composant mois d'une valeur de date spécifique, à l'aide de la fonction Month( ). If Month(CurDate( )) = 12 Then ' ' ... then it is December... ' End If Vous pouvez également utiliser la fonction Month( ) dans l'instruction SQL Select. L'instruction Select ci-dessous n'extrait que des lignes spécifiques de la table Orders. Cet exemple suppose que la table 452 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Orders possède une colonne de date appelée Date_Cmde. La clause Where de l'instruction Select indique à MapInfo Professional de ne sélectionner que les commandes à compter de décembre 1993. Open Table "orders" Select * From orders Where Month(orderdate) = 12 And Year(orderdate) = 1993 Voir également Fonction CurDate( ), Fonction Day( ), Fonction Minute( ), Fonction Month( ), Fonction Second( ), Fonction Weekday( ), Fonction Year( ) Instruction Nearest Objectif Trouve l'objet d'une table le plus proche d'un objet spécifique. L'objet résultant est une polyligne à deux points représentant la distance la plus proche. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Nearest [ N | All ] From { Table fromtable | Variable fromvar } To totable Into intotable [ Type { Spherical | Cartesian }] [ Ignore [ Contains ] [ Min min_value ] [ Max max_value ] Units unitname ] [ Data clause ] N est un paramètre facultatif représentant le nombre d'objets les plus proches à trouver. La valeur par défaut est de 1. Si vous utilisez All, un objet distance est alors créé pour chaque association. fromtable représente une table d'objets à partir de laquelle vous souhaitez trouver les distances les plus proches. fromvar correspond à une variable MapBasic représentant un objet à partir duquel vous souhaitez trouver les distances les plus proches. totable représente une table d'objets vers laquelle vous souhaitez trouver les distances les plus proches. totable représente une table dans laquelle les résultats doivent être placés. min_value est la distance minimale à inclure dans les résultats. max_value est la distance maximale à inclure dans les résultats. unitnameest une chaîne représentant le nom de l'unité de distance (« km », par exemple) utilisée pour le paramètre min_value et/ou max_value. clause est une expression qui définit la table dont sont issus les résultats. Description L'instruction Nearest trouve tous les objets de la table fromtable situés à proximité d'un objet spécifique. Tous les objets de la table fromtable sont pris en compte. Pour chaque objet de la table fromtable, l'objet le plus proche de la table totable est localisé. Si le paramètre N est défini, les N objets de la table totable Référence 453 Instruction Nearest les plus proches sont localisés. Un objet polyligne à deux points représentant les points les plus proches entre l'objet fromtable et l'objet totable sélectionné est ajouté à la table indiquée par le paramètre intotable. Si l'option All est spécifiée, un objet est placé dans la table totable. Il représente alors la distance entre l'objet fromtable et chaque objet de la table totable. Si la table totable inclut plusieurs objets situés à la même distance d'un objet de la table fromtable donné, il est possible que seul l'un d'entre eux soit renvoyé. Si la requête porte sur plusieurs objets (c'est-à-dire si N est supérieur à 1), les objets de même distance remplissent des emplacements successifs. S'il existe un nœud au niveau du deuxième objet le plus proche et que la requête porte sur trois objets, l'objet devient le troisième objet le plus proche. Les objets des tables fromtable et totable peuvent être de n'importe quel type, sauf des objets texte. Par exemple, si les deux tables contiennent des objets région, la distance minimale entre les objets région est déterminée et l'objet polyligne à deux points créé représente les points de chaque objet utilisés pour calculer la distance. Si les objets région se croisent, la distance minimale est zéro et la polyligne à deux points renvoyée est dégénérée : les deux points sont identiques et représentent une intersection. Les distances calculées ne prennent pas en compte les distances routières. Il s'agit uniquement de distances à vol d'oiseau. Type est la méthode utilisée pour calculer les distances entre les objets. Les paramètres possibles sont Spherical et Cartesian. Le type de calcul des distances du système de coordonnées de la table intotable doit être correct, autrement une erreur se produit. Si le système de coordonnées de la table intotable est non terrestre et que la distance est calculée à l'aide de la méthode sphérique, une erreur se produit. Si le système de coordonnées de la table intotable est Latitude/Longitude et que la distance est calculée à l'aide de la méthode cartésienne, une erreur se produit. La clause Ignore limite les distances renvoyées. Les distances identifiées étant inférieures ou égales à min_value ou supérieures à max_value ne sont pas prises en compte. min_value et max_value sont indiqués dans l'unité de distance définie par unitname. Si le paramètre unitname n'est pas une unité de distance valide, une erreur se produit. La distance Min peut permettre de supprimer les distances nulles. Cette option peut être utile pour supprimer les comparaisons de points identiques lors de l'utilisation de deux tables de points. Par exemple, si deux tables de points représentent des villes et que nous souhaitons localiser les villes les plus proches, il est possible d'exclure les villes identiques. Toute la clause Ignore est facultative. Il en est de même pour les sous-clauses Min et Max qu'elle contient. La distance Max peut être utilisée pour limiter les objets à prendre en compte dans la table totable. Cette option est particulièrement utile lorsqu'elle est utilisée en association avec N ou All. Par exemple, nous souhaitons rechercher les cinq aéroports les plus proches d'un ensemble de villes (où la table fromtable représente l'ensemble de villes et la table totable un ensemble d'aéroports). Nous ne souhaitons cependant pas prendre en compte les aéroports situés à plus de 160 km de distance. Il est possible que moins de cinq aéroports soient renvoyés pour une ville donnée. Cette option peut également être utilisée en association avec le paramètre All, permettant de trouver tous les aéroports situés à 160 km d'une ville. L'ajout d'un paramètre Max peut améliorer les performances d'une instruction Nearest, le nombre d'objets totable recherchés étant limité de manière significative. Les distances réelles sont supérieures à min_value et inférieures ou égales à max_value : min_value < distance <= max_value Ceci peut permettre de renvoyer des plages ou des distances en plusieurs fois, à l'aide de l'instruction Nearest. Par exemple, la première instance peut renvoyer tous les objets entre 0 et 160 km et la deuxième 454 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z tous les objets entre 160 et 320 km. Les résultats ne contiendront pas de doublons (c'est-à-dire qu'une distance de 160 apparaît uniquement la première fois, jamais la deuxième). Normalement, si un objet est inclus dans un autre, la distance entre les objets est nulle. Par exemple, si fromtable correspond à la table CapMonde et totable représente la table Monde, la distance entre Londres et le Royaume-Uni est nulle. Si le filtre Contains est activé pour la clause Ignore, la distance n'est pas automatiquement nulle. La distance de Londres à la frontière du Royaume-Uni est renvoyée à la place. En effet, tous les objets fermés, tels que les régions, sont considérés comme des polylignes dans le cadre de cette opération. Clause Data La clause Data peut être utilisée pour indiquer l'objet fromtable et l'objet totable dont est issu le résultat. Data IntoColumn1=column1, IntoColumn2=column2 La colonne IntoColumn à gauche du signe égal doit être une colonne valide de la table totable. Le nom de colonne à droite du signe égal doit être un nom de colonne valide dans la table totable ou fromtable. Si un nom de colonne est utilisé à la fois dans la table totable et fromtable, la colonne de la table totable est utilisée (c'est-à-dire que la recherche porte d'abord sur les noms de colonne à droite du signe égal présents dans la table totable). Pour éviter de tels conflits, les noms de colonne peuvent être qualifiés à l'aide de l'alias de table : Data name1=states.state_name, name2=county.state_name Pour remplir une colonne de la table totable avec la distance, il est possible d'utiliser la fonctionnalité Table > Mettre à jour Colonne du menu ou l'Instruction Update. Exemples Supposons que nous disposons d'une table de points représentant les emplacements de guichets automatiques bancaires et incluant au moins deux colonnes : Société, qui représente le nom de l'entreprise disposant du guichet automatique et Adresse, qui représente l'adresse de cette entreprise. Supposons que l'actuelle sélection représente notre emplacement. L'exemple suivant permet alors de localiser le guichet automatique le plus proche du lieu où nous nous trouvons : Nearest From Table selection To atm Into result Data where=Business,address=Address Si nous souhaitions trouver les cinq guichets automatiques les plus proches de notre emplacement : Nearest 5 From Table selection To atm Into result Data where=Business,address=Address Si nous souhaitions trouver tous les guichets automatiques dans un rayon de 5 miles (8 km) : Nearest All From Table selection To atm Into result Ignore Max 5 Units "mi" Data where=buisness,address=address Supposons que nous disposons d'une table indiquant les emplacements de maisons (fromtable) et une table représentant la côte (totable). Pour trouver la distance d'une maison à la côte : Nearest From Table customer To coastline Into result Data who=customer.name, where=customer.address,coast_loc=coastline.county,type=coastline.designat ion Référence 455 Instruction Note Si les clients se trouvant à plus de 30 miles (50 km) d'une côte ne nous intéressent pas : Nearest From Table customer To coastline Into result Ignore Max 30 Units "mi" Data who=customer.name, where=customer.address,coast_loc=coastline.county, type=coastline.designation Supposons que nous disposons d'une table de villes (fromtable) et d'une table de capitales (totable), et que nous souhaitons trouver la capitale d'État la plus proche de chaque ville, sans prendre en compte les cas où la ville de la table fromtable est également une capitale : Nearest From Table uscty_1k To usa_caps Into result Ignore Min 0 Units "mi" Data city=uscty_1k.name,capital=usa_caps.capital Voir également Instruction Farthest, Fonction CartesianObjectDistance( ), Fonction ObjectDistance( ), Fonction SphericalObjectDistance( ), Fonction CartesianConnectObjects( ), Fonction ConnectObjects( ), Fonction SphericalConnectObjects( ) Instruction Note Objectif Affiche un message simple dans une boîte de dialogue. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Note message message est une expression à afficher dans une boîte de dialogue. Description L'instruction Note crée une boîte de dialogue dans laquelle un message est affiché. La boîte de dialogue contient un bouton OK. Elle reste affichée jusqu'à ce que l'utilisateur clique sur le bouton OK. L'expression du message ne doit pas nécessairement être une expression de type chaîne. Si le message est un objet, MapBasic crée automatiquement la chaîne adaptée (Région, par exemple) à l'affichage dans la boîte de dialogue Remarque. Si le message est une chaîne, celle-ci peut contenir jusqu'à 300 caractères, sur 6 lignes maximum. Exemple Note "Total # of records processed: " + Str$( i_count ) Voir également Fonction Ask( ), Instruction Dialog, Instruction Print 456 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction NumAllWindows( ) Objectif Renvoie le nombre de fenêtres MapInfo Professional, y compris les fenêtres spéciales comme ButtonPad et Informations. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe NumAllWindows( ) Valeur renvoyée Entier court Description La fonction NumAllWindows( ) renvoie le nombre de fenêtres MapInfo Professional. Pour déterminer le nombre de fenêtres de documents ouvertes par MapInfo Professional (Carte, Données, Graphique et Mise en page), appelez la fonction NumWindows( ). Voir également Fonction NumWindows( ) , Fonction WindowID( ) Fonction NumberToDate( ) Objectif Renvoie une valeur de date à partir d'un entier. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe NumberToDate( numeric_date ) numeric_date est un entier à huit chiffres au format AAAAMMJJ (19951231, par exemple). Valeur renvoyée Date Description La fonction NumberToDate( ) renvoie une valeur de date représentée par un entier à huit chiffres. L'appel de fonction suivant renvoie la date du 31 décembre 2006, par exemple : NumberToDate(20061231) Référence 457 Fonction NumberToDateTime( ) Exemple L'exemple suivant soustrait une valeur de date d'une autre date. Le résultat de la soustraction correspond au nombre de jours entre les deux dates. Dim i_elapsed As Integer i_elapsed = CurDate( ) - NumberToDate(20060101) ' i_elapsed now contains the number of days ' since January 1, 2006 Voir également Fonction StringToDate( ), Instruction Set Format, Fonction Str$( ), Fonction NumberToDateTime( ), Fonction NumberToTime( ) Fonction NumberToDateTime( ) Objectif Renvoie une valeur DateTime. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe NumberToDateTime( numeric_datetime ) numeric_datetime est un entier à dix-sept chiffres, au format AAAAMMJJHHMMSSFFF. Par exemple, 20070301214237582 correspond au 1er mars 2007, à 21h42:37,582. Valeur renvoyée DateTime Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. dim fNum as float dim Y as datetime fNum = 20070301214237582 Y = NumbertoDateTime (fNum) Print FormatDate$(GetDate(Y)) Print FormatTime$(GetDate(Y),"hh:mm:ss.fff tt") Voir également Fonction FormatTime$( ), Fonction GetTime() fonction, Fonction NumberToDate( ), Fonction NumberToTime( ) 458 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Fonction NumberToTime( ) Objectif Renvoie une valeur Time. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe NumberToTime( numeric_time ) numeric_time est un entier à neuf chiffres, au format HHMMSSFFF. Par exemple, 214237582 représente 21h42:37,582. Valeur renvoyée Durée Exemple Copiez cet exemple dans la fenêtre MapBasic pour une démonstration de cette fonction. dim fNum as integer dim Y as time fNum = 214237582 Y = NumberToTime(fNum) Print FormatTime$(Y,"hh:mm:ss.fff tt") Voir également Fonction FormatTime$( ), Fonction GetTime() , Fonction NumberToDate( ), Fonction NumberToDateTime( ) Fonction NumCols( ) Objectif Renvoie le nombre de colonnes d'une table définie. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe NumCols( table ) table est le nom d'une table ouverte. Valeur renvoyée Entier court Description La fonction NumCols( ) renvoie le nombre de colonnes figurant dans la table ouverte indiquée. Référence 459 Fonction NumTables( ) Le nombre de colonnes renvoyé par la fonction NumCols( ) n'inclut pas la colonne spéciale connue sous le nom Objet (ou Obj en abrégé), qui fait référence aux objets graphiques joints aux tables cartographiables. De même, le nombre de colonnes renvoyé n'inclut pas la colonne spéciale connue sous le nom ID de ligne (RowID). Remarque: Si une table comprend des colonnes temporaires (en raison d'une Instruction Add Column), le nombre renvoyé par NumCols( ) inclut les colonnes temporaires. Conditions d'erreur L'erreur ERR_TABLE_NOT_FOUND (405) est générée si la table spécifiée n'est pas disponible. Exemple Dim i_counter As Integer Open Table "world" i_counter = NumCols(world) Voir également Fonction ColumnInfo( ), Fonction NumTables( ), Fonction TableInfo( ) Fonction NumTables( ) Objectif Renvoie le nombre de tables actuellement ouvertes. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe NumTables( ) Valeur renvoyée Entier court Description La fonction NumTables( ) renvoie le nombre de tables actuellement ouvertes. La table d'une carte de rues peut être composée de deux tables annexes. Par exemple, lorsque vous ouvrez la carte des rues de Washington, DC (DCWASHS), MapInfo Professional ouvre également deux tables annexes : DCWASHS1.TAB et DCWASHS2.TAB. MapInfo Professional considère cependant la table DCWASHS comme une seule table. La fenêtre Contrôle des couches affiche ainsi uniquement le nom de la table DCWASHS. De même, la fonction NumTables( ) considère la carte des rues comme une seule table, même si elle peut être composée de deux tables annexes. Exemple If NumTables( ) < 1 Then Note "You must open a table before continuing." End If 460 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Voir également Instruction Open Table, Fonction TableInfo( ), Fonction ColumnInfo( ) Fonction NumWindows( ) Objectif Renvoie le nombre de fenêtres de documents ouvertes (Carte, Données, Graphique, Mise en page). Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe NumWindows( ) Valeur renvoyée Entier court Description La fonction NumWindows( )renvoie le nombre de fenêtres Carte, Données, Graphique et Mise en page actuellement ouvertes. Le fait que les fenêtres soient réduites n'affecte pas le résultat. Pour déterminer le nombre total de fenêtres ouvertes par MapInfo Professional (y compris les ButtonPads et les fenêtres spéciales), appelez la fonction NumAllWindows( ). Exemple Dim num_open_wins As SmallInt num_open_wins = NumWindows( ) Voir également Fonction NumAllWindows( ) , Fonction WindowID( ) Fonction ObjectDistance( ) Objectif Renvoie la distance entre deux objets. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ObjectDistance( object1, object2, unit_name ) object1 et object2 sont des expressions d'objet. unit_name est une chaîne qui représente le nom d'une unité de distance. Valeur renvoyée Nombre à virgule flottante Référence 461 Fonction ObjectGeography( ) Description ObjectDistance( ) renvoie la distance minimale entre object1 et object2 à l'aide d'une méthode de calcul sphérique avec la valeur renvoyée dans unit_name. Si le calcul ne peut pas être effectué à l'aide d'une méthode de distance sphérique (par exemple, si le système de coordonnées MapBasic est non terrestre), une méthode de distance cartésienne est utilisée. Fonction ObjectGeography( ) Objectif Renvoie les informations relatives aux coordonnées ou aux angles décrivant un objet graphique. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ObjectGeography( object, attribute ) object est une expression d'objet. attribute est un code d'entier définissant le type d'informations à renvoyer. Valeur renvoyée Nombre à virgule flottante Description Le paramètre attribute contrôle le type d'informations renvoyées. Le tableau ci-dessous répertorie les différents codes que vous pouvez utiliser pour le paramètre attribute. Les codes de la colonne de gauche (OBJ_GEO_MINX, par exemple) sont définis dans MAPBASIC.DEF. Certains attributs s'appliquent uniquement à certains types d'objets. Par exemple, les arcs de cercle sont les seuls objets avec des attributs du type angle de début et angle de fin et les textes sont les seuls objets avec un attribut du type angle du texte. Si un objet ne prend pas en charge les valeurs z ou m ou si les valeurs z ou m du nœud ne sont pas définies, une erreur est renvoyée. 462 Paramètre attribute ID Valeur renvoyée (nombre à virgule flottante) OBJ_GEO_MINX 1 Coordonnée x minimum du rectangle intérieur d'encadrement d'un objet, sauf si l'objet est une ligne. Si l'objet est une ligne, renvoie la même valeur que OBJ_GEO_LINEBEGX. OBJ_GEO_MINY 2 Coordonnée y minimum du rectangle intérieur d'encadrement d'un objet. Pour les lignes, renvoie la valeur OBJ_GEO_LINEBEGY. OBJ_GEO_MAXX 3 Coordonnée x maximum du rectangle intérieur d'encadrement d'un objet. Ne s'applique pas aux objets point. Pour les lignes, renvoie la valeur OBJ_GEO_LINEENDX. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Paramètre attribute ID Valeur renvoyée (nombre à virgule flottante) OBJ_GEO_MAXY 4 Coordonnée y maximum du rectangle intérieur d'encadrement d'un objet. Ne s'applique pas aux objets point. Pour les lignes, renvoie la valeur OBJ_GEO_LINEENDY. OBJ_GEO_ARCBEGANGLE 5 Angle de début d'un objet arc OBJ_GEO_ARCENDANGLE 6 Angle de fin d'un objet arc OBJ_GEO_LINEBEGX 1 Coordonnée x du nœud de début d'un objet ligne OBJ_GEO_LINEBEGY 2 Coordonnée y du nœud de début d'un objet ligne OBJ_GEO_LINEENDX 3 Coordonnée x du nœud de fin d'un objet ligne OBJ_GEO_LINEENDY 4 Coordonnée y du nœud de fin d'un objet ligne OBJ_GEO_POINTX 1 Coordonnée x d'un objet point OBJ_GEO_POINTY 2 Coordonnée y d'un objet point OBJ_GEO_POINTZ 8 Valeur z d'un objet point OBJ_GEO_POINTM 9 Valeur m d'un objet point OBJ_GEO_ROUNDRADIUS 5 Diamètre du cercle qui définit le coin arrondi d'un objet rectangle arrondi, exprimé en unités de coordonnées (degrés, par exemple). OBJ_GEO_CENTROID 5 Renvoie un objet point pour le centroïde des régions, collections, multipoints et polylignes. Ce paramètre est le plus fréquemment utilisé avec l'instruction Alter Object. OBJ_GEO_TEXTLINEX 5 Coordonnée x de la fin de la ligne d'étiquette d'un objet texte OBJ_GEO_TEXTLINEY 6 Coordonnée y de la fin de la ligne d'étiquette d'un objet texte OBJ_GEO_TEXTANGLE 7 Angle de rotation d'un objet texte La fonction ObjectGeography( ) a été développée de manière à prendre en charge les multipoints et les collections. Ces deux types prennent en charge les attributs 1 à 4 (coordonnées du rectangle intérieur d'encadrement d'un objet). OBJ_GEO_MINX 1 Coordonnée x minimum du rectangle intérieur d'encadrement d'un objet OBJ_GEO_MINY 2 Coordonnée y minimum du rectangle intérieur d'encadrement d'un objet OBJ_GEO_MAXX 3 Coordonnée x maximum du rectangle intérieur d'encadrement d'un objet Référence 463 Fonction ObjectInfo( ) OBJ GEO_MAXY 4 Coordonnée y maximum du rectangle intérieur d'encadrement d'un objet Exemple L'exemple suivant détaille les coordonnées de début d'un objet ligne de la table City. Une instruction Set Map utilise ensuite ces coordonnées pour recentrer la fenêtre Carte. Include "MAPBASIC.DEF" Dim i_obj_type As Integer, f_x, f_y As Float Open Table "city" Map From city Fetch First From city ' at this point, the expression: ' city.obj ' represents the graphical object that's attached ' to the first record of the CITY table. i_obj_type = ObjectInfo(city.obj, OBJ_INFO_TYPE) If i_obj_type = OBJ_LINE Then f_x = ObjectGeography(city.obj, OBJ_GEO_LINEBEGX) f_y = ObjectGeography(city.obj, OBJ_GEO_LINEBEGY) Set Map Center (f_x, f_y) End If Voir également Fonction Centroid( ), Fonction CentroidX( ), Fonction CentroidY( ), Fonction ObjectInfo( ) Fonction ObjectInfo( ) Objectif Renvoie des valeurs Pen, Brush ou autres décrivant un objet graphique. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ObjectInfo( object, attribute ) object est une expression d'objet. attribute est un code d'entier définissant le type d'informations à renvoyer. Valeur renvoyée Entier court, entier, chaîne, nombre à virgule flottante, ligne (Pen), valeur de remplissage (Brush), symbole (Symbol) ou police (Font), selon le paramètre attribute OBJ_INFO_NPOLYGONS (21) est un entier qui indique le nombre de polygones (dans le cas d'une région) ou de sections (dans le cas d'une polyligne) qui constituent un objet. OBJ_INFO_NPOLYGONS+N (21) est un entier qui indique le nombre de nœuds du Nième polygone d'une région ou de la Nième section d'une polyligne. 464 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Remarque: Avec les objets région, MapInfo Professional compte le nœud de début deux fois (une fois en tant que nœud de début et une fois en tant que nœud de fin). Par exemple, ObjectInfo( ) renvoie ainsi une valeur de 4 pour une région triangulaire. Description La fonction ObjectInfo( ) renvoie des informations générales au sujet d'un aspect d'un objet graphique. Le premier paramètre doit être une valeur d'objet (le nom d'une variable Object ou une expression de table sous la forme tablename.obj, par exemple). Chaque objet dispose de plusieurs attributs. Par exemple, chaque objet dispose d'un attribut « type », indiquant si l'objet est un point, une ligne, une région, etc. La plupart des objets disposent d'attributs Pen et/ou Brush, définissant l'aspect de l'objet. La fonction ObjectInfo( ) renvoie un attribut de l'objet indiqué. L'attribut renvoyé varie en fonction de la valeur utilisée pour le paramètre attribute. Ainsi, si vous devez trouver différentes informations au sujet d'un objet, vous devez appeler la fonction ObjectInfo( ) plusieurs fois, en utilisant des valeurs d'attribut différentes à chaque fois. Le tableau ci-dessous répertorie les différents paramètres d'attribut et les valeurs renvoyées correspondantes. Paramètre attribute ID Valeur renvoyée OBJ_INFO_TYPE 1 Entier court représentant le type d'objet. La valeur renvoyée est l'une des valeurs répertoriées dans le tableau ci-dessous (OBJ_TYPE_LINE, par exemple). Cet attribut du fichier DEF est 1 (ObjectInfo( Object, 1 )). OBJ_INFO_PEN 2 Style Pen renvoyé. Cette requête est uniquement valide pour les types d'objets suivants : arc, ellipse, ligne, polyligne, cadre, région, rectangle et rectangle arrondi. OBJ_INFO_BRUSH 3 Style Brush renvoyé. Cette requête est uniquement valide pour les types d'objets suivants : ellipse, cadre, région, rectangle et rectangle arrondi. OBJ_INFO_TEXTFONT 2 Style Font renvoyé. Cette requête est uniquement valide pour les objets texte. Remarque: Si l'objet texte est inclus dans une table pouvant être cartographiée (contrairement à une fenêtre Mise en page), la police définit une taille en points de zéro et la hauteur du texte est commandée par la distance de zoom de la fenêtre Carte. OBJ_INFO_SYMBOL 2 Style Symbol renvoyé. Cette requête est uniquement valide pour les objets point. OBJ_INFO_NPNTS 20 Entier indiquant le nombre total de nœuds d'un objet polyligne ou région. Référence 465 Fonction ObjectInfo( ) Paramètre attribute ID Valeur renvoyée OBJ_INFO_SMOOTH 4 Logique indiquant si l'objet Polyligne indiqué est lissé. OBJ_INFO_FRAMEWIN 4 Entier indiquant l'identifiant de la fenêtre jointe à un objet cadre. OBJ_INFO_FRAMETITLE 6 Chaîne indiquant le titre d'un objet cadre. OBJ_INFO_NPOLYGONS 21 Entier court indiquant le nombre de polygones (dans le cas d'une région) ou de sections (dans le cas d'une polyligne) qui constituent un objet. OBJ_INFO_NPOLYGONS+N 21 Entier indiquant le nombre de nœuds du Nième polygone d'une région ou de la Nième section d'une polyligne. Remarque: Avec les objets région, MapInfo Professional compte le nœud de début deux fois (une fois en tant que nœud de début et une fois en tant que nœud de fin). Par exemple, ObjectInfo( ) renvoie ainsi une valeur de 4 pour une région triangulaire. 466 OBJ_INFO_TEXTSTRING 3 Chaîne représentant le corps d'un objet texte. Si l'objet dispose de plusieurs lignes de texte, la chaîne inclut des sauts de ligne intégrés (valeurs Chr$( 10 )). OBJ_INFO_TEXTSPACING 4 Valeur à virgule flottante de 1, 1,5 ou 2 représentant l'espacement des lignes d'un objet texte. OBJ_INFO_TEXTJUSTIFY 5 Entier court représentant la justification d'un objet texte : 0 = gauche, 1 = centre, 2 = droite. OBJ_INFO_TEXTARROW 6 Entier court représentant le style de ligne associé à un objet texte : 0 = aucun trait, 1 = trait simple, 2 = flèche. OBJ_INFO_FILLFRAME 7 Valeur logique : TRUE si l'objet est un cadre contenant une fenêtre Carte et que le paramètre « Fill Frame With Map » est activé pour le cadre. OBJ_INFO_NONEMPTY 11 Valeur logique : renvoie TRUE si l'objet multipoint dispose de nœuds et FALSE si l'objet est vide. OBJ_INFO_REGION 8 Valeur d'objet représentant la partie région d'un objet collection. Si l'objet collection ne dispose d'aucune région, une région vide est renvoyée. Cette requête est uniquement valide pour les objets collection. OBJ_INFO_PLINE 9 Valeur d'objet représentant la partie polyligne d'un objet collection. Si l'objet collection ne dispose d'aucune polyligne, un objet polyligne vide est renvoyé. Cette requête est uniquement valide pour les objets collection. MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Paramètre attribute ID Valeur renvoyée OBJ_INFO_MPOINT 10 Valeur d'objet représentant la partie multipoint d'un objet collection. Si l'objet collection ne dispose d'aucun multipoint, un objet multipoint vide est renvoyé. Cette requête est uniquement valide pour les objets collection. OBJ_INFO_Z_UNIT_SET 12 Valeur logique indiquant si les unités z sont définies. OBJ_INFO_Z_UNIT 13 Résultat sous forme de chaîne qui indique les unités de distance utilisées pour les valeurs z. Renvoie une chaîne vide si les unités ne sont pas spécifiées. OBJ_INFO_HAS_Z 14 Valeur logique indiquant si l'objet dispose de valeurs z. OBJ_INFO_HAS_M 15 Valeur logique indiquant si l'objet dispose de valeurs m. Les codes de la colonne de gauche (OBJ_INFO_TYPE, par exemple) sont définis dans le fichier de définitions MapBasic, MAPBASIC.DEF. Votre programme doit inclure MAPBASIC.DEF si vous souhaitez appeler la fonction ObjectInfo( ). Chaque attribut graphique s'applique uniquement à certains types d'objets graphiques. Par exemple, les objets point sont les seuls objets avec des attributs Symbol et les objets texte sont les seuls avec des attributs Font. Par conséquent, la fonction ObjectInfo( ) ne peut renvoyer tous les types de paramètres attribute de chaque type d'objet. Si vous indiquez OBJ_INFO_TYPE en tant que paramètre attribute, la fonction ObjectInfo( ) renvoie un des types d'objets répertoriés dans le tableau ci-dessous. Table 5: Valeurs OBJ_INFO_TYPE Valeurs OBJ_INFO_TYPE ID Type d'objet correspondant OBJ_TYPE_ARC 1 Objet arc OBJ_TYPE_ELLIPSE 2 Objets ellipse/cercle OBJ_TYPE_LINE 3 Objet ligne OBJ_TYPE_PLINE 4 Objet polyligne OBJ_TYPE_POINT 5 Objet point OBJ_TYPE_FRAME 6 Objet cadre de fenêtre Mise en page OBJ_TYPE_REGION 7 Objet région OBJ_TYPE_RECT 8 Objet rectangle OBJ_TYPE_ROUNDRECT 9 Objet rectangle arrondi OBJ_TYPE_TEXT 10 Objet texte OBJ_TYPE_MULTIPOINT 11 Objet point collection Référence 467 Fonction ObjectLen( ) Valeurs OBJ_INFO_TYPE ID Type d'objet correspondant OBJ_TYPE_COLLECTION 12 Objet texte collection Exemple Include "MAPBASIC.DEF" Dim counter, obj_type As Integer Open Table "city" Fetch First From city ' at this point, the expression: city.obj ' represents the graphical object that's attached ' to the first record of the CITY table. obj_type = ObjectInfo(city.obj, OBJ_INFO_TYPE) Do Case obj_type Case OBJ_TYPE_LINE Note "First object is a line." Case OBJ_TYPE_PLINE Note "First object is a polyline..." counter = ObjectInfo(city.obj, OBJ_INFO_NPNTS) Note " ... with " + Str$(counter) + " nodes." Case OBJ_TYPE_REGION Note "First object is a region..." counter = ObjectInfo(city.obj, OBJ_INFO_NPOLYGONS) Note ", made up of " + Str$(counter) + " polygons..." counter = ObjectInfo(city.obj, OBJ_INFO_NPOLYGONS+1) Note "The 1st polygon has" + Str$(counter) + " nodes" End Case Voir également Instruction Alter Object, Clause Brush, Clause Font, Fonction ObjectGeography( ), Clause Pen, Clause Symbol Fonction ObjectLen( ) Objectif Renvoie la longueur géographique d'un objet ligne ou polyligne. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ObjectLen( expr, unit_name ) expr est une expression d'objet. unit_name est une chaîne qui représente le nom d'une unité de distance (par exemple, « mi » pour miles). Valeur renvoyée Nombre à virgule flottante 468 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Description La fonction ObjectLen( ) renvoie la longueur d'une expression d'objet. Seuls les objets ligne et polyligne possèdent des valeurs de longueur supérieures à zéro. Pour mesurer la circonférence d'un rectangle, d'une ellipse ou d'une région, utilisez la fonction Perimeter( ). La fonction ObjectLen( ) renvoie l'unité de mesure de la longueur indiquée par le paramètre unit_name. Par exemple, pour obtenir une longueur en kilomètres, attribuez la valeur « km » au paramètre unit_name. Pour obtenir la liste des noms d'unités valides, reportez-vous à la section Instruction Set Distance Units. MapInfo Professional effectue, pour la plus grande partie, un calcul cartésien ou sphérique. Généralement, un calcul sphérique est effectué sauf si les données proviennent d'un système de coordonnées non terrestre, auquel cas un calcul cartésien a lieu. Exemple Dim geogr_length As Float Open Table "streets" Fetch First From streets geogr_length = ObjectLen(streets.obj, "mi") ' geogr_length now represents the length of the ' street segment, in miles Voir également Fonction Distance( ), Fonction Perimeter( ) , Instruction Set Distance Units Fonction ObjectNodeHasM( ) Objectif Renvoie TRUE si le nœud d'un objet région, polyligne ou multipoint dispose d'une valeur m. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ObjectNodeHasM( object, polygon_num, node_num ) object est une expression d'objet. polygon_num est une valeur entière positive définissant le polygone ou la section à interroger. Ce paramètre n'est pas pris en compte pour les objets multipoint (il est utilisé pour les régions et les polylignes). node_num est une valeur entière positive définissant le nœud à lire. Valeur renvoyée Logique Description La fonction ObjectNodeHasM( ) renvoie TRUE si le nœud d'un objet région, polyligne ou multipoint dispose d'une valeur m. Référence 469 Fonction ObjectNodeHasZ( ) Le paramètre polygon_num doit disposer d'une valeur de 1 (un) ou plus. Il définit le polygone (dans le cadre de l'interrogation d'une région) ou la section (dans le cadre de l'interrogation d'une polyligne) à interroger. Appelez la fonction ObjectInfo( ) pour déterminer le nombre de polygones ou de sections d'un objet. La fonction ObjectNodeHasM( ) prend en charge les objets multipoint et renvoie TRUE si un nœud d'un objet multipoint dispose d'une valeur m. Le paramètre node_num doit disposer d'une valeur de 1 (un) ou plus. Il permet à MapBasic de savoir quel nœud de l'objet doit être interrogé. Vous pouvez utiliser la fonction ObjectInfo( ) pour déterminer le nombre de nœuds d'un objet. Si l'objet ne prend pas en charge les valeurs m ou si aucune valeur m n'a été définie pour le nœud, la valeur FALSE est renvoyée. Exemple L'exemple suivant interroge le premier objet graphique de la table Routes. Si le premier objet est une polyligne, le programme interroge le premier nœud de l'objet afin de déterminer s'il dispose de coordonnées z ou de valeurs m et interroge les coordonnées z et les valeurs m du premier nœud de la polyligne. Dim i_obj_type As SmallInt, z, m As Float hasZ, hasM as Logical Open Table "routes" Fetch First From routes ' at this point, the expression: ' routes.obj ' represents the graphical object that's attached ' to the first record of the routes table. i_obj_type = ObjectInfo(routes.obj, OBJ_INFO_TYPE) If i_obj_type = OBJ_PLINE Then ' ... then the object is a polyline... If (ObjectNodeHasZ(routes.obj, 1, 1)) Then z = ObjectNodeZ(routes.obj, 1, 1) ' read z-coordinate End If If (ObjectNodeHasM(routes.obj, 1, 1)) Then m = ObjectNodeM(routes.obj, 1, 1) ' read m-value End If End If Voir également Requête dans des objets carte, Fonction ObjectInfo( ) Fonction ObjectNodeHasZ( ) Objectif Renvoie TRUE si le nœud d'un objet région, polyligne ou multipoint dispose d'une coordonnée z. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ObjectNodeHasZ( object, polygon_num, node_num ) object est une expression d'objet. 470 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z polygon_num est une valeur entière positive définissant le polygone ou la section à interroger. Ce paramètre n'est pas pris en compte pour les objets multipoint (il est utilisé pour les régions et les polylignes). node_num est une valeur entière positive définissant le nœud à lire. Valeur renvoyée Logique Description La fonction ObjectNodeHasZ( ) renvoie TRUE si le nœud d'un objet région, polyligne ou multipoint dispose d'une coordonnée z. Le paramètre polygon_num doit disposer d'une valeur de 1 (un) ou plus. Il définit le polygone (dans le cadre de l'interrogation d'une région) ou la section (dans le cadre de l'interrogation d'une polyligne) à interroger. Appelez la fonction ObjectInfo( ) pour déterminer le nombre de polygones ou de sections d'un objet. La fonction ObjectNodeHasZ( ) prend en charge les objets multipoint et renvoie TRUE si un nœud d'un objet multipoint dispose d'une coordonnée z. Le paramètre node_num doit disposer d'une valeur de 1 (un) ou plus. Il permet à MapBasic de savoir quel nœud de l'objet doit être interrogé. Vous pouvez utiliser la fonction ObjectInfo( ) pour déterminer le nombre de nœuds d'un objet. Si le paramètre object ne prend pas en charge les coordonnées z ou si aucune coordonnée z n'a été définie pour le nœud, la valeur FALSE est renvoyée. Exemple L'exemple suivant interroge le premier objet graphique de la table Routes. Si le premier objet est une polyligne, le programme interroge le premier nœud de l'objet afin de déterminer s'il dispose de coordonnées z ou de valeurs m et interroge les coordonnées z et les valeurs m du premier nœud de la polyligne. Dim i_obj_type As SmallInt, z, m As Float hasZ, hasM as Logical Open Table "routes" Fetch First From routes ' at this point, the expression: ' routes.obj ' represents the graphical object that's attached ' to the first record of the routes table. i_obj_type = ObjectInfo(routes.obj, OBJ_INFO_TYPE) If i_obj_type = OBJ_PLINE Then ' ... then the object is a polyline... If (ObjectNodeHasZ(routes.obj, 1, 1)) Then z = ObjectNodeZ(routes.obj, 1, 1) ' read z-coordinate End If If (ObjectNodeHasM(routes.obj, 1, 1)) Then m = ObjectNodeM(routes.obj, 1, 1) ' read m-value End If End If Voir également Requête dans des objets carte, Fonction ObjectInfo( ) Référence 471 Fonction ObjectNodeM( ) Fonction ObjectNodeM( ) Objectif Renvoie la valeur m du nœud d'un objet région, polyligne ou multipoint. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ObjectNodeM( object, polygon_num, node_num ) object est une expression d'objet. polygon_num est une valeur entière positive définissant le polygone ou la section à interroger. Ce paramètre n'est pas pris en compte pour les objets multipoint (il est utilisé pour les régions et les polylignes). node_num est une valeur entière positive définissant le nœud à lire. Valeur renvoyée Nombre à virgule flottante Description La fonction ObjectNodeM( ) renvoie la valeur m du nœud d'un objet région, polyligne ou multipoint. Le paramètre polygon_num doit disposer d'une valeur de 1 (un) ou plus. Il définit le polygone (dans le cadre de l'interrogation d'une région) ou la section (dans le cadre de l'interrogation d'une polyligne) à interroger. Appelez la fonction ObjectInfo( ) pour déterminer le nombre de polygones ou de sections d'un objet. La fonction ObjectNodeM( ) prend en charge les objets multipoint et renvoie la valeur m du nœud d'un objet multipoint. Le paramètre node_num doit disposer d'une valeur de 1 (un) ou plus. Il permet à MapBasic de savoir quel nœud de l'objet doit être interrogé. Vous pouvez utiliser la fonction ObjectInfo( ) pour déterminer le nombre de nœuds d'un objet. Si un objet ne prend pas en charge les valeurs m ou si aucune valeur m n'est définie pour le nœud, une erreur est renvoyée. Exemple L'exemple suivant interroge le premier objet graphique de la table Routes. Si le premier objet est une polyligne, le programme interroge les coordonnées z et les valeurs m du premier nœud de la polyligne. Dim i_obj_type As SmallInt, z, m As Float Open Table "routes" Fetch First From routes ' at this point, the expression: ' routes.obj ' represents the graphical object that's attached ' to the first record of the routes table. i_obj_type = ObjectInfo(routes.obj, OBJ_INFO_TYPE) 472 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z If i_obj_type = OBJ_PLINE Then ' ... then the object is a polyline... z = ObjectNodeZ(routes.obj, 1, 1) ' read z-coordinate m = ObjectNodeM(routes.obj, 1, 1) ' read m-value End If Voir également Requête dans des objets carte, Fonction ObjectInfo( ) Fonction ObjectNodeX( ) Objectif Renvoie la coordonnée x du nœud d'un objet région ou polyligne. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ObjectNodeX( object, polygon_num, node_num ) object est une expression d'objet. polygon_num est une valeur entière positive définissant le polygone ou la section à interroger. Ce paramètre n'est pas pris en compte pour les objets multipoint (il est utilisé pour les régions et les polylignes). node_num est une valeur entière positive définissant le nœud à lire. Valeur renvoyée Nombre à virgule flottante Description La fonction ObjectNodeX( ) renvoie la valeur x d'un nœud spécifique d'un objet région ou polyligne. La fonction ObjectNodeY( ) correspondante renvoie la valeur de la coordonnée y. Le paramètre polygon_num doit disposer d'une valeur de 1 (un) ou plus. Il définit le polygone (dans le cadre de l'interrogation d'une région) ou la section (dans le cadre de l'interrogation d'une polyligne) à interroger. Appelez la fonction ObjectInfo( ) pour déterminer le nombre de polygones ou de sections d'un objet. La fonction ObjectNodeX( ) prend en charge les objets multipoint et renvoie la coordonnée x du nœud d'un objet multipoint. Le paramètre node_num doit disposer d'une valeur de 1 (un) ou plus. Il permet à MapBasic de savoir quel nœud de l'objet doit être interrogé. Vous pouvez utiliser la fonction ObjectInfo( ) pour déterminer le nombre de nœuds d'un objet. La fonction ObjectNodeX( ) renvoie la valeur basée sur le système de coordonnées actuellement utilisé par MapBasic. Par défaut, MapBasic utilise un système de coordonnées Longitude/Latitude. Pour plus d'informations sur les systèmes de coordonnées, reportez-vous à la section Instruction Set CoordSys. Référence 473 Fonction ObjectNodeY( ) Exemple L'exemple suivant interroge le premier objet graphique de la table Routes. Si le premier objet est une polyligne, le programme interroge les coordonnées x et y du premier nœud de la polyligne, puis crée un objet point à l'emplacement du nœud de début de la polyligne. Dim i_obj_type As SmallInt, x, y As Float, new_pnt As Object Open Table "routes" Fetch First From routes ' at this point, the expression: ' routes.obj ' represents the graphical object that's attached ' to the first record of the routes table. i_obj_type = ObjectInfo(routes.obj, OBJ_INFO_TYPE) If i_obj_type = OBJ_PLINE Then ' ... then the object is a polyline... x = ObjectNodeX(routes.obj, 1, 1) ' read longitude y = ObjectNodeY(routes.obj, 1, 1) ' read latitude Create Point Into Variable new_pnt (x, y) Insert Into routes (obj) Values (new_pnt) End If Voir également Instruction Alter Object, Fonction ObjectGeography( ), Fonction ObjectInfo( ), Fonction ObjectNodeY( ), Instruction Set CoordSys Fonction ObjectNodeY( ) Objectif Renvoie la coordonnée y du nœud d'un objet région ou polyligne. Vous pouvez appeler cette fonction à partir de la fenêtre MapBasic dans MapInfo Professional. Syntaxe ObjectNodeY( object, polygon_num, node_num ) object est une expression d'objet. polygon_num est une valeur entière positive définissant le polygone ou la section à interroger. Ce paramètre n'est pas pris en compte pour les objets multipoint (il est utilisé pour les régions et les polylignes). node_num est une valeur entière positive définissant le nœud à lire. Valeur renvoyée Nombre à virgule flottante Description La fonction ObjectNodeY( ) renvoie la valeur y d'un nœud spécifique d'un objet région ou polyligne. Pour plus d'informations, reportez-vous à la section Fonction ObjectNodeX( ). 474 MapBasic 12.0 Chapitre 3: Référence du langage MapBasic de A à Z Exemple Reportez-vous à la section Fonction ObjectNodeX( ). Voir également Instruction Alter Object, Fonction ObjectGeography( ), Fonction ObjectInfo( ), Instruction Set CoordSys Fonction ObjectNodeZ( ) Objectif Renvoie la valeur z du nœud d'un objet région, polyligne ou multipoint. Syntaxe ObjectNodeZ( object, polygon_num, node_num ) object est une expression d'objet. polygon_num est une valeur entière positive définissant le polygone ou la section à interroger. Ce paramètre n'est pas pris en compte pour les objets multipoint (il est utilisé pour les régions et les polylignes). node_num est une valeur entière positive définissant le nœud à lire. Valeur renvoyée Nombre à virgule flottante Description La fonction ObjectNodeZ( ) renvoie la valeur z du nœud d'un objet région, polyligne ou multipoint. Le paramètre polygon_num doit disposer d'une valeur de 1 (un) ou plus. Il définit le polygone (dans le cadre de l'interrogation d'une région) ou la section (dans le cadre de l'interrogation d'une polyligne) à interroger. Appelez la fonction ObjectInfo( ) pour déterminer le nombre de polygones ou de sections d'un objet. La fonction ObjectNodeZ( ) prend en charge les objets multipoint et renvoie la coordonnée z du nœud d'un objet multipoint. Le paramètre node_num doit disposer d'une valeur de 1 (un) ou plus. Il permet à MapBasic de savoir quel nœud de l'objet doit être interrogé. Vous pouvez utiliser la fonction ObjectInfo( ) pour déterminer le nombre de nœuds d'un objet. Si un objet ne prend pas en charge les valeurs z ou si aucune valeur z n'est définie pour le nœud, une erreur est renvoyée. Exemple L'exemple suivant interroge le premier objet graphique de la table Routes. Si le premier objet est une polyligne, le programme interroge les coordonnées z et les valeurs m du premier nœud de la polyligne. Dim i_obj_type As SmallInt, z, m As Float Open Table "routes" Référence 475 Instruction Objects Check Fetch First From routes ' at this point, the expression: ' routes.obj ' represents the graphical object that's attached ' to the first record of the routes table. i_obj_type = ObjectInfo(routes.obj, OBJ_INFO_TYPE) If i_obj_type = OBJ_PLINE Then ' ... then the object is a polyline... z = ObjectNodeZ(routes.obj, 1, 1) ' read z-coordinate m = ObjectNodeM(routes.obj, 1, 1) ' read m-value End If Voir également Requête dans des objets carte, Fonction ObjectInfo( ) Instruction Objects Check Objectif Vérifie qu'une table donnée ne présente pas de données incorrectes ou éventuellement incorrectes, qui pourraient générer des problèmes et/ou des résultats incorrects lors de différentes opérations. Vous pouvez exécuter cette instruction à partir de la fenêtre MapBasic de MapInfo Professional. Syntaxe Objects Check From tablename Into Table tablename [ SelfInt [ Symbol Clause] ] [ Overlap [ Pen Clause ] [ Brush Clause ] ] [ Gap areavalue [ Units Units ] [ Pen Clause ] [ Brush Clause ] ] ] tablename est une chaîne représentant le nom d'une table. Clause est une expression. Units est la valeur d'une zone. areavalue est une valeur au-delà de laquelle tout écart potentiel supérieur à cette valeur de zone d'écart est ignoré et non signalé. Description Objects Check vérifie que la table indiquée dans la clause From ne présente pas de données incorrectes qui pourraient générer des problèmes ou des résultats incorrects lors de différentes opérations. Seuls les objets région peuvent être vérifiés. Il est également possible de vérifier que les objets région ne présentent pas d'auto-intersections, de zones de chevauchements et d'écarts. Les auto-intersections peuvent poser problème lors de différents calculs, notamment le calcul de la zone d'une région. Elles peuvent également entraîner