⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 附合导线平差主窗体.frm

📁 一个附和导线的严密计算平差程序
💻 FRM
📖 第 1 页 / 共 3 页
字号:
   frmMain.Caption = frmMain.Caption + "(" + CommonDialog1.FileName + ")"
   MSFlexGrid1.Cols = 5
   If MSFlexGrid1.Rows > 2 Then
    For i = MSFlexGrid1.Rows - 1 To 2 Step -1
       MSFlexGrid1.RemoveItem (i)
    Next i
   End If
   For i = 1 To 4
     With MSFlexGrid1
        .TextMatrix(1, i) = ""
        IntCount = 0
        KCount = 1
     End With
   Next i
   MSFlexGrid1.col = 0
   MSFlexGrid1.row = 0
   MSFlexGrid1.ColSel = 4
   MSFlexGrid1.FontWidth = 7
   For i = 0 To 4
     MSFlexGrid1.ColAlignment(i) = 4
   Next i
   MSFlexGrid1.ColWidth(0) = 300
   MSFlexGrid1.ColWidth(1) = 1200
   MSFlexGrid1.ColWidth(2) = 1400
   MSFlexGrid1.ColWidth(3) = 2200
   MSFlexGrid1.ColWidth(4) = 1600
   MSFlexGrid1.col = 1
   MSFlexGrid1.row = 0
   MSFlexGrid1.ColSel = 4
   MSFlexGrid1.Clip = "测站编号" & Chr(9) & "测站点名" & Chr(9) & "观测角度(o ′″)" & Chr(9) & "观测边长(m)"
   
   Open CommonDialog1.FileName For Input As #1
      Input #1, mm, ma, mb
      For i = 1 To 2
        Line Input #1, InputData
        InputData = LTrim(InputData)
        j = InStr(InputData, " ")
        PointHao(i) = Val(Left(InputData, j - 1))
        InputData = LTrim(Mid(InputData, j + 1))
        j = InStr(InputData, " ")
        PointName(i) = RTrim(Left(InputData, j - 1))
        InputData = LTrim(Mid(InputData, j + 1))
        j = InStr(InputData, " ")
        xx(i) = Val(Left(InputData, j - 1))
        InputData = LTrim(Mid(InputData, j + 1))
        j = InStr(InputData, " ")
        yy(i) = Val(Left(InputData, j - 1))
        InputData = Trim(Mid(InputData, j + 1))
        aa(i) = Val(InputData)
     Next i
     frmYizhiShuju.Text1.Text = Trim(str$(mm))
     If (ma >= 0.01) And (ma < 1) Then
      frmYizhiShuju.Text2.Text = "0" + Trim(str$(ma))
      Else
       frmYizhiShuju.Text2.Text = Trim(str$(ma))
     End If
     
     If (mb >= 0.01) And (mb < 1) Then
       frmYizhiShuju.Text13.Text = "0" + Trim(str$(mb))
       Else
       frmYizhiShuju.Text13.Text = Trim(str$(mb))
     End If
     frmYizhiShuju.Text3.Text = Trim(str$(PointHao(1)))
     frmYizhiShuju.Text4.Text = Trim(PointName(1))
     frmYizhiShuju.Text5.Text = xx(1)
     frmYizhiShuju.Text6.Text = yy(1)
     frmYizhiShuju.Text7.Text = aa(1)
     frmYizhiShuju.Text8.Text = Trim(str$(PointHao(2)))
     frmYizhiShuju.Text9.Text = Trim(PointName(2))
     frmYizhiShuju.Text10.Text = xx(2)
     frmYizhiShuju.Text11.Text = yy(2)
     frmYizhiShuju.Text12.Text = aa(2)
     frmYizhiShuju.Visible = True
     frmYizhiShuju.Visible = False
      IntCount = 0
      Do While Not EOF(1)
       IntCount = IntCount + 1
         With InputDat(IntCount)
           Line Input #1, InputData
           j = InStr(LTrim(InputData), " ")
           .ICount = Val(Left(InputData, j - 1))
           InputData = LTrim(Mid(InputData, j + 1))
           j = InStr(InputData, " ")
           .PiontName = Left(InputData, j - 1)
           InputData = LTrim(Mid(InputData, j + 1))
           j = InStr(InputData, " ")
           .Guancejiao = Val(Left(InputData, j - 1))
           InputData = Trim(Mid(InputData, j + 1))
           .Bianchang = Val(InputData)
        End With
     Loop
     Close #1
     If InputDat(IntCount).Bianchang <> -1 Then
       msg = "非法的数据输入!" & Chr(13) & Chr(10) & "请检查输入数据"
       msg = MsgBox(msg, vbCritical + vbOKOnly, "出错提示")
       If msg = vbOK Then
        mnuDataOutput.Enabled = False
        mnuDataInput.Enabled = False
        Exit Sub
       End If
     End If
     
     
     KCount = IntCount
     i = 1
     Do While i <= IntCount
      With InputDat(i)
      If i = 1 Then
        MSFlexGrid1.col = 1
        MSFlexGrid1.row = 1
        MSFlexGrid1.ColSel = 4
        MSFlexGrid1.Clip = .ICount & Chr(9) & .PiontName & Chr(9) & .Guancejiao & Chr(9) & .Bianchang
        Else
         If .Bianchang <= 0 Then
           MSFlexGrid1.AddItem Chr(9) & .ICount & Chr(9) & .PiontName & Chr(9) & .Guancejiao
           Else
           MSFlexGrid1.AddItem Chr(9) & .ICount & Chr(9) & .PiontName & Chr(9) & .Guancejiao & Chr(9) & .Bianchang
         End If
     End If
     i = i + 1
     End With
     Loop
     bool = True
     mnuDataInput.Enabled = True
     'Exit Sub
ErrHandler:
   Exit Sub
End Sub

Private Sub mnuFileSave_Click()
  Dim Sum As Integer, i As Integer
  CommonDialog1.CancelError = True
  On Error GoTo ErrHandler
  CommonDialog1.FileName = "Default.TXT"
  CommonDialog1.DefaultExt = "TXT"
  CommonDialog1.Filter = "All files(*.*)|*.*|Text_Files(*.TXT)|*.TXT"
  CommonDialog1.Action = 2
  Open CommonDialog1.FileName For Output As #1
    Print #1, mm; Spc(1); ma; Spc(1); Format(mb, "0.0")
    'Print #1, kk
    For i = 1 To 2
      Print #1, PointHao(i); Spc(1); PointName(i); Spc(1); xx(i); Spc(1); yy(i); Spc(1); aa(i)
    Next i
   Sum = 0
   i = 1
   Do While i <= KCount
     If Len(Trim(MSFlexGrid1.TextMatrix(i, 1))) <> 0 Then
       Sum = Sum + 1
     End If
     i = i + 1
     Loop
    IntCount = Sum
    For i = 1 To Sum
    With InputDat(i)
     .ICount = Val(Trim(MSFlexGrid1.TextMatrix(i, 1)))
     .PiontName = MSFlexGrid1.TextMatrix(i, 2)
     .Guancejiao = Val(Trim(MSFlexGrid1.TextMatrix(i, 3)))
     .Bianchang = Val(Trim(MSFlexGrid1.TextMatrix(i, 4)))
    End With
   Next i
   InputDat(IntCount).Bianchang = -1
   For i = 1 To Sum
   With InputDat(i)
     Print #1, Trim(.ICount); Spc(1); Trim(.PiontName); Spc(1); Trim(.Guancejiao); Spc(1); Trim(.Bianchang)
   End With
  Next i
  Close #1
ErrHandler:
  Exit Sub
End Sub

Private Sub mnuFileSaveAs_Click()
  mnuFileSave_Click
End Sub

Private Sub mnuOutputTxt_Click()
 Dim strOutputFileName As String
 Dim j As Integer
  'Debug.Print StrFilename
  j = InStr(StrFilename, ".")
  strOutputFileName = Left$(StrFilename, j) + "out"
 ' Debug.Print strOutputFileName
  Open strOutputFileName For Output As #1
    Print #1, Spc(30); "平差报告"
    Print #1, " "
    Print #1, "m0="; Format(m0, "#.#"); "″"
    Print #1, Spc(25); "平差后点边角值"
    Print #1, "点号  点名    边平差值   坐标方位角平差值         坐标平差值/m"
    Print #1, "                 /m       ( o )(′)(″)          X             Y"
    For i = 1 To IntCount
      With ZBJG(i)
        If i < IntCount Then
          Print #1, Tab(1); InputDat(i).ICount; Tab(7); InputDat(i).PiontName; Tab(15); Format(s(i), "####.0000"); Tab(29); Format(DuDFM(.a), "###.000000"); Tab(46); Format(.x, "######.0000"); Tab(59); Format(.y, "######.0000")
          Else
          Print #1, Tab(1); InputDat(i).ICount; Tab(7); InputDat(i).PiontName; Tab(46); Format(.x, "######.0000"); Tab(59); Format(.y, "######.0000")
        End If
      End With
    Next i
    Print #1, " "
    Print #1, " "
    Print #1, Tab(25); "未知点误差椭圆和坐标误差"
    Print #1, Tab(0); "点号"; Tab(6); "点名"; Tab(14); "A(dms)"; Tab(24); "E(mm)"; Tab(32); "F(mm)"; Tab(40); "M(mm)"; Tab(48); "MX(mm)"; Tab(56); "MY(mm)"; Tab(64); "M(mm)"
    For i = 2 To IntCount - 1
     With ZBJG(i)
       Print #1, Tab(1); InputDat(i).ICount; Tab(7); InputDat(i).PiontName; Tab(16); Format(.Q, "###.0000"); Tab(28); Format(.E, "0.00"); Tab(36); Format(.F, "0.00"); Tab(44); Format(.m, "0.00"); Tab(52); Format(.mx, "0.00"); Tab(60); Format(.my, "0.00"); Tab(68); Format(.m, "0.00")
     End With
    Next i
    Print #1, " "
    Print #1, " "
    Print #1, Tab(30); "点间相对误差"
    Print #1, Tab(3); "边号"; Tab(13); "A(dms)"; Tab(24); "E(mm)"; Tab(33); "F(mm)"; Tab(42); "T(dms)"; Tab(53); "S(m)"; Tab(61); "MT(s)"; Tab(69); "MS(mm)"; Tab(78); "MS/S=1/"
    For i = 1 To IntCount - 1
      With Wzdty(i)
        Print #1, Tab(1); Format(InputDat(i).ICount, "##0"); Tab(4); "--"; Tab(7); Format(InputDat(i + 1).ICount, "##0"); Tab(14); Format(.Q, "###.0000"); Tab(25); Format(.E, "###.0000"); Tab(34); Format(.F, "###.0000"); Tab(43); Format(.a, "###.0000"); Tab(54); Format(.s, "####.0"); Tab(63); Format(.ma, "##.00"); Tab(71); Format(.Ms, "##.00"); Tab(80); Format(.MsS, "######")
      End With
    Next i
  Close #1
End Sub

Private Sub mnuVPCJG_Click()
  frmXianshiJG.Visible = True
  mnuOutJG.Enabled = True
  mnuOutputTxt.Enabled = True
End Sub

Private Sub mnuVTuoyuan_Click()
 mnuOutJG.Enabled = True
 mnuOutputTxt.Enabled = True
 frmHuaTuoYuan.Show
End Sub

Private Sub MSFlexGrid1_DblClick()
    'Show Textbox for Input
    If MSFlexGrid1.row > 0 Then
        m_ActiveCell.row = MSFlexGrid1.row
        m_ActiveCell.col = MSFlexGrid1.col
       
        With txtEdit
            .Top = MSFlexGrid1.CellTop + MSFlexGrid1.Top - 5
            .Left = MSFlexGrid1.CellLeft + MSFlexGrid1.Left + 5
            .Width = MSFlexGrid1.CellWidth
            .Text = MSFlexGrid1.Text
            .Visible = True
            .ZOrder
            .SetFocus
        End With
    End If
   bool = False
End Sub

Private Sub tbrMain_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case Button.Key
        Case "New"
            mnuFileNew_Click
        Case "Save"
            mnuFileSave_Click
        Case "Open"
            mnuFileOpen_Click
        Case "Cut"
            mnuEditcut_Click
        Case "Copy"
            mnuEditCopy_Click
        Case "Paste"
            mnuEditPaste_Click
        Case "Delete"
            mnuEditDelete_Click
        Case "Undo"
            Undo
        Case "InsertRow"
            mnuEditInsertRow_Click
        Case "DelRow"
            mnuEditDelRow_Click
    End Select
    
End Sub

Private Sub txtEdit_LostFocus()
    'Write the Contents of the Textbox into the Grid and hide the Textbox
    If (m_ActiveCell.row <= KCount) And (Not bool) Then
      MSFlexGrid1.TextMatrix(m_ActiveCell.row, m_ActiveCell.col) = txtEdit.Text
    End If
    txtEdit.Visible = False
    MakeUndoBuffer "Input"
End Sub

Private Sub EmptyUndoBuffer()
    
    ReDim m_UndoBuffer(0)
    EnableUndo
End Sub

Private Sub Undo()
    Dim lngRow As Long
    Dim lngCol As Long
    Dim lngTopRow As Long
    
    With MSFlexGrid1
        .Visible = False
        lngRow = .row
        lngCol = .col
        lngTopRow = .TopRow
        .Rows = m_UndoBuffer(UBound(m_UndoBuffer) - 1).uRows
        .Cols = m_UndoBuffer(UBound(m_UndoBuffer) - 1).uCols
        
        .row = 1
        .col = 1
        .RowSel = .Rows - 1
        .ColSel = .Cols - 1
        
        .Clip = m_UndoBuffer(UBound(m_UndoBuffer) - 1).uText
        ReDim Preserve m_UndoBuffer(UBound(m_UndoBuffer) - 1)
        On Error Resume Next
        .row = lngRow
        .col = lngCol
        .TopRow = lngTopRow
        .Visible = True
    End With

    EnableUndo
        
End Sub

Public Sub MakeUndoBuffer(Optional UndoName As String)
    'You should call this Sub on every changes in the Grid
    On Error GoTo DimBuff
    Dim i As Long
    Dim j As Long
    Dim strClip As String
    Dim tmpClip() As UndoType
    
    With MSFlexGrid1
        For i = 1 To .Rows - 1
            For j = 1 To .Cols - 1
                strClip = strClip & .TextMatrix(i, j) & vbTab
            Next
            strClip = strClip & vbCr
        Next
        
        'No Changes.
        If strClip = m_UndoBuffer(UBound(m_UndoBuffer)).uText And _
        m_UndoBuffer(UBound(m_UndoBuffer)).uRows = .Rows And _
        m_UndoBuffer(UBound(m_UndoBuffer)).uCols = .Cols Then Exit Sub
        
        'MaxUndo
        If UBound(m_UndoBuffer) = (intMaxUndo - 1) Then
            ReDim tmpClip(intMaxUndo - 1)
            ReDim m_UndoBuffer(intMaxUndo - 1)
            For i = 0 To intMaxUndo - 1
                tmpClip(i).uCols = m_UndoBuffer(i).uCols
                tmpClip(i).uRows = m_UndoBuffer(i).uRows
                tmpClip(i).uText = m_UndoBuffer(i).uText
                tmpClip(i).uName = m_UndoBuffer(i).uName
            Next i
            For i = 0 To intMaxUndo - 2
                m_UndoBuffer(i).uCols = tmpClip(i + 1).uCols
                m_UndoBuffer(i).uRows = tmpClip(i + 1).uRows
                m_UndoBuffer(i).uText = tmpClip(i + 1).uText
                tmpClip(i).uName = m_UndoBuffer(i).uName
            Next i
                
        Else
            ReDim Preserve m_UndoBuffer(UBound(m_UndoBuffer) + 1)
        End If
        
        'Make Undobuffer
        m_UndoBuffer(UBound(m_UndoBuffer)).uRows = .Rows
        m_UndoBuffer(UBound(m_UndoBuffer)).uCols = .Cols
        m_UndoBuffer(UBound(m_UndoBuffer)).uText = strClip
        If Len(UndoName) Then
            m_UndoBuffer(UBound(m_UndoBuffer)).uName = UndoName
        Else
            m_UndoBuffer(UBound(m_UndoBuffer)).uName = "Last Action"
        End If
    End With
    
    EnableUndo
    
    Exit Sub
DimBuff:
    ReDim m_UndoBuffer(0)
    Resume
End Sub

Private Sub EnableUndo()
    'Enable Controls e.g. Menuitem (mnuEditUndo) and Toolbarbutton
    mnuEditUndo.Enabled = (UBound(m_UndoBuffer) > 1)
    tbrMain.Buttons("Undo").Enabled = (UBound(m_UndoBuffer) > 1)
    If UBound(m_UndoBuffer) > 1 Then
        tbrMain.Buttons("Undo").ToolTipText = "Undo: " & _
        m_UndoBuffer(UBound(m_UndoBuffer)).uName & " (Ctrl+Z)"
        mnuEditUndo.Caption = "Undo: " & _
        m_UndoBuffer(UBound(m_UndoBuffer)).uName
    Else
        tbrMain.Buttons("Undo").ToolTipText = "Undo: Not possible (Ctrl+Z)"
        mnuEditUndo.Caption = "Undo: Not possible"
    End If
End Sub


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -