banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#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

 

Pied de page des forums

Powered by FluxBB