科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用Visual Basic6类模块打造控件

用Visual Basic6类模块打造控件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

VB6因为简单易用,受到很多朋友的喜欢。可是也有人说它功能简单,没有给开发者提供足够的发挥余地。

作者:许瑞军 来源:开发高手 2007年10月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

3、类模块方法

’给分割条控件指定所在的窗体、Label控件、分割条类型等
Public Sub Attach(f As Form, sp As Label, hv As Integer,min As Long, max As Long)
 Set mForm = f ’设置窗体变量
 ’设置分割条控件变量为传入的Label控件
 Set SplitBar = sp
 ’给分割条做个标记,表明这个Label是分割条
 SplitBar.Tag = "SPLIT"
 If hv = 0 Then ’如果是水平分割条
  HorV = 0 ’设置分割条类型
  ’ 设置Label控件的鼠标光标为左右箭头
  SplitBar.MousePointer = 9
  ’最小位置与最大位置设置
 If max < min + SplitBar.Width Then
  iMin = 100
  iMax = mForm.ScaleWidth - SplitBar.Width - 100
 Else
  iMin = min
  iMax = max
 End If
Else
 HorV = 1 ’如果是水平分割条
 ’设置Label控件的鼠标光标为上下箭头
 SplitBar.MousePointer = 7
 If max < min + SplitBar.Height Then
  iMin = 100
  iMax = mForm.ScaleWidth - SplitBar.Height - 100
 Else
  iMin = min
  iMax = max
 End If
End If
End Sub

’添加分割条左侧的控件 如果不是水平分割条则退出
Public Sub SetLeftBind(c As Control)
 If HorV = 1 Then Exit Sub
 AddBindControl c, 1
End Sub

’添加分割条上方的控件 如果不是垂直分割条则退出
Public Sub SetUpBind(c As Control)
 If HorV = 0 Then Exit Sub
 AddBindControl c, 2
End Sub

’添加分割条下方的控件 如果不是垂直分割条则退出
Public Sub SetDownBind(c As Control)
 If HorV = 0 Then Exit Sub
 AddBindControl c, 3
End Sub

’帮助函数 私有 往控件数组里加入一个控件
Private Sub AddBindControl(c As Control, ipos As Integer)
 If numControls < 10 Then ’确保控件数组不溢出
  numControls = numControls + 1
  Set myBindControls(numControls - 1).binControl = c
  myBindControls(numControls - 1).pos = ipos
 End If
End Sub

’计算控件位置
Public Sub ArrangePosition()
 On Error GoTo err
 Dim i As Integer
 If HorV = 0 Then
  ’水平分割条 设置高度为窗体的高度
  SplitBar.Height = mForm.ScaleHeight - _
    SplitBar.Top - 10
 Else
 ’垂直分割条 设置宽度为窗体的宽度 如果要将垂直分割条嵌入水平分割条中 则将此分支去掉(见本文例图)
 ’SplitBar.Width = mForm.ScaleWidth - SplitBar.
 Left - 10
End If

Dim i1 As Integer
Dim i2 As Integer
Dim lf1 As Integer ’控件右侧或底部的边界
Dim lf2 As Integer ’控件右侧或底部的边界
’垂直分割 找到最右端的控件 上方为i1,下方为i2
If HorV = 1 Then
 For i = 0 To numControls - 1
  With myBindControls(i)
   If .pos = 2 Then
    If .binControl.Left + .binControl.Width > lf1 Then
     lf1 = .binControl.Left + .binControl.Width
     i1 = i
    End If
   ElseIf .pos = 3 Then
    If .binControl.Left + .binControl.Width > lf2 Then
     lf2 = .binControl.Left + .binControl.Width
     i2 = i
    End If
   End If
  End With
 Next i
Else ’水平分割 找到最底部的控件 左边为i1,右边为i2
 For i = 0 To numControls - 1
  With myBindControls(i)
   If .pos = 0 Then
    If .binControl.Top + .binControl.Height > lf1 Then
     lf1 = .binControl.Top + .binControl.Height
     i1 = i
    End If
   ElseIf .pos = 1 Then
    If .binControl.Top + .binControl.Height > lf2 Then
     lf2 = .binControl.Top + .binControl.Height
     i2 = i
    End If
   End If
  End With
 Next i
End If

’遍历控件数组进行位置计算
For i = 0 To numControls - 1
 With myBindControls(i) .binControl
  Select Case myBindControls(i).pos
   Case 0 ’左侧控件
    .Width = SplitBar.Left - .Left - 10
    If i = i1 Then ’如果是最底部的控件
     .Height = SplitBar.Top + SplitBar.Height - .Top
    End If
   Case 1 ’右侧控件
    .Left = SplitBar.Left + SplitBar.Width + 10
    .Width = mForm.ScaleWidth - SplitBar.Left - SplitBar.Width - 10
    If i = i2 Then ’如果是最底部的控件
     .Height = SplitBar.Top + SplitBar.Height - .Top
    End If
   Case 2 ’上方控件
    .Height = SplitBar.Top - .Top - 10
    If i = i1 Then ’如果是最右侧的控件
     .Width = SplitBar.Left + SplitBar.Width - .Left
    End If
   Case 3 ’下方控件
    .Top = SplitBar.Top + SplitBar.Height + 10
    .Height = mForm.ScaleHeight - SplitBar.Top- SplitBar.Height - 10
    If i = i2 Then ’如果是最右侧的控件
     .Width = SplitBar.Left + SplitBar.Width - .Left
    End If
   End Select
  End With
 Next i
err:
End Sub
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章