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属性类的更多相关文章

  1. 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性

    [源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件 ...

  2. c# 控件的基类——Control

    控件的基类用于Windows窗体应用的控件都派生自Control类,并继承了许多通用成员,这些成员都是平时使用控件的过程中最常用的. Name:控件实例的名字,通常通过“属性”窗口设置,控件实例名称变 ...

  3. C#控件事件属性大全

    C#控件及常用设计整 1.窗体... 1 2.Label 控件... 3 3.TextBox 控件... 4 4.RichTextBox控件... 5 5.NumericUpDown 控件... 7 ...

  4. C#常用控件的属性以及方法(转载)

    -----以前看别人的,保存了下来,但是忘了源处,望见谅. C#常用控件属性及方法介绍 目录 1.窗体(Form) 2.Label (标签)控件 3.TextBox(文本框)控件 4.RichText ...

  5. C#常用控件和属性

    目录1.窗体(Form)2.Label (标签)控件3.TextBox(文本框)控件4.RichTextBox控件5.NumericUpDown控件6.Button(按钮)控件7.GroupBox(分 ...

  6. 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox

    [源码下载] 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(选择类) Sel ...

  7. 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton

    [源码下载] 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButt ...

  8. 背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox

    [源码下载] 背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) T ...

  9. 背水一战 Windows 10 (27) - 控件(文本类): TextBlock

    [源码下载] 背水一战 Windows 10 (27) - 控件(文本类): TextBlock 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) TextBlock 示例 ...

随机推荐

  1. C#&Java重学笔记(集合比较和转换)

    C#部分: 1.C#中集合有三种,数组类,ArrayList,和字典键值对类,一般也可以自定义集合,但是自定义集合的类型也只有这三类. 2.自定义集合实现三类集合的方法:前两者需要继承Collecti ...

  2. POJ 2142 The Balance (解不定方程,找最小值)

    这题实际解不定方程:ax+by=c只不过题目要求我们解出的x和y 满足|x|+|y|最小,当|x|+|y|相同时,满足|ax|+|by|最小.首先用扩展欧几里德,很容易得出x和y的解.一开始不妨令a& ...

  3. C#修改注册表设置默认浏览器

    项目中用到VPN技术登录来访问内部网络的应用系统,VPN客户端连接后会自动以默认浏览器来打开站点,由于应用系统使用的前端框架对IE浏览器版本要求较高,而用户大多数的电脑里安装的IE的版本都较低,于是想 ...

  4. 来认识下less css

    简介 感觉自己都out了,跟不上web时代的潮流了,前不久才刚接触这玩意,发觉lesscss在某些方面还挺有用的,说白了这东西就是一种动态的样式语言,语法类似于css,可以像java那样进行编译,生成 ...

  5. 使用Ninject来解决程序中组件的耦合问题

    1.为什么要用Ninject? Ninject是一个IOC容器用来解决程序中组件的耦合问题,它的目的在于做到最少配置.其他的的IOC工具过于依赖配置文件,需要使用assembly-qualified名 ...

  6. 15 things to talk about in a healthy relationship

    15 things to talk about in a healthy relationship男女交往中可以谈论的15个话题 1. Your Daily Activities 1. 你的日常活动 ...

  7. MyEclipse快捷键记录

    MyEclipse快捷键 ------------------------------------- MyEclipse 快捷键1(CTRL) ---------------------------- ...

  8. iOS开发--iOS及Mac开源项目和学习资料

    文/零距离仰望星空(简书作者)原文链接:http://www.jianshu.com/p/f6cdbc8192ba著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 原文出处:codecl ...

  9. java 基本数据类型 回顾

  10. MakeObjectInstance的简单理解

    昨天把MakeObjectInstance的代码详细研究了一下,当然还有众多前辈高手们的帮助,终于大致搞明白了是怎么回事.但是给我顿悟的,不是高手们的帖子,而是来自我自己的一个疑惑,TObjectIn ...