一下代码是不久前某个朋友在这里贴的转贴一下:===================================
''新建一个窗体,随便放几个控件,copy代码:
Private Sub Form_Load()
Call ResizeInit(Me)
End SubPrivate Sub Form_Resize()
Call ResizeForm(Me)
End Sub
'''新建一个模块,copy代码如下:
Option Explicit
'¶¨Òå FormOldWidth, FormOldHeight Ϊȫ¾Ö±äÁ¿£¬ÕâÑùÆäËûÄ£¿é²ÅÄܵ÷ÓÃËü
Global FormOldWidth, FormOldHeight'ÔÚµ÷ÓÃResizeFormÇ°Ïȵ÷Óñ¾º¯Êý
Public Sub ResizeInit(FormName As Form)
'ControlÊÇÒ»¸ö¶ÔÏ󣬱íʾËùÓÐ Visual Basic ÄÚ²¿¿Ø¼þµÄÀàÃû¡£
'¿ÉÒÔ½«Ò»¸ö±äÁ¿±êΪ Control ¶ÔÏó£¬ÏóÒý°Ñ¿Ø¼þ·Åµ½´°ÌåÉϵÄÒ»ÑùÀ´ÒýÓÃËü¡£ÀýÈ磺
'Dim C As Control
'Set C = Command1
Dim Obj As Control
FormOldWidth = FormName.ScaleWidth
FormOldHeight = FormName.ScaleHeight
On Error Resume Next
'EachÊÇÒ»¸ö¹Ø¼ü×Ö£¬×÷ÓÃÊÇÕë¶ÔÒ»¸öÊý×é»ò¼¯ºÏÖеÄÿ¸öÔªËØ£¬Öظ´Ö´ÐÐÒ»×éÓï¾ä¡£
'Óï·¨
'For Each element In Group
For Each Obj In FormName
'Tag·µ»Ø»òÉèÖÃÒ»¸ö±í´ïʽÓÃÀ´´æ´¢³ÌÐòÖÐÐèÒªµÄ¶îÍâÊý¾Ý¡£
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj
On Error GoTo 0End 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 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
'InStrº¯Êý£¬·µ»Ø Variant (Long)£¬Ö¸¶¨Ò»×Ö·û´®ÔÚÁíÒ»×Ö·û´®ÖÐ×îÏȳöÏÖµÄλÖá£Óï·¨:InStr([start, ]string1, string2[, compare])
TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
If TempPos > 0 Then
'Midº¯Êý£¬·µ»ØVariant (String)£¬ÆäÖаüº¬×Ö·û´®ÖÐÖ¸¶¨ÊýÁ¿µÄ×Ö·û¡£Óï·¨£ºMid(string, start[, length])
Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
StartPos = TempPos + 1
Else
Pos(i) = 0
End If
'¸ù¾Ý¿Ø¼þµÄԭʼλÖü°´°Ìå¸Ä±ä´óСµÄ±ÈÀý¶Ô¿Ø¼þÖØж¨Î»Óë¸Ä±ä´óС
'Move·½·¨£¬ÓÃÒÔÒƶ¯ MDIForm¡¢Form »ò¿Ø¼þ¡£Óï·¨:object.Move Left, Top, Width, Height
Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Next i
Next Obj
On Error GoTo 0End Sub
''新建一个窗体,随便放几个控件,copy代码:
Private Sub Form_Load()
Call ResizeInit(Me)
End SubPrivate Sub Form_Resize()
Call ResizeForm(Me)
End Sub
'''新建一个模块,copy代码如下:
Option Explicit
'¶¨Òå FormOldWidth, FormOldHeight Ϊȫ¾Ö±äÁ¿£¬ÕâÑùÆäËûÄ£¿é²ÅÄܵ÷ÓÃËü
Global FormOldWidth, FormOldHeight'ÔÚµ÷ÓÃResizeFormÇ°Ïȵ÷Óñ¾º¯Êý
Public Sub ResizeInit(FormName As Form)
'ControlÊÇÒ»¸ö¶ÔÏ󣬱íʾËùÓÐ Visual Basic ÄÚ²¿¿Ø¼þµÄÀàÃû¡£
'¿ÉÒÔ½«Ò»¸ö±äÁ¿±êΪ Control ¶ÔÏó£¬ÏóÒý°Ñ¿Ø¼þ·Åµ½´°ÌåÉϵÄÒ»ÑùÀ´ÒýÓÃËü¡£ÀýÈ磺
'Dim C As Control
'Set C = Command1
Dim Obj As Control
FormOldWidth = FormName.ScaleWidth
FormOldHeight = FormName.ScaleHeight
On Error Resume Next
'EachÊÇÒ»¸ö¹Ø¼ü×Ö£¬×÷ÓÃÊÇÕë¶ÔÒ»¸öÊý×é»ò¼¯ºÏÖеÄÿ¸öÔªËØ£¬Öظ´Ö´ÐÐÒ»×éÓï¾ä¡£
'Óï·¨
'For Each element In Group
For Each Obj In FormName
'Tag·µ»Ø»òÉèÖÃÒ»¸ö±í´ïʽÓÃÀ´´æ´¢³ÌÐòÖÐÐèÒªµÄ¶îÍâÊý¾Ý¡£
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj
On Error GoTo 0End 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 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
'InStrº¯Êý£¬·µ»Ø Variant (Long)£¬Ö¸¶¨Ò»×Ö·û´®ÔÚÁíÒ»×Ö·û´®ÖÐ×îÏȳöÏÖµÄλÖá£Óï·¨:InStr([start, ]string1, string2[, compare])
TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
If TempPos > 0 Then
'Midº¯Êý£¬·µ»ØVariant (String)£¬ÆäÖаüº¬×Ö·û´®ÖÐÖ¸¶¨ÊýÁ¿µÄ×Ö·û¡£Óï·¨£ºMid(string, start[, length])
Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
StartPos = TempPos + 1
Else
Pos(i) = 0
End If
'¸ù¾Ý¿Ø¼þµÄԭʼλÖü°´°Ìå¸Ä±ä´óСµÄ±ÈÀý¶Ô¿Ø¼þÖØж¨Î»Óë¸Ä±ä´óС
'Move·½·¨£¬ÓÃÒÔÒƶ¯ MDIForm¡¢Form »ò¿Ø¼þ¡£Óï·¨:object.Move Left, Top, Width, Height
Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Next i
Next Obj
On Error GoTo 0End Sub
解决方案 »
- 如何向EXCELL中的文本框输入数据?
- 对象变量或者with块变量没有设置(代码如下)
- 菜鸟求救:鼠标问题
- 句柄和进程ID的区别?
- DBGRID怎样才可得到呢?
- 请教VSFLEXGrid中怎么让单元格中的字符自动换行!多谢!(真诚给分,偶是个爽快人!)
- 编程爱好者论坛 http://www.programfan.net/club
- 如何用vb中sql-dmo停止mssql服务!
- 我想把SQL Server中的Image字段作为一个文件由客户下载
- 急!!!今天去应聘,成功了!公司要求我做一份公司网站策划书!请问各位高手如何策划好一个企业网站呀!100分相送
- 请问 &H1是不是代表1,&H2是不是代表2?
- 我用VB写的程序,调用了其他应用程序,想让我的窗口隐藏起来,在调用的应用程序起来后关闭我自己的程序,如何实现?
'''form:
Private Sub Form_Load()
Call ResizeInit(Me)
End SubPrivate Sub Form_Resize()
Call ResizeForm(Me)
End Sub
'''module:
Option Explicit
Global FormOldWidth, FormOldHeightPublic 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 0End SubPublic 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 0End Sub