vb程序的窗体任意宿放,其中的控件,大小,位置,容器中的控件的(大小,位置),也自动跟着适应。Form_Resize时,界面的控件不能auto改变大小,来适应环境
我就是不知道原理和方法。我不想做的程序,都做成固定窗体要用到
.left,.width,.top,.height
ScaleWidth,ScaleHeight等属性。For Each Obj In FormName
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj当form,拉动时,要用 move方法。
我就是不知道原理和方法。我不想做的程序,都做成固定窗体要用到
.left,.width,.top,.height
ScaleWidth,ScaleHeight等属性。For Each Obj In FormName
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj当form,拉动时,要用 move方法。
Private FormOldWidth As Long
'保存窗体的原始宽度
Private FormOldHeight As Long
'保存窗体的原始高度'在调用ResizeForm前先调用本函数
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'按比例改变表单内各元件的大小,
在调用ReSizeForm前先调用ReSizeInit函数
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 DoubleScaleX = 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 SubPrivate Sub Form_Load()
Call ResizeInit(Me) '在程序装入时必须加入
End SubPrivate Sub Form_Resize()
Call ResizeForm(Me) '确保窗体改变时控件随之改变
End Sub
不好意思我不记得是那个了!自已找下
这个控件是不是需要注册的?如果不用注册请上传到ftp://[email protected]谢谢~~
还有,小弟要补充一点,2楼的做法是很好,但是也存在一个问题,就是在改变控件大小的同时,字体也会变,特别是如果有按钮,按钮也会变大,所以,还是用笨办法好一些,把那些大小和相对位置(比如窗体的下面)不变的控件放到一个Frame里,在Resize事件里写代码,一个控件一个控件的with,虽然麻烦,但是效果很好~那些需要变,那些不需要可以自己控制~
[email protected]
[email protected]
可是在VB中无法作控件的超类给每个控件添加一个 Dock 属性,所以我的思路是作一个容器控件 DockPanel,DockPanel 有一个PropertyPage,在PropertyPage中列出该 Panel中的所有控件,并可设置每个控件的 Dock 属性,和 DotNet中一样,每个控件可以设定上、下、左、右四边对齐,这几种对齐方式的组合就能够得到比较满意的效果了,例如:
下、右对齐,则控件的大小不变,位置随容器变化,但总是保持相对右下脚位置不变
上、下对齐,则控件的位置不变,高度随容器的高度变化
左、右对齐,则控件的位置不变,宽度随容器宽度变化
等等
楼二,好像少了一段代码?
[email protected];
[email protected];
[email protected];
[email protected];
[email protected];
[email protected];
[email protected]
如有“漏网之鱼”:),请留言。
不好意思,小弟晚了一步。
还望能在发下,多谢了!
的文件就是许可证,千万不能丢了。记得把这三个文件都拷贝到系统目录(system32)下面。
或是:[email protected]谢谢
[email protected]
[email protected]
[email protected]
[email protected]
[email protected];
[email protected];
[email protected];
[email protected];
[email protected];
[email protected];
[email protected];
[email protected];
[email protected]
to TalentLi(▁▂▃▄▅ 天才的我 ▆▅▄▃▂▁)
不需要注册,但你提供的ftp无法登陆
[email protected]
[email protected]