控件伴随窗体变化
2015-07-17 10:52
183 查看
虽然这是个小功能,但是历史可以追溯到作品展,当时就特别想让控件伴随窗体的变大而变大,如果窗体变大了而控件还是那么小就会很难看,所以各种查资料,看书。后来算是解决了这个问题。但是当时并没有记录下来,直到后来又有人问我,我想应该把学到的新东西,比较陌生的做一个总结。
下面来看看我是怎么实现的
1、添加一个标准模块,在模块里写下如下代码:
2、在窗体中调用模块的过程
光看两张简单的图片可能看不出来,大家可以亲自实践一下。结合到自己做的小程序里。
下面来看看我是怎么实现的
1、添加一个标准模块,在模块里写下如下代码:
Option Explicit Private FormOldWidth As Long '保存窗体的原始宽度 Private FormOldHeight As Long '保存窗体的原始高度 Public Sub ResizeInit(FormName As Form) Dim Obj As Control FormOldWidth = FormName.ScaleWidth FormOldHeight = FormName.ScaleHeight On Error Resume Next For Each Obj In FormName Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " " Next Obj On Error GoTo 0 End Sub Public Sub ResizeForm(FormName As Form) Dim Pos(4) As Double Dim i As Long, TempPos As Long, StartPos As Long Dim Obj As Control Dim ScaleX As Double, ScaleY As Double ScaleX = FormName.ScaleWidth / FormOldWidth ScaleY = FormName.ScaleHeight / FormOldHeight On Error Resume Next For Each Obj In FormName StartPos = 1 For i = 0 To 4 TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare) If TempPos > 0 Then Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos) StartPos = TempPos + 1 Else Pos(i) = 0 End If Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY Next i Next Obj On Error GoTo 0 End Sub
2、在窗体中调用模块的过程
Private Sub Form_Resize() Call ResizeForm(Me) '确保窗体改变时控件随之改变 End Sub Private Sub Form_Load() Call ResizeInit(Me) '在程序装入时加入 end sub下面看看敲好的效果图:
光看两张简单的图片可能看不出来,大家可以亲自实践一下。结合到自己做的小程序里。
相关文章推荐
- 线上解决问题分析
- 细雨学习笔记:Jmeter上一个请求的结果作为下一个请求的参数--使用正则提取器
- 使用 Vagrant 打造跨平台开发环境
- c语言 如何判断是不是 可显字符
- 详解Android动画之Frame Animation(转)
- linux下调整时区和时间的方法
- Android之-----GridView使用的方法总结
- ListView之BaseAdapter的使用
- ListView知识总结
- 数据库初步学习
- Android项目加载后图标不显示解决方案
- 获取Android媒体库中的音乐文件
- SQLite dos下查看表中记录的方法
- linux下查看端口的占用情况
- 最大K乘积
- 音乐播放器版本
- 浅谈jQuery的offset()方法及示例分享
- Python笔记:socket模块的getaddrinfo详解
- 简单的ListView上拉加载
- 对mvc模式的理解