#1 Thu 22 October 2009 23:10
- G.BAZIN
- Participant occasionnel
- Lieu: Marseille
- Date d'inscription: 5 Sep 2005
- Messages: 43
MapBasic 6.0: MBO au lieu de MBX...pouquoi ?
Bonjour à tous
J'ai un programme Mapbasic v 6.0 de mise en page automatique.
Je gère quelques 280 ou 600 planchesau format A0, écrit il y a quelques (nombreuses) années. Cette automatisation de la mise en page me fait gagner un temps fou,et de plus elle m'évite beaucoup d'erreurs. Seulement, j'ai du apporter quelques améliorations mineures maisqui me faciliteraient à la fois, la vie (un peu feignant pour les uns ou sage pour les autres) et la gestion des modifications que je suis obligé de gérer (modifications voir plan ci dessous)... d'un document d'urbanisme qu'est le POS ou le PLU).
En fait sur mes planches apparaissent de façon automatique toutes les procédures de modification.
Ce qui me permet de savoir ou j'en suis et d'avoir rapidement un tour d'horizon des planches modifiées par telle ou telle procédure.
C'est un peu long mais il fallait que je rentre dans un certain détail.
J'en viens au fait.
Je suis confronté à un problème de compilation ce programme: il ne me fait qu'un MBO (et ne me trouve aucune erreur) alors que bien évidemment j'aimerais un MBX
J'ai lu qu'il doit me manquer le développement d'une procédure; oui voilà, mais laquelle, je ne sais plus, je suis complètement sec ou nul.
Je joins le programme
Si quelqu'un peut m'aider merci.
Code:
'**************************************************************************** ' ' Program: MulMEP Multiple MiseEnPage ' ' '**************************************************************************** '**************************************************************************** ' ' Include files and Define statements. ' '**************************************************************************** Include "MapBasic.def" Include "STR_Lib.def" Include "Auto_lib.def" Include "MiStdLib.def" Include "getscale.def" type WorDefinition LayoutName as string LayoutPageSize as string LayoutPrinter as String LayoutTableRect as string LayoutID as string LayoutTitre1 as string LayoutTitre2 as string LayoutTitre3 as string LayoutTitre4 as string LayoutTitreLibre as integer end type Define ID_LB 100 Define ID_LBWOR 101 Define ID_LBRect 102 Define ID_LBSCALE 108 Define ID_LBPrinters 109 Define ID_TFILENAME 112 define mcolor 5263440 global WorDefinitions() as WorDefinition global CarteWindowName as string global MiseEnPageWindowName as string global ZOOMMEP as float global ZOOMMEPINIT as float global TableRect as alias global NbRect as integer global NbMiseEnPage as integer global StrAllTables as string global StrAllFields as string global StrAllPrinters as string global IDFirstLayout as integer '**************************************************************************** ' ' Declare Global variables ' '**************************************************************************** Global tbl_list As String Global tbl_listWOR As String Global gCurMEP as String Declare Sub Main Declare Sub MainDialog Declare Sub ListBoxHndlr Declare Sub ListBoxRectHndlr Declare Sub ListBoxMiseEnPageHndlr Declare Sub ListBoxIdHndlr Declare Sub EndPrg ''Declare Sub valuelist_handler declare sub DeleteEnteteLayout declare sub ModifyTextObjectLayout(byVal newval as string,byval x as float,byval y as float,byval prefix as string,byval suffix as string,byval align as integer) declare sub CreateTextIntoLayout(LayoutName as string,byval x as float,byval y as float,byVal Sz as integer,byval Txt as string,IsItScale as integer) declare sub ZoomPlus declare sub ZoomMoins declare sub PrintLayout declare sub PrintThisLayout declare sub PrintAllLayout declare sub ImgAllLayoutForOneID declare sub ImgLayout declare sub ImgAllLayout declare sub ImgAllRectThisLayout declare sub MAJZoom Declare function GetWindowIDFromName(MWindowName as string) as integer Declare function GetWindowNumFromName(MWindowName as string) as integer declare function getCarteWindowNameFromLayout(MiseEnPageWindowName as string) as string Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (lpBuffer As String, nSize As integer) As integer Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (nBufferLength As integer, lpBuffer As String) As integer declare function GetWinDir() as string declare function GetTempDir() as string declare sub getPrintersList() declare function getLayerIdFromTableName(byval WindowId as integer,byval Tablename as string) as integer declare sub DropTableWhenever(byval Tablename as string) declare sub FillStrAllfieldsVar(byval TableName as string) declare sub FillTblList() ''declare function CalcMEPScale(byval MiseEnPageWindowNamePrm as string) as string declare sub closeWindow() declare sub UpdateListWor() declare sub PrintAllRectThisLayout() declare function IsTablePresentInMapWindow(byval tablename as string,byval MapWindowID as integer) as integer '**************************************************************************** ' Sub procedure: closeWindow() ' '**************************************************************************** sub CloseWindow() Dialog Preserve end sub '**************************************************************************** ' Function: GetWinDir() ' '**************************************************************************** function GetWinDir() as string dim MaxPath as integer dim MyString as string MaxPath=255 MyString = Space$(MaxPath) if GetWindowsDirectory(MyString, MaxPath) 0 then GetWinDir = MyString else GetWinDir = "" end if end function '**************************************************************************** ' Function: GetTempDir() ' '**************************************************************************** function GetTempDir() as string dim MaxPath as integer dim MyString as string MaxPath=255 MyString = Space$(MaxPath) if GetTempPath(MaxPath,MyString) 0 then GetTempDir = MyString else GetTempDir = "" end if end function '**************************************************************************** ' Sub procedure: getPrinterList() ' '**************************************************************************** sub getPrintersList() dim str as string run program ApplicationDirectory$() & "Allprinters.exe" StrAllPrinters ="" Open File "c:allprinters.txt" For input As #2 Do While Not EOF(2) Line Input #2, str StrAllPrinters=StrAllPrinters & str &";" Loop Close File #2 end sub '**************************************************************************** ' Sub procedure: Main ' '**************************************************************************** Sub Main call getPrintersList() ZOOMMEPINIT =0.8 gsAppDescription = "AgAM - POS-PLU" gsAppFilename = "pos.mbx" Create Menu "POS-PLU" As "Mise en page" Calling MainDialog, "(-", "&Remove ApplicationtCtrl+K/W^K" Calling EndPrg Alter Menu Bar Add "POS-PLU" ' call MainDialog End Sub '**************************************************************************** ' Sub procedure: UpdateListWor ' '**************************************************************************** sub UpdateListWor() dim FirstLayout as logical dim i as integer tbl_listWOR = "" NbMiseEnPage=0 FirstLayout= true For i = 1 to NumWindows() If (WindowInfo(i,WIN_INFO_TYPE) = WIN_LAYOUT) Then NbMiseEnPage = NbMiseEnPage+1 tbl_listWOR =tbl_listWOR + WindowInfo(i,WIN_INFO_NAME)+ ";" if FirstLayout then IDFirstLayout =1 FirstLayout =false MiseEnPageWindowName = WindowInfo(i,WIN_INFO_NAME) CarteWindowName = getCarteWindowNameFromLayout(MiseEnPageWindowName) end if end if next redim WorDefinitions(NbMiseEnpage) if NbMiseEnPage=0 then Note "Aucune Mise en page trouvee, Arret" exit sub end if end sub '**************************************************************************** ' Sub procedure: MainDialog ' '**************************************************************************** Sub MainDialog Dim i As Integer Dim staticInit As String Dim j, iNumOpen as smallint dim ColZoomFound as integer dim IsItFirstTableWithZoom as integer dim FirstColName as string StrAllTables ="" StrAllFields="" IsItFirstTableWithZoom =0 Close Table Selection Interactive for i=1 to NumTables() ColZoomFound =0 FirstColName="" onerror goto errh FirstColName=ColumnInfo(TableInfo(i,TAB_INFO_NAME),"COL1",COL_INFO_NAME) errh: For j = 1 to NumCols(TableInfo(i,TAB_INFO_NAME)) if ucase$(ColumnInfo(TableInfo(i,TAB_INFO_NAME),"COL" + Str$(j),COL_INFO_NAME))="ZOOM" and TableInfo(i,TAB_INFO_NAME)"MEPSELECTED" and TableInfo(i,TAB_INFO_NAME)"TMPMEP" then ColZoomFound =1 end if next if ColZoomFound =1 then StrAllTables = StrAllTables + TableInfo(i,TAB_INFO_NAME) + ";" if IsItFirstTableWithZoom =0 then call FillStrAllfieldsVar(TableInfo(i,TAB_INFO_NAME)) TableRect=TableInfo(i,TAB_INFO_NAME) IsItFirstTableWithZoom =1 call FillTblList() end if end if Next call UpdateListWor() Dialog Title gsAppDescription Height 210 Width 400 Control StaticText Title "Mises en page présentes:" Position 10, 16 Control ListBox Position 10, 27 Width 150 Height 55 Title tbl_listWOR Value IDFirstLayout ID ID_LBWOR Calling ListBoxMiseEnPageHndlr Control StaticText Title "Imprimante:" Position 10, 140 width 70 Control popupmenu Position 10, 150 Width 110 Height 20 Title StrAllPrinters Value 1 ID ID_LBPrinters Control StaticText Title "Donnees presentes:" Position 170, 5 Control ListBox Position 170, 15 Width 200 Height 60 Title tbl_list Value 0 ID ID_LB Calling ListBoxHndlr Control Button Position 170, 80 width 100 Title "PRN : Cette MEP / Cette ID" Calling PrintLayout Control Button Position 170, 95 width 100 Title "PRN : cette MEP/Tout ID" Calling PrintAllRectThisLayout Control Button Position 170, 110 width 100 Title "PRN : toutes les MeP/tout ID" Calling PrintAllLayout Control Button Position 170, 125 width 100 Title "INACTIF: tts les MeP/Cette ID" Calling ImgAllLayoutForOneID 'PrintAllLayoutForOneID Control Button Position 270, 80 width 100 Title "IMG : Cette MEP / Cette ID" Calling ImgLayout Control Button Position 270, 95 width 100 Title "IMG : cette MEP/Tout ID" Calling ImgAllRectThisLayout Control Button Position 270, 110 width 100 Title "IMG : toutes les MeP/tout ID" Calling ImgAllLayout Control Button Position 270, 125 width 100 Title "IMG : toutes les MeP/Cette ID" Calling ImgAllLayoutForOneID Control StaticText Title "Prefix Fichier:" Position 170, 140 width 60 Control EditText Position 270, 140 width 115 value "c:" ID ID_TFILENAME 'Control Button ' Position 170, 190 ' width 150 ' Title "MaJ du Zoom et de l'echelle" ' Calling MAJZoom Control OKButton Position 350, 190 Width 40 Title "OK" End Sub '**************************************************************************** ' Sub procedure : FillTblList ' '**************************************************************************** sub FillTblList() tbl_list = "" NbRect=0 select * From TableRect order by IDEN Into MySelection Noselect fetch First From MySelection tbl_list="" Do Until EOT(MySelection) NbRect=NbRect+1 tbl_list = tbl_list + MySelection.IDEN + ";" Fetch Next From MySelection Loop close table MySelection end sub '**************************************************************************** ' Sub procedure: DropTableWhenever ' '**************************************************************************** sub DropTableWhenever(byval Tablename as string) dim i as integer for i=1 to NumTables() if ucase$(TableInfo(i,TAB_INFO_NAME))=ucase$(tablename) then run command "close table "& Tablename exit for end if next end sub '**************************************************************************** ' Sub procedure: ListBoxMiseEnPageHndlr ' '**************************************************************************** Sub ListBoxMiseEnPageHndlr dim index as integer index = ReadControlValue( ID_LBWOR ) Call Extract( index, tbl_listwor, MiseEnPageWindowName ) print "Mise En Page :" + MiseEnPageWindowName CarteWindowName = getCarteWindowNameFromLayout(MiseEnPageWindowName) print "Carte : " + CarteWindowName call ListBoxHndlr end sub '**************************************************************************** ' Sub procedure: FillStrAllfieldsVar ' '**************************************************************************** sub FillStrAllfieldsVar(byval TableName as string) dim i as integer dim sCol as alias dim sColName as string StrAllfields="" For i = 1 to NumCols(TableName) sCol = Str$(ColumnInfo(TableName,"COL"+Str$(i),COL_INFO_NUM)) sColName = ColumnInfo(TableName ,"COL" + Str$(i),COL_INFO_NAME) StrAllfields = StrAllfields + sColname + ";" next StrAllfields = StrAllfields +"--AUCUN--;--TEXTE-LIBRE--;--ECHELLE--" end sub '**************************************************************************** ' Sub procedure: ListBoxRectHndlr ' '**************************************************************************** Sub ListBoxRectHndlr dim index as integer dim TableRectName as string dim mapstr as string Index = ReadControlValue( ID_LBRect ) Call Extract( index, strAlltables, TableRectName) TableRect = TableRectName call FillStrAllfieldsVar(TableRectName ) call ListBoxIDHndlr 'rechercher les MEP contenant cette table ' end sub '**************************************************************************** ' Sub procedure: ListBoxHndlr ' '**************************************************************************** Sub ListBoxHndlr Dim index, tabletype As SmallInt Dim i as integer Dim WindowCarteID as integer Dim CurMEP as object Dim p_MEP As PEN Dim MEPwidth as integer Dim MEPheight as integer Dim MEPMinX,MEPMaxX,MEPMinY,MEPMaxY,curx,cury as FLOAT Dim n,o as integer Dim taillezoomarea as float Dim tmpcol as alias Dim titre1 as string Dim titre2 as string Dim titre3 as string Dim titre4 as string Dim titre1Echelle as integer Dim titre2Echelle as integer Dim titre3Echelle as integer Dim titre4Echelle as integer Dim IdRectAlias as alias Dim PrinterOrientation as integer Dim WindowMiseEnPageId as integer Dim titre2Pos as float dim b_fillstyle As Brush dim sTxtLibre as string dim mapstr as string dim TmpId as integer dim FrameWidth as float dim x1 as float dim x2 as float dim xcenter as float dim desiredScale as float dim formatPapier as string dim TypePlanche as string 'print "MEP" + MiseEnPageWindowName 'print "MAP" + CarteWindowName index = ReadControlValue( ID_LB ) Call Extract( index, tbl_list, gCurMEP ) 'print "MEP en cours:"+gCurMEP if gCurMEP="" then note "vous devez selectionner une table et un champ ID" exit sub end if 'Cherche la fenetre CARTE WindowMiseEnPageId = GetWindowIDFromName(MiseEnPageWindowName) 'if WindowCarteID =0 then ' note "Attention la fenetre carte a un nom trop long, servez vous de MAP WINDOW MANAGER, fin du programme" ' end program 'end if 'Recherche de l'object Mise en page dim MEPObj as object dim t,layoutTempName as string layoutTempName = WindowInfo(GetWindowIDFromName(MiseEnPageWindowName),WIN_INFO_TABLE) t="-" select * from layoutTempName into TmpLayout fetch first from TmpLayout Set CoordSys Layout Units "cm" Do Until EOT(TmpLayout) if objectInfo(TmpLayout.obj,OBJ_INFO_TYPE)=OBJ_TYPE_FRAME then if t="-" and objectInfo(TmpLayout.obj,OBJ_INFO_FRAMETITLE) "" then MEPObj =TmpLayout.obj 'WindowCarteID = GetWindowIDFromName(CarteWindowName) TmpId = objectInfo(TmpLayout.obj,OBJ_INFO_FRAMEWIN) ''''''''ici le test pour la carte avec la table selectionnee if IsTablePresentInMapWindow(TABLERECT ,TmpID)=1 then WindowCarteID =TmpID t="---" else note "la table des rectangles n existe pas dans la fenetre carte" exit sub end if end if end if Fetch Next From TmpLayout Loop '''''''''''''''''''''''''''''''''''''' print "Carte ID : " + WindowCarteID set window WindowCarteID front set map redraw off set map XY Units "m" 'reinitialise les MEP ''''i=0 ''''IdFieldAlias = "MySelection." & IdField ''''select * From TableRect order by IdFieldAlias Into MySelection noselect ''''fetch First From MySelection ''''Do Until EOT(MySelection) '''' curMEP = MySelection.obj '''' i=i+1 '''' p_MEP = MakePen(1,2,BLACK) '''' alter Object CURMEP Info OBJ_INFO_PEN,P_MEP '''' update MySelection '''' set obj = CURMEP '''' where rowid = i '''' Fetch Next From MySelection ''''Loop ''''close table MySelection select * From TableRect where str$(IDEN)=str$(gCurMEP) Into MEPSELECTED ZOOMMEP = MEPSELECTED.zoom if (ZOOMMEP+0) = 0 then ZOOMMEP= ZOOMMEPINIT end if curMEP = MEPSELECTED.OBJ Add Map Layer MEPSELECTED Set Map Layer getLayerIdFromTableName(WindowCarteId,"MEPSELECTED") Editable On Set Map Layer getLayerIdFromTableName(WindowCarteId,"MEPSELECTED") Display Graphic Editable on Selectable On Global Line (3,2,mcolor) Global Pen (8,2,mcolor) Global Brush(01,mcolor,mcolor) Global Symbol (35,12632256,12) Global Font ("Arial",0,9,0) set map layer getLayerIdFromTableName(WindowCarteId,"MEPSELECTED") XY Units "m" set map layer getLayerIdFromTableName(WindowCarteId,"MEPSELECTED") display global set map center(centroidX(curMEP),centroidy(curMEP)) 'zone selected Set Map Layer getLayerIdFromTableName(WindowCarteId,"MEPSELECTED") Set Map Zoom Entire Layer getLayerIdFromTableName(WindowCarteId,"MEPSELECTED") 'set map zoom MapperInfo(WindowCarteID,MAPPER_INFO_ZOOM)*ZOOMMEP 'note MapperInfo(WindowCarteID,MAPPER_INFO_ZOOM)*ZOOMMEP 'note MiseEnPageWindowName 'mise_en_page_A0_2000_A 'note mid$(MiseEnPageWindowName,15,2) desiredScale =val(mid$(MiseEnPageWindowName,17,2)) formatPapier = mid$(MiseEnPageWindowName,14,2) TypePlanche = right$(MiseEnPageWindowName,1) set distance units "m" FrameWidth = ObjectGeography(MEPObj,OBJ_GEO_MAXX) - ObjectGeography(MEPObj,OBJ_GEO_MINX) x1 = MapperInfo(WindowCarteId,MAPPER_INFO_MINX ) x2 = MapperInfo(WindowCarteId,MAPPER_INFO_MAXX) 'print (FrameWidth * desiredScale) 'print "D1 "+ x1 'print "D "+ MapperInfo(WindowCarteId,MAPPER_INFO_ZOOM) 'print "##################################" 'print "AAA "+MapperInfo(ObjectInfo(MEPObj, 4),1) / (ObjectGeography(MEPObj, 3) - ObjectGeography(MEPObj, 1)) 'print "B "+MapperInfo(ObjectInfo(MEPObj, 4),1) set map window WindowCarteId zoom (FrameWidth * desiredScale) units "m" Set Map Layer getLayerIdFromTableName(WindowCarteId,"MEPSELECTED") Display Off Set Coordsys Window WindowCarteID set map redraw on ' on repasse sur la mise en page set window WindowMiseEnPageId front 'call DeleteEnteteLayout set paper units "cm" PrinterOrientation = WindowInfo(WindowMiseEnPageId,WIN_INFO_PRINTER_ORIENT ) if (formatPapier="A0") then call ModifyTextObjectLayout(MEPSELECTED.PLANCHE_SUP , 3.6, 4.8,"","",5) call ModifyTextObjectLayout(MEPSELECTED.PLANCHE_INF ,63.3,99.3,"","",5) if TypePlanche = "A" then call ModifyTextObjectLayout(MEPSELECTED.IDEN ,28.1, 4.5,""," - A - (Consulter la planche B)",-1) call ModifyTextObjectLayout(MEPSELECTED.IDEN ,70.8, 5.9,""," A",-1) end if if TypePlanche = "B" then call ModifyTextObjectLayout(MEPSELECTED.IDEN ,28.1, 4.5,""," - B - (Consulter la planche A)",-1) call ModifyTextObjectLayout(MEPSELECTED.IDEN ,70.8, 5.9,""," B",-1) end if call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_1 , 3.1, 99.0,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_2 , 3.1, 99.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_3 , 3.1, 100.2,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_4 , 3.1, 100.8,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_5 , 3.1, 101.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_6 , 3.1, 102.0,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_7 , 3.1, 102.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_8 , 3.1, 103.2,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_9 , 3.1, 103.8,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_10 , 3.1, 104.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_11 , 3.1, 105.0,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_12 , 3.1, 105.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_13 , 3.1, 106.2,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_14 , 3.1, 106.8,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_15 , 3.1, 107.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_16 , 3.1, 108.0,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_17 , 3.1, 108.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_18 , 3.1, 109.2,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_19 , 3.1, 109.8,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_20 , 3.1, 110.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_1 , 2.4, 99.0,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_2 , 2.4, 99.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_3 , 2.4, 100.2,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_4 , 2.4, 100.8,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_5 , 2.4, 101.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_6 , 2.4, 102.0,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_7 , 2.4, 102.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_8 , 2.4, 103.2,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_9 , 2.4, 103.8,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_10 , 2.4, 104.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_11 , 2.4, 105.0,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_12 , 2.4, 105.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_13 , 3.1, 106.2,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_14 , 3.1, 106.8,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_15 , 3.1, 107.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_16 , 3.1, 108.0,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_17 , 3.1, 108.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_18 , 3.1, 109.2,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_19 , 3.1, 109.8,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_20 , 3.1, 110.4,"","",-1) end if if (formatPapier="A3") then call ModifyTextObjectLayout(MEPSELECTED.PLANCHE_SUP , 2.7, 0.9,"","",5) call ModifyTextObjectLayout(MEPSELECTED.PLANCHE_INF ,26.5,38.6,"","",5) if TypePlanche = "A" then call ModifyTextObjectLayout(MEPSELECTED.IDEN ,13.3, 0.8,""," - A - (Consulter la planche B)",-1) end if if TypePlanche = "B" then call ModifyTextObjectLayout(MEPSELECTED.IDEN ,13.3, 0.8,""," - B - (Consulter la planche A)",-1) end if call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_1 , 2.7,38.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_2 , 2.7,38.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_3 , 2.7,38.9,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_4 , 2.7,39.1,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_5 , 2.7,39.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_6 , 2.7,39.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_7 , 2.7,39.9,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_8 , 2.7,40.1,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_9 , 2.7,40.3,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_10, 2.7,40.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_11, 2.7,40.9,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_12, 2.7,41.1,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_13 , 2.7,41.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_14 , 2.7,41.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_15 , 2.7,41.9,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_16 , 2.7,42.1,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_17 , 2.7,42.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_18 , 2.7,42.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_19 , 2.7,42.9,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.TXTLIBRE_20 , 2.7,43.1,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_1 , 2.3,38.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_2 , 2.3,38.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_3 , 2.3,38.9,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_4 , 2.3,39.1,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_5 , 2.3,39.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_6 , 2.3,39.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_7 , 2.3,39.9,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_8 , 2.3,40.1,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_9 , 2.3,40.3,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_10 , 2.3,40.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_11 , 2.3,40.9,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_12 , 2.3,41.1,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_13 , 2.3,41.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_14 , 2.3,41.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_15 , 2.3,41.9,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_16 , 2.3,42.1,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_17 , 2.3,42.4,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_18 , 2.3,42.6,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_19 , 2.3,42.9,"","",-1) call ModifyTextObjectLayout(MEPSELECTED.ASTLIBRE_20 , 2.3,43.1,"","",-1) end if select * from layoutTempName where false into TmpLayout 'close table MEPSELECTED End Sub '**************************************************************************** ' Sub Function: IsTablePresentInMapWindow ' '**************************************************************************** function IsTablePresentInMapWindow(byval tablename as string,byval MapWindowID as integer) as integer dim TmpReturn as integer dim i as integer TmpReturn =0 for i=1 to MapperInfo(MapWindowID, MAPPER_INFO_LAYERS) ''''print ucase$(Tablename) + "####"+ ucase$(LayerInfo( MapWindowID, i , LAYER_INFO_NAME )) if ucase$(Tablename)=ucase$(LayerInfo( MapWindowID, i , LAYER_INFO_NAME )) then TmpReturn =1 end if next IsTablePresentInMapWindow=TmpReturn end function '**************************************************************************** ' Sub Function: getLayerIdFromTableName ' '**************************************************************************** function getLayerIdFromTableName(byval WindowId as integer,byval Tablename as string) as integer dim i as integer dim tmpresult as integer tmpresult =0 for i=1 to MapperInfo(WindowId, MAPPER_INFO_LAYERS) if ucase$(Tablename)=ucase$(LayerInfo( WindowId , i , LAYER_INFO_NAME )) then tmpresult = i end if next getLayerIdFromTableName = tmpresult end function '**************************************************************************** ' Sub procedure: DeleteEnteteLayout ' '**************************************************************************** sub DeleteEnteteLayout dim i as integer dim layoutTempName as alias dim idlayout as integer idlayout = GetWindowIDFromName(MiseEnPageWindowName) layoutTempName = WindowInfo(idlayout,WIN_INFO_TABLE) set window idlayout front Set CoordSys Layout Units "cm" select * from layoutTempName into MySelection where centroidX(obj)>=0 and centroidX(obj)0 then if ((align - len(newval))/2) >0 then txtspacer = space$((align - len(newval))/2) end if end if idlayout = GetWindowIDFromName(MiseEnPageWindowName) layoutTempName = WindowInfo(idlayout,WIN_INFO_TABLE) set window idlayout front Set CoordSys Layout Units "cm" select * from layoutTempName into MySelection where ObjectGeography(obj,OBJ_GEO_MINX)>=x and objectgeography(obj,OBJ_GEO_MINX)
Hors ligne
#2 Fri 23 October 2009 05:21
- Bruno MELI
- Participant occasionnel
- Lieu: Le Tampon - Réunion
- Date d'inscription: 7 Apr 2008
- Messages: 46
- Site web
Re: MapBasic 6.0: MBO au lieu de MBX...pouquoi ?
bonjour,
Je n'ai pas la solution mais après un petit coup d'oeil, je me demande si à la dernière ligne il ne manquerait pas un opérateur et une valeur ?
mais ça ne doit pas régler ton problème
BM
Hors ligne
#3 Fri 23 October 2009 08:33
- Patrick PALMIER
- Participant actif
- Lieu: Lille
- Date d'inscription: 18 Jan 2007
- Messages: 97
Re: MapBasic 6.0: MBO au lieu de MBX...pouquoi ?
Bonjour,
Typiquement le MBO est généré soit quand il n'y a pas de procedure main ou quand une fonction ou subroutine est déclarée mais pas défini.
C'est notamment la manière de procéder quand le MB fait plus de 64Ko (taille maxi enfin avec des anciennes versions de MapBasic)
Dans ce acs on fait plusieurs MB qui génèrent des MBO (modules)
il faut alors les lier avec un fichier MBP pour générer le MBX
D'où deux possibilités, la procédure main étant définie
Une procédure déclarée n'est pas définie dans le MB
Le fichier MB dépasse les 64Ko, dans ce cas il faut le partager en plusieurs parties en déclarer certaines procédures dans un autre fichier
le fichier MBP se présente ainsi
[LINK]
Application=v:\temp\reseaux.mbx
Module=i:\palmier\mbx\work\reseaux.mbo
Module=i:\palmier\mbx\work\reseauxb.mbo
Hors ligne
#4 Sat 24 October 2009 09:13
- fredericfridi
- Participant actif
- Date d'inscription: 2 Feb 2008
- Messages: 97
Re: MapBasic 6.0: MBO au lieu de MBX...pouquoi ?
Bonjour
Je n ai pas regardé en detail le programme car je suis novice,
mais ça m arrive lorque j ai declaré un sub que je n ai pas crée.
Hors ligne