VB程序!
来源:互联网 发布:jmysql数据库启动服务 编辑:程序博客网 时间:2024/05/31 06:21
vb6中控件没有anchor与dock属性,窗体变大后原来要在resize中调整控件的move属性,否则就面目全非了.网上找到一些调整控件大小的代码,发现并不太适合自己,于是按照思路自己做了一个类似anchor属性的类模块。
代码如下:
Option Explicit
'设置控件Left,Top,Height,Width 类似Anchor属性
'控件大小与位置
Private Type cP
Wp As Single
Hp As Single
Tp As Single
Lp As Single
End Type
Private ccp() As cP
Private iCIndex As Integer '控件的index
Private colControl As New Collection
Private frmOldWidth As Single '记录下原始窗口值宽与高
Private frmOldHeight As Single
Private lFrom As Form
Public Sub InitControlSize(strCName As String)
'存控件初始位置
colControl.Add iCIndex, strCName
ccp(iCIndex).Lp = lFrom.Controls(strCName).Left
ccp(iCIndex).Tp = lFrom.Controls(strCName).Top
ccp(iCIndex).Hp = lFrom.Controls(strCName).Height
ccp(iCIndex).Wp = lFrom.Controls(strCName).Width
iCIndex = iCIndex + 1
End Sub
Public Sub InitFromAllControl()
'把所有控件初始位置大小都保存
If lFrom Is Nothing Then Exit Sub
If iCIndex <> 1 Then Exit Sub
Dim myControl As Control
For Each myControl In lFrom.Controls
colControl.Add iCIndex, myControl.Name
ccp(iCIndex).Lp = myControl.Left
ccp(iCIndex).Tp = myControl.Top
ccp(iCIndex).Hp = myControl.Height
ccp(iCIndex).Wp = myControl.Width
iCIndex = iCIndex + 1
Next
End Sub
Public Sub ControlAnchor(strCName As String, _
Optional bLeft As Boolean = False, _
Optional bTop As Boolean = False, _
Optional bHeight As Boolean = False, _
Optional bWidth As Boolean = False)
On Error Resume Next
Dim fHorizontal As Single
Dim fVertical As Single
Dim index As Integer
fHorizontal = lFrom.ScaleWidth - frmOldWidth '横坐标 对应 left、width属性
fVertical = lFrom.ScaleHeight - frmOldHeight '纵坐标 对应 Top、Height属性
index = colControl.Item(strCName) '从集合里取得控件的index
If bLeft Then lFrom.Controls(strCName).Left = fHorizontal + ccp(index).Lp
If bTop Then lFrom.Controls(strCName).Top = fVertical + ccp(index).Tp
If bHeight Then lFrom.Controls(strCName).Height = fVertical + ccp(index).Hp
If bWidth Then lFrom.Controls(strCName).Width = fHorizontal + ccp(index).Wp
End Sub
Public Property Set setFrom(ByVal sValue As Form)
Set lFrom = sValue
frmOldWidth = lFrom.ScaleWidth
frmOldHeight = lFrom.ScaleHeight
ReDim ccp(1 To lFrom.Controls.Count)
End Property
Private Sub Class_Initialize()
iCIndex = 1
End Sub
Private Sub Class_Terminate()
Set lFrom = Nothing
End Sub
调用方法:
Option Explicit
Dim myAnchor As New clsAnchor
Private Sub Form_Load()
Set myAnchor.setFrom = Me
myAnchor.InitFromAllControl
End Sub
Private Sub Form_Resize()
myAnchor.ControlAnchor "gridOrder", , , True, True
myAnchor.ControlAnchor "Frame2", , , , True
End Sub
效果图:
Collection集合效率不高,可以换成哈希表。
- vb 程序
- vb程序
- VB程序!
- VB代码 VB小程序
- 小议VB程序优化
- VB托盘程序详解
- VB 实现隐形程序
- VB 手机号码编码程序
- 求助vb程序
- VB程序破解
- VB编写摇奖程序
- VB 程序大揭秘
- VB-读写注册表 程序
- VB 加密解密程序
- VB实现关机程序
- VB托盘程序详解
- 爆破VB程序
- VB程序的破解
- 如何有效预防万象网管客户端被破解?
- php 操作mongodb
- 怎样的网站才能打动人心?来看这25个干净美丽的案例吧
- 日历
- 实现iOS应用内购买的三个核心步骤
- VB程序!
- C#中有“静态类”的概念
- ortp发送示例程序备注
- 从几个sample来学习Java堆,方法区,Java栈和本地方法栈
- vb.net写机房收费系统
- GBS超级分床+超级排料=GBS省料专家
- 谈谈RGB、YUY2、YUYV、YVYU、UYVY、AYUV
- SOA商品(Item)查询接口
- JavaWeb常用开发技术总结-js、spring、javabean、mysql数据库、dwr的使用等