vb 在不同的分配率中自动调整控件大小的代码
我做这个程序是用的电脑的分配率是1680*1050,我想在分配率是1280*800的电脑开这个程序,可是开了过后就变成下面那样了请问有什么code可以在不同的分配率中自动...
我做这个程序是用的电脑的分配率是1680*1050, 我想在分配率是1280*800 的电脑开这个程序,可是开了过后就变成下面那样了
请问有什么code 可以在不同的分配率中自动调整整个窗口和里面的控件,我想要代码 我不想把分配率改成800*600 重做 太浪费时间了 请各位大大指点指点,谢谢。
我做这个程序的时候是用分配率是1680*1050的电脑做的, 我想在分配率是1280*800 的电脑开这个程序,可是开了过后就变成下面那样了(上面那句写错了 )
也不要用anchor 属性的,如果anchor 属性可以用在那么多控件上的方法的话可以提出来,谢谢 展开
请问有什么code 可以在不同的分配率中自动调整整个窗口和里面的控件,我想要代码 我不想把分配率改成800*600 重做 太浪费时间了 请各位大大指点指点,谢谢。
我做这个程序的时候是用分配率是1680*1050的电脑做的, 我想在分配率是1280*800 的电脑开这个程序,可是开了过后就变成下面那样了(上面那句写错了 )
也不要用anchor 属性的,如果anchor 属性可以用在那么多控件上的方法的话可以提出来,谢谢 展开
2个回答
展开全部
最好你的控件是控件组,那样好算方便,不然你,就算改,也得盖得累死。
你可以按比例缩放控件。
下面的程序就是先在form载入的时候获取他的大小,然后获取form大小变化后的值,取他的比例。然后按照比例调整控件大小。调整完后重新获取大小 ,作为再调整时的初始值。希望看了之后,对你有帮助。
刚才的程序有点问题,我修改了。
Option Explicit
Dim w, h
Private Sub Form_resize()
Dim bilih, biliw, i
bilih = Form1.Width / h
biliw = Form1.Height / w
For i = 0 To 2
Text1(i).Top = Int(bilih * Text1(i).Top)
Text1(i).Height = Int(bilih * Text1(i).Height)
Text1(i).Left = Int(biliw * Text1(i).Left)
Text1(i).Width = Int(biliw * Text1(i).Width)
Next
w = Form1.Width
h = Form1.Height
End Sub
Private Sub Form_Load()
w = Form1.Width
h = Form1.Height
End Sub
更多追问追答
追答
VB6.0,我那屌程序还是没调试好。。。。不过调整的原理就是那样的。我看看你的
追问
vb 6.0 的code 有点看不懂...
展开全部
Private Sub Form_Load()
On Error Resume Next
Dim c As Control, w As Single, h As Single
w = Me.ScaleWidth
h = Me.ScaleHeight
For Each c In Me.Controls
Err.Clear
If TypeName(c) = "ComboBox" Or TypeName(c) = "DriveListBox" Then
c.Tag = c.Left / w & "|" & c.Top / h & "|" & c.Width / w
ElseIf TypeName(c) = "Line" Then
c.Tag = c.X1 / w & "|" & c.Y1 / h & "|" & c.X2 / w & "|" & c.Y2 / h
Else
c.Tag = c.Left / w & "|" & c.Top / h & "|" & c.Width / w & "|" & c.Height / h
End If
If Err.Number Then c.Tag = ""
Next
End Sub
Private Sub Form_Resize()
On Error Resume Next
Dim s() As String, c As Control, w As Single, h As Single
w = Me.ScaleWidth
h = Me.ScaleHeight
For Each c In Me.Controls
s = Split(c.Tag, "|")
If UBound(s) = 2 Then
c.Move w * s(0), h * s(1), w * s(2)
ElseIf UBound(s) = 3 Then
If TypeName(c) = "Line" Then
c.X1 = w * s(0)
c.Y1 = h * s(1)
c.X2 = w * s(2)
c.Y2 = h * s(3)
Else
c.Move w * s(0), h * s(1), w * s(2), h * s(3)
End If
End If
Next
End Sub
特别说明:
1、个别控件如ComboBox、DriveListBox由于其height(高度)属性是只读的,所以它们的高度是无法随窗体高度的变化而变化的;
2、由于字体的缩放属于有级缩放,无法随窗体实现无级缩放,所以上述代码未考虑控件字体的缩放问题,也就是说字体大小是不变的;
3、上述代码仅保证对VB本身自带的标准控件有效,如果是第三方控件或自定义控件,很可能使用了某些特殊属性,所以不一定有效,但大部分肯定是有效的。
更多追问追答
追问
请问这个是vb 2010 的code 吗?
你的x1 x2 y1 y2 是什么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询