想用MSFlexGrid控键做下面的表格请老师帮忙看看 品名 数量            累加                    累减 
022 360  输出9也就是(3+6+0的和) 输出3(最大数减最小数) 
021 482           14                     6 
020 869           23                     3 
依此类推 
品名和数量要求调用c:\cc.txt的数据。(最好自己能生成一个txt文件,然后用户将来就可以直接到这个文件进行修改) 
数据在cc.txt的书写方式为: 
022,360 
021,482 
020,869 
问题: 
我可以把 
品名 数量 累加 累减 用label来显示 
问题一:第一列怎样去读取cc.txt里“,”前面的数然后按顺序向下显示 
问题二:第二列怎样去读取cc.txt里“,”后面的数然后按顺序向下显示 
问题三:第三列怎样去获取当前行2列的数字,然后进行运算显示在当前单元格 
我想这些都是可以整列设置的,但自己不会啊,还有就是让他自己生成一个txt文件,文件名就叫“谢谢恩师”吧,请恩师帮忙看看写出代码来,在这里先谢谢了

解决方案 »

  1.   


    '增加一个MSFlexGrid1的控件
    '有一个C:\CC.Txt的文件.
    '文件里面的内容:(注意逗号为半角,不是全角)
    '022,360 
    '021,482 
    '020,869 Option ExplicitPrivate Type DataInfo
       PratName As String
       PartNumber As String
    End Type
    Private Sub Form_Load()
      Dim i As Long
      Dim mData() As Long
      
      Dim NDataInfo() As DataInfo
      NDataInfo = OpenFile("c:\cc.txt")
      
      
      
      MSFlexGrid1.FixedCols = 0
      MSFlexGrid1.FixedRows = 0
      
      MSFlexGrid1.Rows = UBound(NDataInfo)
      MSFlexGrid1.Cols = 4
      
      For i = 1 To UBound(NDataInfo)
        MSFlexGrid1.TextMatrix(i - 1, 0) = Trim(NDataInfo(i).PratName)
        MSFlexGrid1.TextMatrix(i - 1, 1) = Trim(NDataInfo(i).PartNumber)
        
        mData = GetData(NDataInfo(i).PartNumber)
        
        MSFlexGrid1.TextMatrix(i - 1, 2) = mData(1)
        MSFlexGrid1.TextMatrix(i - 1, 3) = mData(2)
      Next
      
    End SubPrivate Function GetData(ByVal Data As String) As Long()
       Dim CData(1 To 2) As Long
       Dim i As Long
       Dim MaxNum As Long
       Dim MinNum As Long
       
       Data = Trim(Data)
       
       GetData = CData
       
       If Len(Data) = 0 Then Exit Function
       
       For i = 1 To Len(Data)
         CData(1) = CData(1) + CLng(Mid(Data, i, 1))
       Next   MaxNum = Mid(Data, 1, 1)
       MinNum = Mid(Data, 1, 1)
       
       For i = 2 To Len(Data)
          If MaxNum < CLng(Mid(Data, i, 1)) Then
             MaxNum = CLng(Mid(Data, i, 1))
          End If
          
          If MinNum > CLng(Mid(Data, i, 1)) Then
             MinNum = CLng(Mid(Data, i, 1))
          End If
          
       Next
       CData(2) = MaxNum - MinNum
       GetData = CData
       
    End Function
    Private Function OpenFile(ByVal FileName As String) As DataInfo()
        Dim Data() As DataInfo
        Dim Count As Long
        Dim CData As String
        Dim sData() As String
        Open FileName For Input As #1
           
           While Not EOF(1)
              Count = Count + 1
              ReDim Preserve Data(Count) As DataInfo
              Line Input #1, CData
              sData = Split(CData, ",")
              Data(Count).PratName = sData(0)
              Data(Count).PartNumber = sData(1)
           Wend
        Close #1
        
        OpenFile = Data
    End Function
      

  2.   

    保存msflexgrid的数据
    Private Sub Command1_Click()
        Dim i As Long
        Open "c:\保存.txt" For Output As #1
        'Print #1, "品名", "数量", "累加", "累减"
        For i = 0 To MSFlexGrid1.Rows - 1
            Print #1, MSFlexGrid1.TextMatrix(i, 0), MSFlexGrid1.TextMatrix(i, 1), MSFlexGrid1.TextMatrix(i, 2), MSFlexGrid1.TextMatrix(i, 3)
        Next
        Close 1
    End Sub