代码名称:Mapbasic紧缩表源代码

作者/收集者:caoyuan

开发环境:MapBasic

代码:

紧缩表源代码
Include "mapbasic.def"
Include "icons.def"
Include "menu.def"
'***********************************************************
Declare Sub Main
Declare Sub packtable
Declare Sub BatchPackTable
Declare Sub Exit
'***********************************************************
Sub Main
    Create Menu "紧缩表" As 
         "(-",    
         "紧缩表"  +Chr$(9)+"Ctrl+M/W^M" Calling PackTable,
         "(-", 
         "退出"Calling Exit
    Alter Menu Bar Add "紧缩表"
    Set Window Message Font ("宋体", 0, 10, Blue) 
End Sub

'***********************************************************
Sub PackTable
 Dim Ptable,LayName As String
 Dim Winid,I,J,LayNums As Integer
    Cls
    onError GoTo ErrorType
    If Not FrontWindow() Then
        Note "没有图层,请打开图层......"
        Exit Sub
    End If
    For j=1 To NumWindows()
        If WindowInfo(FrontWindow(),Win_Info_Type)<>Win_Mapper Then
            Close Window FrontWindow()
        Else
            Exit For
        End If
    Next
    Winid=FrontWindow()
    LayNums=MapperInfo(WinID, Mapper_Info_Layers)
    Open File "c:\紧缩完的表.txt" For Output As #2
    For I=1 To Laynums    
        LayName= LayerInfo(WinID,I,Layer_Info_Name)
        If LayerInfo(WinID,I,Layer_Info_type)=Layer_Info_Type_Normal Then
            Commit Table LayName                                               
            Set Map Layer LayName Editable On
            Ptable="Pack Table "+LayName+" Graphic Data "
            Run Command Ptable
            Print "已经将 ("+LayName+") 表紧缩完! "
            Print #2, "已经将 ("+LayName+") 表紧缩完! "
            If LayNums>1 Then 
                Add Map Auto Layer LayName
            Else 
                Map From LayName 
            End If
        End If
    Next
    Close File #2
    Note "紧缩完毕!"
    Exit Sub
    ErrorType:
        Exit Sub
        Print "操作被取消!"
End Sub
'***********************************************************    
Sub Exit
    If Ask("Hi!你是否愿意退出?","是","否") = 1 Then
        End Program
    End If
End Sub