如何根据分辩率大小,自动调整MSHFlexGrid表格的宽度'这是1024*768刚刚好的宽度,如果分辩率到了1440*900 如何自动调整表格的宽度
MSHFlexGrid1.ColWidth(0) = 300
MSHFlexGrid1.ColWidth(1) = 2000
MSHFlexGrid1.ColWidth(2) = 3000 
MSHFlexGrid1.ColWidth(3) = 1500 
MSHFlexGrid1.ColWidth(4) = 800 
MSHFlexGrid1.ColWidth(5) = 1000 
MSHFlexGrid1.ColWidth(6) = 1000 
MSHFlexGrid1.ColWidth(7) = 1600 

解决方案 »

  1.   

    来这个帖子看看
    http://topic.csdn.net/u/20101109/16/e1372546-f1db-4c1e-8bb3-bd5485f3bbf5.html?20472
      

  2.   

    [code=VB]Option ExplicitPrivate Sub Form_Load()
        Dim lngScreenW As Long  '屏幕的宽
        Dim lngScreenH As Long  '屏幕的高
        
        lngScreenW = Screen.Width / 15
        lngScreenH = Screen.Height / 15
        
        If lngScreenW = 1024 And lngScreenH = 968 Then
            MSHFlexGrid1.ColWidth(0) = 300
            MSHFlexGrid1.ColWidth(1) = 2000
            MSHFlexGrid1.ColWidth(2) = 3000
            MSHFlexGrid1.ColWidth(3) = 1500
            MSHFlexGrid1.ColWidth(4) = 800
            MSHFlexGrid1.ColWidth(5) = 1000
            MSHFlexGrid1.ColWidth(6) = 1000
            MSHFlexGrid1.ColWidth(7) = 1600
        End If
        If lngScreenW = 1440 And lngScreenH = 900 Then
            MSHFlexGrid1.ColWidth(0) = 400
            MSHFlexGrid1.ColWidth(1) = 2100
            MSHFlexGrid1.ColWidth(2) = 3200
            MSHFlexGrid1.ColWidth(3) = 1600
            MSHFlexGrid1.ColWidth(4) = 900
            MSHFlexGrid1.ColWidth(5) = 1100
            MSHFlexGrid1.ColWidth(6) = 1100
            MSHFlexGrid1.ColWidth(7) = 1700
        End If
        
    End Subcode]
      

  3.   

    Private Sub Form_Load()
      Dim lngScreenW As Long '屏幕的宽    
      lngScreenW = Screen.Width / 15    
      
      MSHFlexGrid1.ColWidth(0) = 300
      MSHFlexGrid1.ColWidth(1) = 2000
      MSHFlexGrid1.ColWidth(2) = 3000
      MSHFlexGrid1.ColWidth(3) = 1500
      MSHFlexGrid1.ColWidth(4) = 800
      MSHFlexGrid1.ColWidth(5) = 1000
      MSHFlexGrid1.ColWidth(6) = 1000
      MSHFlexGrid1.ColWidth(7) = 1600  for i=0 to 7
      MSHFlexGrid1.ColWidth(i) = MSHFlexGrid1.ColWidth(i)/1024 *lngScreenW 
      

  4.   

    MSHFlexGrid1.Width=MSHFlexGrid1.Width/1024 *lngScreenW 
      

  5.   

    lngScreenW = Screen.Width / 15
    for i=0 to 7
          MSHFlexGrid1.ColWidth(i) = MSHFlexGrid1.ColWidth(i)/1024 *lngScreenW 
     next i
      

  6.   

    这很简单啊,比如:Private Sub Form_Load()
        Dim dblScale As Double
        
        dblScale = Screen.Width \ Screen.TwipsPerPixelX \ 1024
        
        Me.MSHFlexGrid1.Cols = 8
        MSHFlexGrid1.ColWidth(0) = 300 * dblScale
        MSHFlexGrid1.ColWidth(1) = 2000 * dblScale
        MSHFlexGrid1.ColWidth(2) = 3000 * dblScale
        MSHFlexGrid1.ColWidth(3) = 1500 * dblScale
        MSHFlexGrid1.ColWidth(4) = 800 * dblScale
        MSHFlexGrid1.ColWidth(5) = 1000 * dblScale
        MSHFlexGrid1.ColWidth(6) = 1000 * dblScale
        MSHFlexGrid1.ColWidth(7) = 1600 * dblScale
    End Sub
      

  7.   

    上面有句写错了,不能用整除,修改为:
    dblScale = (Screen.Width \ Screen.TwipsPerPixelX) / 1024
      

  8.   

    按你的MSHFlexGrid1.Width 怎么设?
      

  9.   


    Private Sub Form_Load()
        Dim i As Long, dblScale As Double, dblTotalWidth As Double, vWidths() As Variant
        
        Me.ScaleMode = vbPixels
        dblScale = (Screen.Width \ Screen.TwipsPerPixelX) / 1024
        
        vWidths = Array(300, 2000, 3000, 1500, 800, 1000, 1000, 1600)
        Me.MSHFlexGrid1.Cols = UBound(vWidths) + 1
        For i = 0 To UBound(vWidths)
            dblTotalWidth = dblTotalWidth + vWidths(i) * dblScale
            Me.MSHFlexGrid1.ColWidth(i) = vWidths(i) * dblScale
        Next
        Me.MSHFlexGrid1.Width = dblTotalWidth \ Screen.TwipsPerPixelX + 6
    End Sub