#1 Wed 24 March 2010 14:51
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
[MapBasic 9.5] Transformation fichier .mbo en .mbx
Bonjour,
J'ai un souci dans l'exécution d'une application que j'ai créer sur MapBasic.
Lorsque je fais "Ctrl + K", il me l'enregistre en .mbo au lieu de .mbx, ce qui fait que lorsque je fais "Ctrl+U", il me met
"could not find mapbasic application : essai_MEP.MBX"
Je souhaiterais donc savoir d'où cela vient et comment faire pour obtenir un .mbx????????
Merci pour tous.
Cordialement
Hors ligne
#2 Wed 24 March 2010 14:55
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic 9.5] Transformation fichier .mbo en .mbx
Salut,
La Commande "compiler d'aprés un fichier" puis aller chercher le .mb et celà devrait faire l'affaire , non?
A+
Joël
Dernière modification par Spacejo (Wed 24 March 2010 14:55)
Hors ligne
#3 Wed 24 March 2010 15:22
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
Re: [MapBasic 9.5] Transformation fichier .mbo en .mbx
Justement c'est ce que je fais avec la commande "Ctrl+K", mais le problème c'est qu'il me le met en .mbo et donc aprés je ne peux pas l'activer dans le gestionnaire d'outil.
J'ai essayé avec un autre script et cela fonctionne correctement.
Est-ce qu'il pourrait y avoir quelque chose dans le script qui ne lui plait pas et qui l'oblige dans à le mettre en .mbo.
Je fais appel aux spécialistes. J'ai besoin d'aide........
Hors ligne
#4 Wed 24 March 2010 15:31
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic 9.5] Transformation fichier .mbo en .mbx
Est ce que lors de ta déclaration "sub main" tu fermes bien à la fin avec un end sub?
Peux t'on voir ton code?
Je pense qu'une de tes procédures ne dois pas être fermée.
Dernière modification par Spacejo (Wed 24 March 2010 15:36)
Hors ligne
#5 Wed 24 March 2010 15:36
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
Re: [MapBasic 9.5] Transformation fichier .mbo en .mbx
Oui je ferme bien avec End sub.
Le voici, il est trés long...
INCLUDE "MAPBASIC.DEF"
'---------------------------------------------------------------------------
'--- déclaration des procédures
'---------------------------------------------------------------------------
DECLARE SUB main
DECLARE SUB barreoutil
DECLARE SUB ouvrirlayout
DECLARE SUB FORmecarte
DECLARE FUNCTION orientation(byval numfenetre as INTEGER) as INTEGER
DECLARE SUB listefenetre
DECLARE SUB framecarte
DECLARE SUB bordure
DECLARE SUB framelegENDe
DECLARE SUB logos
DECLARE SUB source
DECLARE SUB nord
DECLARE SUB echelle
DECLARE SUB dessinerechelle
DECLARE SUB applic
DECLARE SUB annul
DECLARE SUB date
DECLARE SUB centrertitre
DECLARE SUB ViewSelection
DECLARE SUB impression
DECLARE SUB fermer
DECLARE SUB latotale
'---------------------------------------------------------------------------
'--- déclaration des variables global
'---------------------------------------------------------------------------
DIM orientchoisi as SMALLINT
DIM i, idmap(), numtable, rapport, NumWin, nomcarte as INTEGER
DIM nommap() as STRING
DIM LarCm as FLOAT
DIM cadre as OBJECT
'---------------------------------------------------------------------------
'--- MAIN
'---------------------------------------------------------------------------
SUB main
call barreoutil
END SUB
'---------------------------------------------------------------------------
'--- LA TOTALE
'---------------------------------------------------------------------------
SUB latotale
call ouvrirlayout
call FormeCarte
call framecarte
call bordure
call source
call nord
call date
call logos
END SUB
'---------------------------------------------------------------------------
'--- lister les fenetres ouvertes dans MI
'---------------------------------------------------------------------------
SUB listefenetre
'redimentionne le tableau des ID au nombre de fenetre
reDIM idmap(numwindows())
'redimentionne le tableau des noms de fentre au nombre de fenetre
reDIM nommap(numwindows())
FOR i = 1 to numwindows()
'stock dans un tableau l'identifiant des fenetres ouvertes
idmap(i) = WindowID(i)
'stock dans un tableau le nom des fenetres ouvertes
nommap(i) = WindowInfo(i, WIN_INFO_NAME)
NEXT
END SUB
'--------------------------------------------------------------------------
'--- utilisation de la commande permettant de zoomer sur l'objet sélectionné et center dans une MEP
'---------------------------------------------------------------------------
SUB ViewSelection
DIM maTable AS string
DIM Objet AS Object
'on crée une table temporaire à partir du polygone sélectionné
SELECT * FROM Selection INTO monPolygone
'on crée une copie de la table d'où le polygone est sélectionné
maTable = selectioninfo(SEL_INFO_TABLENAME)
'on défini le polygone en pochoir
Fetch first from monPolygone
SET Map Clipping Object monPolygone.obj
'on rajoute une couche avec le polygone sélectionné
Add Map Window FrontWindow() Layer monPolygone
'SelectionInfo(2)
'on zoome sur cette couche
SET Map Window FrontWindow() Zoom Entire Layer monPolygone
'on supprime la couche avec le polygone sélectionné
Remove Map Window FrontWindow() Layer monPolygone
'on ferme la table monPolygone
Close table monPolygone
END SUB
'---------------------------------------------------------------------------
'--- mise en place des logos ATTENTION : mettre le chemin propre à chaque CRPF
'---------------------------------------------------------------------------
SUB logos
DIM ddt_logo, layoutID, i as INTEGER
DIM bool1 as LOGICAL
'recupère l'ID de la fenetre layout
layoutID = WindowInfo(frontwindow(), WIN_INFO_WINDOWID)
'parametre le layout avec des unité en cm
set coordsys Layout units "cm"
'ouvre les tables des logos
open table "C:\Documents and Settings\cyril.chat.DDE-79\Bureau\Stage\Doc_WOR\Bloc_Marque_DDT.TAB"
'test si le logos est déja ouvert et mappé
bool1 = FALSE
FOR i = 1 to numWindows()
IF windowinfo(i , WIN_INFO_NAME) = "ddt_logo carte" THEN bool1 = TRUE END IF
NEXT
'si pas ouvert alors on le map en configurant sa fenetre
IF bool1 = FALSE THEN map from Bloc_Marque_DDT width 2 units "cm" height 6 units "cm" min END IF
'on récupère l'ID de la fentre logo
FOR i = 1 to numWindows()
IF (windowinfo(i, WIN_INFO_TYPE) = WIN_MAPPER) THEN
IF windowinfo(i , WIN_INFO_NAME) = "ddt_logo carte" THEN
ddt_logo = windowinfo(i , WIN_INFO_WINDOWID)
END IF
END IF
NEXT
'crée le cadre logo dans la mise en page en les placant suivant l'orientation de la MEP
IF orientation(frontwindow()) = 1 THEN 'suivant l'orientation choisit par l'utilisateur
create Frame into window layoutID (0.67, 0.67) (4.95, 4.95) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_Marque_DDT
ELSE
create Frame into window layoutID (0.7, 0.7) (4.30, 4.35) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_Marque_DDT
END IF
END SUB
'---------------------------------------------------------------------------
'--- mise à l'echelle de la fenetre MEP par rapport à la fenetre carte
'---------------------------------------------------------------------------
SUB echelle
DIM ColObj as alias
DIM LarZoom as FLOAT, UnitMap as STRING
'test si je suis dans une fenetre Layout
IF WindowInfo(Frontwindow(),WIN_INFO_TYPE)<>WIN_LAYOUT THEN
Note "Sélectionner un et un seul cadre de carte sur une mise en page"
exit SUB
END IF
'parametre le layout et la Map avec des unités de distance en cm
set coordsys layout units "cm"
set map distance units "cm"
'test si un seul object dans le layout est selectionné
IF SelectionInfo(SEL_INFO_NROWS)<>1 THEN
Note "Sélectionner un et un seul cadre de carte"
exit SUB
END IF
'recupère le nom de l'objet selectionné dans le Layout
ColObj=SelectionInfo(SEL_INFO_SELNAME)+".obj"
cadre=ColObj
'test si l'objet selectionné est bien un cadre
IF ObjectInfo(cadre,OBJ_INFO_TYPE)<>OBJ_TYPE_FRAME THEN
note "la sélection n'est pas un cadre"
exit SUB
END IF
'test si l'objet contenu dans le cadre est bien une fentre carte
IF WindowInfo(ObjectInfo(cadre,OBJ_INFO_FRAMEWIN),WIN_INFO_TYPE)<>WIN_MAPPER THEN
note "la sélection n'est pas un cadre de carte"
exit SUB
END IF
'test si l'option plein cadre est cochée dans les options du Frame
IF ObjectInfo(cadre,OBJ_INFO_FILLFRAME)=False THEN
note "Double-cliquez sur la cadre et cochez l'option plein cadre"
exit SUB
END IF
'recupère l'ID du Frame dans la fenetre Layout
NumWin=ObjectInfo(cadre,OBJ_INFO_FRAMEWIN)
'recupère le format des unités de distance dans la fentre carte
UnitMap=MapperInfo(NumWin,MAPPER_INFO_DISTUNITS)
'configure les unités de distance dans la fenetre carte
Set distance units MapperInfo(NumWin,MAPPER_INFO_DISTUNITS)
'recupère le zoom de la fenetre carte
LarZoom=MapperInfo(NumWin,MAPPER_INFO_ZOOM)
print larzoom
'recupère la taille de la fenetre carte
LarCm=ObjectGeography(cadre,OBJ_GEO_MAXX)-ObjectGeography(cadre,OBJ_GEO_MINX)
print larcm
'calcul le rapport entre le zoom et la largeur de la fentre
Rapport=LarZoom/LarCm
print rapport
'création de la boite de dialog pour la mise à l'echelle
Dialog title "Calcul de l'échelle"
Control Statictext Title "Saisissez l'échelle recherchée : 1" + "cm" + " = " Position 5,10
Control EditText Id 10 Value str$(Rapport) width 50 Position 130,7
Control Statictext Title UnitMap position 185,10
Control Button title "Appliquer à la carte" Calling applic
Control Button Title "Annuler Appliquer" Calling Annul
Control Button Title "Dessiner" calling dessinerechelle
Control cancelButton title "Fermer" calling fermer
END SUB
'---------------------------------------------------------------------------
'--- Bouton fermer du dialog Echelle
'---------------------------------------------------------------------------
SUB fermer
'ferme l'application
exit sub
end sub
'---------------------------------------------------------------------------
'--- Dessine une echelle graphique de 4 cm de long
'---------------------------------------------------------------------------
SUB dessinerechelle
DIM distmid, distfin as FLOAT
DIM distfin1, distmid1 as STRING
DIM bool as LOGICAL
'calcul de l'echelle à afficher
IF orientation(frontwindow()) = 1 THEN
bool = false
distfin = ROUND((Val(ReadControlValue(10))/100*4)/1000,1)
distmid = ROUND(distfin/2,0.01)
'si l'echelle est inférieure à 1Km ou supérieure
IF distfin < 1 THEN
distfin1 = str$(ROUND((Val(ReadControlValue(10))/100*4)/1000,0.1)*1000)+" m"
distmid1 = str$(val(distfin1)/2)
bool = true
ELSE
distfin1 = str$(distfin)+" km"
distmid1 = str$(distfin/2)
END IF
'verifie si bien dans une fentre Layout
IF (WindowInfo(frontwindow( ), WIN_INFO_TYPE) = WIN_LAYOUT) THEN
IF bool = false THEN
'cas des echelle a afficher en metre
'gestion de la longueur de la valeur intermediaire a afficher
IF len(distmid1) = 1 THEN
create text into window frontwindow( ) distmid1 (4.9, 37.1) (6, 38) Font("Arial", 0, 10, BLACK)
ELSEIF len(distmid1) = 2 THEN
create text into window frontwindow( ) distmid1 (4.8, 37.1) (6, 38) Font("Arial", 0, 10, BLACK)
ELSEIF len(distmid1) = 3 THEN
create text into window frontwindow( ) distmid1 (4.74, 37.1) (6, 38) Font("Arial", 0, 10, BLACK)
END IF
'gestion de la longueur de la valeur max a afficher
IF len(distfin1) = 4 THEN
create text into window frontwindow( ) distfin1 (6.87, 37.1) (8, 38) Font("Arial", 0, 10, BLACK)
ELSEIF len(distfin1) = 5 THEN
create text into window frontwindow( ) distfin1 (6.8, 37.1) (8, 38) Font("Arial", 0, 10, BLACK)
ELSEIF len(distfin1) = 6 THEN
create text into window frontwindow( ) distfin1 (6.7, 37.1) (8, 38) Font("Arial", 0, 10, BLACK)
END IF
ELSE
'cas des echelle a afficher en kilometre
'gestion de la longueur de la valeur intermediaire a afficher
IF len(distmid1) = 3 THEN
create text into window frontwindow( ) distmid1 (4.7, 37.1) (6, 38) Font("Arial", 0, 10, BLACK)
ELSEIF len(distmid1) = 2 THEN
create text into window frontwindow( ) distmid1 (4.79, 37.1) (6, 38) Font("Arial", 0, 10, BLACK)
ELSE
note "Echelle trop grande !!"
exit SUB
END IF
'gestion de la longueur de la valeur max a afficher
IF len(distfin1) = 4 THEN
create text into window frontwindow( ) distfin1 (6.8, 37.1) (8, 38) Font("Arial", 0, 10, BLACK)
ELSEIF len(distfin1) = 5 THEN
create text into window frontwindow( ) distfin1 (6.67, 37.1) (8, 38) Font("Arial", 0, 10, BLACK)
ELSE
note "Echelle trop grande !!"
exit SUB
END IF
END IF
'dessine la barre graphique d'echelle
create text into window frontwindow( ) "0" (2.9, 37.1) (4, 37.5) Font("Arial", 0, 10, BLACK)
create rect into window frontwindow( ) (3, 37.5) (4, 37.7) Pen(1,2,0) brush(2, 0, 16777215)
create rect into window frontwindow( ) (3, 37.7) (4, 37.9) Pen(1,2,0) brush(2, 16777215, 16777215)
create rect into window frontwindow( ) (4, 37.5) (5, 37.7) Pen(1,2,0) brush(2, 16777215, 16777215)
create rect into window frontwindow( ) (4, 37.7) (5, 37.9) Pen(1,2,0) brush(2, 0, 16777215)
create rect into window frontwindow( ) (5, 37.5) (7, 37.7) Pen(1,2,0) brush(2, 0, 16777215)
create rect into window frontwindow( ) (5, 37.7) (7, 37.9) Pen(1,2,0) brush(2, 16777215, 16777215)
ELSE
note " Il ne s'agit pas d'une fenêtre mise en page !"
END IF
ELSE
bool = false
distfin = ROUND((Val(ReadControlValue(10))/100*4)/1000,1)
distmid = ROUND(distfin/2,0.01)
'si l'echelle est inférieure à 1Km ou supérieure
IF distfin < 1 THEN
distfin1 = str$(ROUND((Val(ReadControlValue(10))/100*4)/1000,0.1)*1000)+" m"
distmid1 = str$(val(distfin1)/2)
bool = true
ELSE
distfin1 = str$(distfin)+" km"
distmid1 = str$(distfin/2)
END IF
'verifie si bien dans une fentre Layout
IF (WindowInfo(frontwindow( ), WIN_INFO_TYPE) = WIN_LAYOUT) THEN
'cas des echelle a afficher en metre
'gestion de la longueur de la valeur intermediaire a afficher
IF bool = false THEN
IF len(distmid1) = 1 THEN
create text into window frontwindow( ) distmid1 (37.9, 24.9) (40, 26) Font("Arial", 0, 10, BLACK)
ELSEIF len(distmid1) = 2 THEN
create text into window frontwindow( ) distmid1 (37.75, 24.9) (40, 26) Font("Arial", 0, 10, BLACK)
ELSEIF len(distmid1) = 3 THEN
create text into window frontwindow( ) distmid1 (37.74, 24.9) (40, 26) Font("Arial", 0, 10, BLACK)
END IF
'gestion de la longueur de la valeur max a afficher
IF len(distfin1) = 4 THEN
create text into window frontwindow( ) distfin1 (39.88, 24.9) (41.4, 26) Font("Arial", 0, 10, BLACK)
ELSEIF len(distfin1) = 5 THEN
create text into window frontwindow( ) distfin1 (39.77, 24.9) (41.4, 26) Font("Arial", 0, 10, BLACK)
ELSEIF len(distfin1) = 6 THEN
create text into window frontwindow( ) distfin1 (39.66, 24.9) (41.4, 26) Font("Arial", 0, 10, BLACK)
END IF
ELSE
'cas des echelle a afficher en kilometre
'gestion de la longueur de la valeur intermediaire a afficher
IF len(distmid1) = 3 THEN
create text into window frontwindow( ) distmid1 (37.69, 24.9) (40, 26) Font("Arial", 0, 10, BLACK)
ELSEIF len(distmid1) = 2 THEN
create text into window frontwindow( ) distmid1 (37.8, 24.9) (40, 26) Font("Arial", 0, 10, BLACK)
ELSE
note "Echelle trop grande !!"
exit SUB
END IF
'gestion de la longueur de la valeur max a afficher
IF len(distfin1) = 5 THEN
create text into window frontwindow( ) distfin1 (39.69, 24.9) (41.4, 26) Font("Arial", 0, 10, BLACK)
ELSEIF len(distfin1) = 4 THEN
create text into window frontwindow( ) distfin1 (39.8, 24.9) (41.4, 26) Font("Arial", 0, 10, BLACK)
ELSE
note "Echelle trop grande !!"
exit SUB
END IF
END IF
'dessine la barre graphique d'echelle
create text into window frontwindow( ) "0" (35.9, 24.9) (36.3, 26) Font("Arial", 0, 10, BLACK)
create rect into window frontwindow( ) (36, 25.3) (37, 25.5) Pen(1,2,0) brush(2, 0, 16777215)
create rect into window frontwindow( ) (36, 25.5) (37, 25.7) Pen(1,2,0) brush(2, 16777215, 16777215)
create rect into window frontwindow( ) (37, 25.3) (38, 25.5) Pen(1,2,0) brush(2, 16777215, 16777215)
create rect into window frontwindow( ) (37, 25.5) (38, 25.7) Pen(1,2,0) brush(2, 0, 16777215)
create rect into window frontwindow( ) (38, 25.3) (40, 25.5) Pen(1,2,0) brush(2, 0, 16777215)
create rect into window frontwindow( ) (38, 25.5) (40, 25.7) Pen(1,2,0) brush(2, 16777215, 16777215)
ELSE
note " Il ne s'agit pas d'une fenêtre mise en page !"
END IF
END IF
END SUB
'---------------------------------------------------------------------------
'--- Applique l'échelle saisie
'---------------------------------------------------------------------------
SUB applic
'applique a l'echelle saisie
IF Val(ReadControlValue(10))<>0 THEN
Set map Window NumWin zoom LarCm * Val(ReadControlValue(10))
END IF
END SUB
'---------------------------------------------------------------------------
'--- Annule la mise à l'échelle
'---------------------------------------------------------------------------
'SUB Annul
'permet l'annulation de l'echelle saisie
' Alter control 10 value Str$(rapport)
' call applic
'END SUB
'---------------------------------------------------------------------------
'--- affiche la date du jour de création de la MEP
'---------------------------------------------------------------------------
SUB date
DIM date as STRING
'récupère la date du jour
date = FormatDate$(curdate())
'dessine dans le Layout la date suivant l'orientation
IF (WindowInfo(frontwindow(), Win_INFO_TYPE) = WIN_LAYOUT) THEN
IF orientation(frontwindow()) = 1 THEN
create text into window frontwindow( ) date (4.08, 38.5) (7, 39.5) Font("Arial", 0, 10, BLACK)
ELSE
create text into window frontwindow( ) date (37.10, 26) (41, 26) Font("Arial", 0, 10, BLACK)
END IF
ELSE
note " Il ne s'agit pas d'une fenêtre mise en page !"
END IF
END SUB
'---------------------------------------------------------------------------
'--- affiche une flèche Nord
'---------------------------------------------------------------------------
SUB nord
'dessine dans le Layout la flèche nord suivant l'orientation
IF (WindowInfo(frontwindow(), Win_INFO_TYPE) = WIN_LAYOUT) THEN
IF orientation(frontwindow()) = 1 THEN
create point into window frontwindow( ) (1.5, 38) symbol(42, 0, 40, "MapInfo Arrows", 0, 0)
ELSE
create point into window frontwindow( ) (34.5, 25.5) symbol(42, 0, 40, "MapInfo Arrows", 0, 0)
END IF
ELSE
note " Il ne s'agit pas d'une fenêtre mise en page !"
END IF
END SUB
'---------------------------------------------------------------------------
'--- affiche les sources des données ATTENTION : a paramétrer suivant le CPRF
'---------------------------------------------------------------------------
SUB source
'dessine dans le Layout une partie des sources suivant l'orientation
IF (WindowInfo(frontwindow(), Win_INFO_TYPE) = WIN_LAYOUT) THEN
IF orientation(frontwindow()) = 1 THEN
create text into window frontwindow( ) "Sources : ©IGN® ©® ©DDT79®" (0.9, 39.5) (5.8, 41) Font("Arial", 0, 10, BLACK)
create text into window frontwindow( ) "Réalisation : ©DDT79® (C. CHAT)" (0.9, 40.5) (5.8, 41) Font("Arial", 0, 10, BLACK)
ELSE
create text into window frontwindow( ) "Sources : ©IGN® ©® ©DDT79®" (34, 27) (41.44, 27) Font("Arial", 0, 10, BLACK)
create text into window frontwindow( ) "Réalisation : ©DDT79® (C. CHAT)" (34, 28) (41.44, 28) Font("Arial", 0, 10, BLACK)
END IF
ELSE
note " Il ne s'agit pas d'une fenêtre mise en page !"
END IF
END SUB
'---------------------------------------------------------------------------
'--- crée un cadre légende
'---------------------------------------------------------------------------
SUB framelegENDe
'dessine dans le Layout un cadre permettant l'insertion d'une légende suivant l'orientation
IF (WindowInfo(frontwindow(), Win_INFO_TYPE) = WIN_LAYOUT) THEN
IF orientation(frontwindow()) = 1 THEN
create Frame into window frontwindow( ) (8.2, 37) (29, 41) Pen(1,1,0) brush(1, 16777215, 16777215)
ELSE
create Frame into window frontwindow( ) (33.18, 10) (41.44, 24.08) Pen(1,1,0) brush(1, 16777215, 16777215)
END IF
ELSE
note " Il ne s'agit pas d'une fenêtre mise en page !"
END IF
END SUB
'---------------------------------------------------------------------------
'--- Dessine les bordures sur la MEP
'---------------------------------------------------------------------------
SUB bordure
'dessine dans le Layout les bordures suivant l'orientation
IF (WindowInfo(frontwindow(), Win_INFO_TYPE) = WIN_LAYOUT) THEN
IF orientation(frontwindow()) = 1 THEN
create Line into window frontwindow( ) (0.6, 0.6) (29.15, 0.6) Pen(2,2,0) 'en haut
create Line into window frontwindow( ) (0.6, 0.6) (0.6, 41.45) Pen(2,2,0) 'a gauche
create Line into window frontwindow( ) (0.6, 41.45) (29.15, 41.45) Pen(2,2,0) 'en bas
create Line into window frontwindow( ) (29.15,0.6) (29.15, 41.45) Pen(2,2,0) 'a droite
create Line into window frontwindow( ) (0.6, 5) (29.15, 5) Pen(2,2,0) 'le titre
create Line into window frontwindow( ) (0.6, 36.45) (29.15, 36.45) Pen(2,2,0) 'la legENDe
create Line into window frontwindow( ) (8, 36.45) (8, 41.45) Pen(2,2,0) 'les sources
create text into window frontwindow( ) "Cartographie des cours d'eau de la commune de" (10, 2) (30, 4) Font("Arial", 1, 30, BLACK)
ELSE
create Line into window frontwindow( ) (0.63, 0.6) (41.44, 0.6) Pen(2,2,0) 'en haut
create Line into window frontwindow( ) (0.63, 0.6) (0.63, 29.14) Pen(2,2,0) 'a gauche
create Line into window frontwindow( ) (0.63, 29.14) (41.44, 29.14) Pen(2,2,0) 'en bas
create Line into window frontwindow( ) (41.44, 29.14) (41.44, 0.60) Pen(2,2,0) 'a droite
create Line into window frontwindow( ) (0.63, 4.48) (41.44, 4.48) Pen(2,2,0) 'le titre
create Line into window frontwindow( ) (33.18, 4.48) (33.18, 29.14) Pen(2,2,0) 'la legENDe
create Line into window frontwindow( ) (33.18, 24.08) (41.44, 24.08) Pen(2,2,0) 'les sources
create text into window frontwindow( ) "Cartographie des cours d'eau de la commune de" (10, 2) (30, 4) Font("Arial", 1, 30, BLACK)
END IF
ELSE
note " Il ne s'agit pas d'une fenêtre mise en page !"
END IF
END SUB
'---------------------------------------------------------------------------
'--- Crée un cadre carte
'---------------------------------------------------------------------------
SUB framecarte
'dessine dans le Layout un cadre permettant l'affichage de la carte suivant l'orientation
IF (WindowInfo(frontwindow(), Win_INFO_TYPE) = WIN_LAYOUT) THEN
IF orientation(frontwindow()) = 1 THEN
create Frame into window frontwindow() (0.63, 5.03) (29.12, 36.42) Pen(1,1,0) brush(1, 16777215, 16777215) FROM WINDOW nomcarte fillframe on
ELSE
create Frame into window frontwindow() (0.63, 4.48) (33.18, 29.14) Pen(1,1,0) brush(1, 16777215, 16777215) FROM WINDOW nomcarte fillframe on
END IF
ELSE
note " Il ne s'agit pas d'une fenêtre mise en page !"
END IF
END SUB
'---------------------------------------------------------------------------
'--- paramètre la taille de la fenetre carte pour calculer l'echelle
'---------------------------------------------------------------------------
SUB FORmecarte
'appel les tableaux où il y a la liste des différentes fenetres
call listefenetre
'création du dialog permettant d'afficher les tableaux de liste
dialog title "Choix de la carte à configurer"
control statictext title "Table : " position 10, 10 width 30
control popupmenu title from variable nommap width 150 id 1 into numtable position 40, 10
control okbutton position 60, 30
control cancelbutton position 110, 30
IF commandinfo(CMD_INFO_DLG_OK) THEN
'paramètre la fenetre carte (dimension) suivant l'orientation de la fenetre MEP
IF orientation(frontwindow()) = 1 THEN
set window idmap(numtable) width 5.5625 Height 6.13542
set map distance units "cm"
nomcarte = idmap(numtable)
ELSE
set window idmap(numtable) width 13.6808 Height 9.9869
set map distance units "cm"
nomcarte = idmap(numtable)
END IF
END IF
END SUB
'---------------------------------------------------------------------------
'--- Ouvre une fenetre MEP dans MI
'---------------------------------------------------------------------------
SUB ouvrirlayout
'création d'un dialog permettant le choix de l'orientaion du Layout ATTENTION : par défaut MI doit ouvrir des Layout en paysage A3
dialog title "Orientation de la mise en page" width 150 height 60
control radiogroup id 1 title "Portrait;Paysage" value 2 into orientchoisi
control okbutton
control cancelbutton
IF commandinfo(CMD_INFO_DLG_OK) THEN 'j'ai choisi l'orientation, et je modIFie ma barre d'outils suivant cela
IF orientchoisi = 1 THEN
Layout
set coordsys Layout units "cm" set window frontwindow() printer orientation portrait
ELSE
Layout width 13.6808 Height 9.9869 position (6, 0)
set coordsys Layout units "cm"
END IF
ELSE
exit SUB
END IF
END SUB
'---------------------------------------------------------------------------
'--- utilisation de l'impression MI pour imprimer directement en PDF
'---------------------------------------------------------------------------
SUB impression
'paramètre l'imprimante pourune impression en PDF
Set Window FrontWindow() Printer
Name "Adobe PDF" Orientation Landscape Copies 1 Papersize 7
Printwin window FrontWindow() interactive
END SUB
'---------------------------------------------------------------------------
'--- Création de la barre d'outils
'---------------------------------------------------------------------------
SUB barreoutil
'création de la barre d'outils générale
create buttonpad "MEP" as
pushbutton calling ouvrirlayout icon 38 helpmsg "MEP\nMEP"
pushbutton calling Formecarte icon 192 helpmsg "Forme carte\nForme carte"
pushbutton calling FrameCarte icon 25 helpmsg "Frame carte\nFrame carte"
pushbutton calling bordure icon 22 helpmsg "Bordure\nBordure"
pushbutton calling FrameLegENDe icon 12 helpmsg "Frame légENDe\nFrame légENDe"
pushbutton calling logos icon 95 helpmsg "Logos\nLogos"
pushbutton calling source icon 180 helpmsg "Sources\nSources"
pushbutton calling Nord icon 139 helpmsg "Nord\nNord"
pushbutton calling Echelle icon 141 helpmsg "Echelle\nEchelle"
pushbutton calling Date icon 208 helpmsg "Date\nDate"
pushbutton calling centrertitre icon 204 helpmsg "Centrer le titre\nCentrer le titre"
pushbutton calling impression icon 77 helpmsg "Créer un PDF\nCréer un PDF"
pushbutton calling latotale icon 78 helpmsg "Tout d'un coup\nTout d'un coup"
fixed
END SUB
'---------------------------------------------------------------------------
'--- retourne l'orientation de la fennetre MEP
'---------------------------------------------------------------------------
FUNCTION orientation(byval numfenetre as INTEGER) as INTEGER
DIM orientation as INTEGER
orientation = windowinfo(numfenetre, WIN_INFO_PRINTER_ORIENT)
END FUNCTION
Merci pour votre aide
Hors ligne
#6 Wed 24 March 2010 16:28
- Damien BEAUSEIGNEUR
- Participant assidu
- Lieu: meyzieu
- Date d'inscription: 5 Sep 2005
- Messages: 425
Re: [MapBasic 9.5] Transformation fichier .mbo en .mbx
bonjour,
la raison est la déclaration de la procédure DECLARE SUB annul et son utilisation...
alors que l'écriture du code de la dite procédure a été commentée.
Mapbasic n'ayant pas le code de cette procédure considère qu'il ne s'agit pas d'un mbx complet, et compile donc en mbo...
cordialement.
Hors ligne
#7 Wed 24 March 2010 16:30
- Patrick PALMIER
- Participant actif
- Lieu: Lille
- Date d'inscription: 18 Jan 2007
- Messages: 97
Re: [MapBasic 9.5] Transformation fichier .mbo en .mbx
Bonjour,
Il semble que tu déclares une procédure annul et qu'elle est en remarque dans le code.
Si une procédure déclarée n'est pas présente dans le fichier, il fait un MBO car il suppose qu'elle existe dans un autre fichier et c'est au moment du link que le MBX pourra se faire
Essaye de mettre la déclaration de la procédure Annul également en remarque et cela devrait générer un mBX si il n'y a pas d'erreur de code
Hors ligne
#8 Wed 24 March 2010 17:11
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
Re: [MapBasic 9.5] Transformation fichier .mbo en .mbx
Merci à tous, problème résolu. Cela venait bien des Declare sub, mais pas de celle ci, car je l'avais déjà enlevé de la remarque.
Il s'agissait de "centrertitre", j'avais supprimer la partie de code en oubliant d'enlever le Declare Sub.
Merci à tous.
Cordialement
Hors ligne