#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!
(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