#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 formatPour 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 ifJ'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 ifEn 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 subMeric 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


