手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

VB中控件大小随窗体大小变化而变化

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

 Dim minFactor As Single
 Dim yRatio, xRatio, lTop, lLeft, lWidth, lHeight As Long
 yRatio = PerHeight(pfrmIn)
 xRatio = PerWidth(pfrmIn)
 i = FindControl(inControl, pfrmIn.Name)

 If inControl.Left < 0 Then
  lLeft = CLng(((ControlRecord(i).Left * xRatio) \ 100) - 75000)
 Else
  lLeft = CLng((ControlRecord(i).Left * xRatio) \ 100)
 End If

 lTop = CLng((ControlRecord(i).Top * yRatio) \ 100)
 lWidth = CLng((ControlRecord(i).Width * xRatio) \ 100)
 lHeight = CLng((ControlRecord(i).Height * yRatio) \ 100)
 If TypeOf inControl Is Line Then

  If inControl.X1 < 0 Then
   inControl.X1 = CLng(((ControlRecord(i).Left * xRatio) \ 100) - 75000)
  Else
   inControl.X1 = CLng((ControlRecord(i).Left * xRatio) \ 100)
  End If

  inControl.Y1 = CLng((ControlRecord(i).Top * yRatio) \ 100)
  If inControl.X2 < 0 Then
   inControl.X2 = CLng(((ControlRecord(i).Width * xRatio) \ 100) - 75000)
  Else
   inControl.X2 = CLng((ControlRecord(i).Width * xRatio) \ 100)
  End If

  inControl.Y2 = CLng((ControlRecord(i).Height * yRatio) \ 100)
 Else
  inControl.Move lLeft, lTop, lWidth, lHeight
  inControl.Move lLeft, lTop, lWidth
  inControl.Move lLeft, lTop
 End If

End Sub

Public Sub ResizeForm(pfrmIn As Form)

 Dim FormControl As Control
 Dim isVisible As Boolean
 Dim StartX, StartY, MaxX, MaxY As Long
 Dim bNew As Boolean

 If Not bRunning Then
  bRunning = True

  If FindForm(pfrmIn) < 0 Then
   bNew = True
  Else
   bNew = False
  End If
  If pfrmIn.Top < 30000 Then
   isVisible = pfrmIn.Visible
   On Error Resume Next
   If Not pfrmIn.MDIChild Then
    On Error GoTo 0
    ' ' pfrmIn.Visible = False
   Else

    If bNew Then
     StartY = pfrmIn.Height
     StartX = pfrmIn.Width
     On Error Resume Next
     For Each FormControl In pfrmIn
      If FormControl.Left FormControl.Width 200 > MaxX Then
       MaxX = FormControl.Left FormControl.Width 200
      End If

      If FormControl.Top FormControl.Height 500 > MaxY Then
       MaxY = FormControl.Top FormControl.Height 500
      End If

      If FormControl.X1 200 > MaxX Then
       MaxX = FormControl.X1 200
      End If

      If FormControl.Y1 500 > MaxY Then
       MaxY = FormControl.Y1 500
      End If

      If FormControl.X2 200 > MaxX Then
       MaxX = FormControl.X2 200
      End If

      If FormControl.Y2 500 > MaxY Then
       MaxY = FormControl.Y2 500
      End If

     Next FormControl

     On Error GoTo 0
     pfrmIn.Height = MaxY
     pfrmIn.Width = MaxX
    End If

    On Error GoTo 0
   End If

   For Each FormControl In pfrmIn
    ResizeControl FormControl, pfrmIn
   Next FormControl

   On Error Resume Next

   If Not pfrmIn.MDIChild Then
    On Error GoTo 0
    pfrmIn.Visible = isVisible
   Else

    If bNew Then
    pfrmIn.Height = StartY
    pfrmIn.Width = StartX

    For Each FormControl In pfrmIn
     ResizeControl FormControl, pfrmIn
    Next FormControl

   End If
  End If
  On Error GoTo 0
 End If
 bRunning = False
End If

End Sub

Public Sub SaveFormPosition(pfrmIn As Form)

 Dim i As Long

 If MaxForm > 0 Then

  For i = 0 To (MaxForm - 1)

   If FormRecord(i).Name = pfrmIn.Name Then

    FormRecord(i).Top = pfrmIn.Top
    FormRecord(i).Left = pfrmIn.Left
    FormRecord(i).Height = pfrmIn.Height
    FormRecord(i).Width = pfrmIn.Width
    Exit Sub
   End If
  Next i

  AddForm (pfrmIn)
 End If
End Sub

Public Sub RestoreFormPosition(pfrmIn As Form)

 Dim i As Long
 If MaxForm > 0 Then
  For i = 0 To (MaxForm - 1)
   If FormRecord(i).Name = pfrmIn.Name Then
    If FormRecord(i).Top < 0 Then
     pfrmIn.WindowState = 2
    ElseIf FormRecord(i).Top < 30000 Then
     pfrmIn.WindowState = 0
     pfrmIn.Move FormRecord(i).Left, FormRecord(i).Top, FormRecord(i).Width, FormRecord(i).Height
    Else

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!