VB6 仿.netWinfrom控件 Anchor属性类
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 +
End Sub
Public Sub InitFromAllControl()
'把所有控件初始位置大小都保存
If lFrom Is Nothing Then Exit Sub
If iCIndex <> 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 +
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( To lFrom.Controls.Count)
End Property Private Sub Class_Initialize()
iCIndex =
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集合效率不高,可以换成哈希表。
VB6 仿.netWinfrom控件 Anchor属性类的更多相关文章
- 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性
[源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件 ...
- c# 控件的基类——Control
控件的基类用于Windows窗体应用的控件都派生自Control类,并继承了许多通用成员,这些成员都是平时使用控件的过程中最常用的. Name:控件实例的名字,通常通过“属性”窗口设置,控件实例名称变 ...
- C#控件事件属性大全
C#控件及常用设计整 1.窗体... 1 2.Label 控件... 3 3.TextBox 控件... 4 4.RichTextBox控件... 5 5.NumericUpDown 控件... 7 ...
- C#常用控件的属性以及方法(转载)
-----以前看别人的,保存了下来,但是忘了源处,望见谅. C#常用控件属性及方法介绍 目录 1.窗体(Form) 2.Label (标签)控件 3.TextBox(文本框)控件 4.RichText ...
- C#常用控件和属性
目录1.窗体(Form)2.Label (标签)控件3.TextBox(文本框)控件4.RichTextBox控件5.NumericUpDown控件6.Button(按钮)控件7.GroupBox(分 ...
- 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox
[源码下载] 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(选择类) Sel ...
- 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton
[源码下载] 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButt ...
- 背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox
[源码下载] 背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) T ...
- 背水一战 Windows 10 (27) - 控件(文本类): TextBlock
[源码下载] 背水一战 Windows 10 (27) - 控件(文本类): TextBlock 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) TextBlock 示例 ...
随机推荐
- Comet技术浅论
1.如何实现一个轮询? function getMessage(url,callback){ var XHR=new XMLHttpRequest(); XHR.open('get',url,true ...
- 国内Jquery CDN
新浪CDN: <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js">< ...
- HDU 4496 D-City(并查集,逆思维)
题目 熟能生巧...常做这类题,就不会忘记他的思路了... //可以反过来用并查集,还是逐个加边,但是反过来输出...我是白痴.....又没想到 //G++能过,C++却wa,这个也好奇怪呀... # ...
- win7建wifi 热点,附wifi小工具
首先申明:1)以下操作均在管理员身份下操作,其他用户下请亲测. 2)具备无线网卡,并且已经安装好了驱动. 1.打开命令行:输入netsh wlan set hostedn ...
- 简约的单页应用引擎:sonnyJS
点这里 SonnyJS是一个简约的单页应用引擎和HTML预处理器,旨在帮助开发人员和设计人员创建难以置信的强大和快速的单页网站. 主要特性: 模板嵌套,模板继承 动态同步模板路由(非Ajax) 跨窗口 ...
- 项目中用到的SQL-总结
基本sql总结: Group by的理解:having子句,分组函数 Group by使用的限定: 1.出现在Select列表中的字段或者出现在order by后面的字段,如果不是包含在分组函数中,那 ...
- Visual Studio 自定义控件不显示在工具箱
工具=>选项=>Windows窗体设计器=>常规=>AutoToolBoxPopulate=>True
- tomcat下context.xml中JNDI数据源配置
jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...
- Axis学习的第一天
下载axis的相关工程包: 选中这2个文件下载: 1)axis-bin-1.4.zip 含有axis工程包,将工程包复制到tomcat里的webapps目录下: 2)axis-src-1.4.zip ...
- TCP协议RST:RST介绍、什么时候发送RST包
TCP协议RST:RST介绍.什么时候发送RST包 RST标示复位.用来异常的关闭连接. 1. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区中的包,发送RST. 2. 而接收端收 ...