vb 中如何自定义命令按钮?
另外,制作出来的窗体,如何让窗体里面的对象随着窗体大小的改变,也一起改变?
多谢你的帮助,只有按钮的位置固定了,它不随窗体的大小一起改变大小。还有就是text没有变化。
没错,我新建了个窗体,加了一个按钮,一个text。在Private Sub Form_Resize()里面复制上了你所给的代码,按钮的代码也是我复制上的。效果是:按钮永远在窗体的左下角,而TEXT的位置是不变的。
能不能让窗体内的对象 如画一样可以随着窗体的大小一起以一定的比例放大缩小呢?
另外,很感谢你的热心帮助,我加了20分悬赏,分不多,一点心意。
你的代码在我的机器上的情况,跟你说的不一样。不知道在你机器上运行的效果怎样。。。。。。
vlaoda朋友,你好,你能给个简单的实例吗? 展开
窗体变化大小,其所属控件改变主要有控件位置的改变和控件大小的改变
一般来说对于按钮类的,我们只需要改变其位置,而对于Pic控件来说,一般会改变其大小
举个简单的例子吧
在一个form里,加入command1,Text1两个控件
在代码里编辑
Private Sub Form_Resize()
If Me.WindowState = 1 Then Exit Sub '防止最小化时出现的属性错误
With Me.Command1
.Top = Me.Height - .Height - 385
.Left = 0
End With
With Me.Text1
.Top = 0
.Left = 0
.Width = Me.Width - 120
.Height = Me.Height - Me.Command1.Height - 385
End With
End Sub
拖动窗体大小,或者最小化看看
你按照上面的代码写了吗?
代码是写在 Form_Resize()里吗? 如果写在Load里,那可不行
你建立一个新工程试吧,以上的代码是VB6.0的.
这个代码的效果是:Text1随着窗体大小的改变,Text1大小跟着改变;command1随着窗体大小的改变,位置进行改变。
大小和位置的方法都有了啊,你不加代码,只放Text1和Command1在窗体上,拖动窗体大小看看区别,command的位置不会变,text1的大小也不会改变。你再琢磨琢磨下。
在我机器上运行的是,窗体上半部分全部都是Text1,Text1充满了窗体的上半部的大部分,下面比较窄的一行靠左是按钮,右边空
第一步,在窗体装入的过程,记录各个控件的top、left、height和width,以及窗体的width和height;
第二步,在尺寸重置过程,计算窗体长宽变化的两个比例,按照比例计算各个控件对应的位置和尺寸,然后分别设定。
但做起来就比较啰嗦,一个是控件多少不一定,种类不一定,写代码比较多。
另一个就是用for each循环,代码对于初学者比较晦涩。
下面我以第二种为例,写出代码,仅供参考。
Dim 控件位置尺寸系数() As Single, 标题栏高 As Single, 边框宽 As Single
Dim 控件数 As Integer
Dim 对象 As Control
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Sub Form_Load()
Dim 有效宽 As Single, 有效高 As Single
标题栏高 = GetSystemMetrics(4) * 15
边框宽 = (GetSystemMetrics(7)) * 15
有效宽 = Width - 2 * 边框宽
有效高 = Height - 边框宽 - 标题栏高
控件数 = 0
For Each 对象 In Me.Controls
ReDim Preserve 控件位置尺寸系数(3, 控件数)
控件位置尺寸系数(0, 控件数) = 对象.Left / 有效宽
控件位置尺寸系数(1, 控件数) = 对象.Top / 有效高
控件位置尺寸系数(2, 控件数) = 对象.Width / 有效宽
控件位置尺寸系数(3, 控件数) = 对象.Height / 有效高
控件数 = 控件数 + 1
Next
End Sub
Private Sub Form_Resize()
Dim 有效宽 As Single, 有效高 As Single
有效宽 = Width - 2 * 边框宽
有效高 = Height - 边框宽 - 标题栏高
i = 0
For Each 对象 In Me.Controls
对象.Left = 控件位置尺寸系数(0, i) * 有效宽
对象.Top = 控件位置尺寸系数(1, i) * 有效高
对象.Width = 控件位置尺寸系数(2, i) * 有效宽
对象.Height = 控件位置尺寸系数(3, i) * 有效高
i = i + 1
Next
End Sub