窗口缩放

来源:百度知道 编辑:UC知道 时间:2024/06/03 22:42:23
Dim tt As Double
Dim tl As Double
Dim tw As Double
Dim th As Double

Private Sub Form_Load()
tt = Text1(Index).Top
tl = Text1(Index).Left
tw = Text1(Index).Width
th = Text1(Index).Height
End Sub

Private Sub Form_Resize()
Form1.ScaleHeight = 4290
Form1.ScaleWidth = 7065
Text1(Index).Top = tt
Text1(Index).Left = tl
Text1(Index).Width = tw
Text1(Index).Height = th
End Sub
这是我的代码!就是让文本框的大小跟着窗口的大小而改变,我现在用地是一个文本数组!在这有这样一个问题!按我以上去试,只有text1(0)跟着窗口改变其它地就不会!如果把text1(0)这个文本删了就会出错! 你们帮我看看是怎么回事啊!

你用Index肯定是不对的,你没有定义index,所以在这里index=0(默认初始化)。
你需要做的应该是让每一个Text1都变。比如你有n个text1
你可以
for i=1 to n
text1(i).top=tt
text1(i).left=tl
......
next i

Private Sub Form_Resize()
Form1.ScaleHeight = 4290
Form1.ScaleWidth = 7065
Text1(Index).Top = tt
Text1(Index).Left = tl
Text1(Index).Width = tw
Text1(Index).Height = th
End Sub

你的这段代码在窗体的Resize事件中Index变量的值始终为0,VB的变量在定义或者未定义的情况下第一次使用,这个时候在申请变量内存空间后会对此变量的值进行初始化,字符串为空,数值型的等于0,所以你的代码再任何一行代码中都只对Text(0)做了修改。
正确的做法是加入For循环,顺序设定每一个TEXT控件
比如你定义的文本框空间为Text(0)~Text(4)代码应该改为:

Private Sub Form_Resize()
Form1.ScaleHeight = 4290
Form1.ScaleWidth = 7065
dim Index as Integer
For Index = 0 To 4
Text1(Index).Top = tt
Text1(Index).Left = tl
Text1(Index).Width = tw
Text1(Index).Height = th
Next Index
End Sub

补充:对你提供的代码研究的结果是猜不出你要干吗,如果是要在窗体大小改变时自动改变窗体上文本框大小并且对齐排列的话,在For