Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

Annonce

Printemps des cartes 2024

#1 Wed 28 March 2012 13:32

rafydl
Participant occasionnel
Lieu: La Défense
Date d'inscription: 29 Oct 2007
Messages: 44

[MapBasic] - Impression selon une sélection

Bonjour

En plein développement d'une application pour automatiser les mises en page, je rencontre un problème.

Dans mon interface créer sous MapBasic, je dois laisser le choix à l'utilisateur le choix de l'orientation de la page (Portrait ou paysage) et aussi de son format (A3 ou A4).
Pour cela j'ai réaliser des boutons radio. Est ce d'après vous le bon choix? Si oui, je rencontre un autre problème je n'arrive pas à récupérer la donnée sélectionnée pour lui indiquer ce qu'il doit faire. Pourriez-vous m'aider?


Merci d'avance à ceux qui pourront me donner un coup de main sur ce problème

Hors ligne

 

#2 Fri 30 March 2012 09:05

sylvain poupard
Participant assidu
Date d'inscription: 19 Mar 2009
Messages: 362

Re: [MapBasic] - Impression selon une sélection

Bonjour,

J'avais essayé de faire quelquechose qui ressemble à ce que vous voulez faire il y a quelques temps. Il s'agit d'un export en .jpeg.
J'étais bien passé par un radio groupe :

Code:

Control RadioGroup
        Position 40,20
        ID 1
        Title "A3;A4"
        Into format

Pour la suite c'est déjà un peu moins clair à expliquer mais pour info l'information récupérée via into est un entier(dans mon exemple A3 = 1 et A4 = 2).

Ci-dessous le choix du format associé à l'orientation lors de l'export: (j'ai pris l'option du if)

Code:

If format = 1 and orientation = 1 then
para = ".JPG" + chr$(34) + " Type " + chr$(34) + "JPEG" + chr$(34) + " Width 16.5267 Units " + chr$(34) + "in" + chr$(34) + " Height 11.6867 Units " + chr$(34) + "in" + chr$(34) + " Resolution " + dpi
    elseIf format = 1 and orientation = 2 then
    para = ".JPG" + chr$(34) + " Type " + chr$(34) + "JPEG" + chr$(34) + " Width 11.688 Units " + chr$(34) + "in" + chr$(34) + " Height 16.528 Units " + chr$(34) + "in" + chr$(34) + " Resolution " + dpi
        elseIf format = 2 and orientation = 1 then
        para = ".JPG" + chr$(34) + " Type " + chr$(34) + "JPEG" + chr$(34) + " Width 11.68 Units " + chr$(34) + "in" + chr$(34) + " Height 8.27 Units " + chr$(34) + "in" + chr$(34) + " Resolution " + dpi
            else format = 2 and orientation = 2
            para = ".JPG" + chr$(34) + " Type " + chr$(34) + "JPEG" + chr$(34) + " Width 8.27 Units " + chr$(34) + "in" + chr$(34) + " Height 11.69 Units " + chr$(34) + "in" + chr$(34) + " Resolution " + dpi        
end if

J'ajoutais ensuite le bout de code sélectionné ci-dessus au début de code

Code:

save window frontwindow() as "C:\..." + format

pour exporter en .jpeg.

Le gros inconvénient c'est qu'il faut créer "manuellement" toutes les solutions possibles dans le if.

Si ça peut vous être utile...
Bon courage.

Dernière modification par sylvain poupard (Fri 30 March 2012 09:06)

Hors ligne

 

#3 Fri 30 March 2012 09:59

rafydl
Participant occasionnel
Lieu: La Défense
Date d'inscription: 29 Oct 2007
Messages: 44

Re: [MapBasic] - Impression selon une sélection

Sylvain

En m'aidant de ton code voici ce que j'ai fait

Code:

    
if Orient_details=1 and Format_details=1 then
       'choisir le format Portrait A4
       Set Window FrontWindow()
           Printer Orientation Portrait Papersize 9

       ElseIf Orient_details=2 and Format_details=1 then
       'choisir le format Paysage A4
       Set Window FrontWindow()
           Printer Orientation Landscape Papersize 77
           
           ElseIf Orient_details=1 and Format_details=2 then
           'choisir le format Portrait A4
           Set Window FrontWindow()
               Printer Orientation Portrait Papersize 8
               
               Elseif Orient_details=2 and Format_details=2 then
               'choisir le format Paysage A3
               Set Window FrontWindow()
                   Printer Orientation Landscape Papersize 76

    End if

En le testant sur mon appli, erreur à la ligne 302 (1ère ligne du if) : Non Concordance de type de donnée dans l'expression.

Je ne comprend pas le problème

Hors ligne

 

#4 Fri 30 March 2012 12:18

sylvain poupard
Participant assidu
Date d'inscription: 19 Mar 2009
Messages: 362

Re: [MapBasic] - Impression selon une sélection

Regardes tout en haut de ton code à la ligne

Code:

Dim Format_details as...

Sous quel "forme" l'as tu déclaré? (j'avais mis smallint)

Hors ligne

 

#5 Fri 30 March 2012 12:24

rafydl
Participant occasionnel
Lieu: La Défense
Date d'inscription: 29 Oct 2007
Messages: 44

Re: [MapBasic] - Impression selon une sélection

Merci de l'info effectivement je l'ai mis en string au lieu de logical...

Maintenant je récupère l'info mais le problème reste le même quelque soit ma sélection m'a mise en page est un portrait A4...

Peut être est ce ma sub MIse en page qui ne convient pas...

Code:

Sub Mise_en_Page

    ' Zoom au 1/25 000
    ' Set Map  Scale 1 Units "cm" For 0.25 Units "km"


dim taille_papier as string
dim orientation_pap as string
dim commande as string

If Orient_details=1 then
orientation_pap="portrait"
else 
orientation_pap="Landscape"
end if

If Format_details=1 then
taille_papier="9"
else 
taille_papier="8"
end if

commande="Set Window FrontWindow() Printer Orientation " + orientation_pap + " Papersize " + taille_papier
run command commande



   
    Layout
    Position (0.291667,0.40625) Units "in"
    Width 9.95833 Units "in" Height 5.58333 Units "in"
    Dim uniqueStringName As String
    uniqueStringName = "Set " + SessionInfo(1)
    Set CoordSys Layout Units "in"
    
    
    Create Frame (0.5431,0.5396) (7.7694,10.9618)
    Pen (1,2,0)
    Brush (2,16777215,16777215)
    Title "ZoomOuvrage"
    FillFrame On

    ' Creation de la fleche nord (dans MEP)
    Create Point (1.1535,1.1736)
    Symbol (40,0,72,"MapInfo Arrows",0,0)

    ' Indique l'auteur et la date d'edition
    Create Text
    "test- "+ FormatDate$(Curdate ())
    (6.3535,11.2465) (7.9201,11.4229)
    Font ("Arial",257,10,0,16777215)

End sub

Meric pour l'aide

Hors ligne

 

#6 Fri 30 March 2012 14:34

jasper
Participant occasionnel
Lieu: Paris
Date d'inscription: 7 Mar 2007
Messages: 44

Re: [MapBasic] - Impression selon une sélection

Bonjour.

Je pense qu'il faudrait faire le "run command" après la création de la mise en page! wink
(Dans le cas présent, la fenêtre active paramétrée en portrait ou paysage ne peut pas être la mise en page, car celle ci n'est crée qu'après...)

Cordialement,
Jasper.

Hors ligne

 

#7 Fri 30 March 2012 15:19

rafydl
Participant occasionnel
Lieu: La Défense
Date d'inscription: 29 Oct 2007
Messages: 44

Re: [MapBasic] - Impression selon une sélection

l'appli gère maintenant les orientations quand c'est du A4 mais pas en A3.
un autre problème se greffe, ma fenêtre carte garde les domensions définies précédemment pour un portrait A4, y a-t-il une solution pour qu'elle s'affiche selon les dimensions de la mise en page? Par exemple un code qui lui dirait de se positionner en haut à gauche de la feuille avec une marge de x mm par rapport au bord etau dimension de la fenêtre de mise en page?

Merci pour votre aide

Hors ligne

 

#8 Fri 30 March 2012 15:35

jasper
Participant occasionnel
Lieu: Paris
Date d'inscription: 7 Mar 2007
Messages: 44

Re: [MapBasic] - Impression selon une sélection

Et non, il n'y a pas de notions d'ancrage, automatique ou non : les positions des frames sont en "durs" dans la mise en page.
Vous n'avez, à ma connaissance, pas d'autres choix que d'adapter la position et la taille des frames en fonction des tailles papiers...

Cordialement,
Jasper.

Hors ligne

 

#9 Fri 30 March 2012 15:51

rafydl
Participant occasionnel
Lieu: La Défense
Date d'inscription: 29 Oct 2007
Messages: 44

Re: [MapBasic] - Impression selon une sélection

J'ai peut etre une question bete mais est ce que je peut faire une boucle dnas le style
Si Commande = "Set Window FrontWindow() Printer Orientation portrait Papersize 9" alors
la fenetre carte doit se positionner a tel endroit avec tel proportion
sinon Si Commande = "Set Window FrontWindow() Printer Orientation paysage Papersize 9" alors
la fenetre carte doit se positionner a tel endroit avec tel proportion
sinon Si Commande = "Set Window FrontWindow() Printer Orientation portrait Papersize 8" alors
la fenetre carte doit se positionner a tel endroit avec tel proportion
sinon Si Commande = "Set Window FrontWindow() Printer Orientation paysage Papersize 8" alors
la fenetre carte doit se positionner a tel endroit avec tel proportion
FIn si

merci pour votre réponse

Hors ligne

 

#10 Fri 30 March 2012 16:03

jasper
Participant occasionnel
Lieu: Paris
Date d'inscription: 7 Mar 2007
Messages: 44

Re: [MapBasic] - Impression selon une sélection

Avec la fonction WindowInfo, vous disposez de tout un tas d'attributs vous permettant de récupérer les informations de la mise en page (orientation, taille des marges, ou encore le format papier avec WIN_INFO_PRINTER_PAPERSIZE).

Vous pouvez donc faire des tests comme vous le suggériez, ou encore directement un Do Case... End Case.

Cordialement,
Jasper.

Hors ligne

 

Pied de page des forums

Powered by FluxBB