vb 保存界面

来源:百度知道 编辑:UC知道 时间:2024/06/15 08:54:09
请问如何保存form里的所有控件的xy值(也就是位置)到ini文件,并运行程序的时候自动读取这些值,希望可以写得详细一点,我是新手,多谢大家!如果符合要求我会追加分数!
Dim oldX As Single, oldY As Single
Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move Left + X - oldX, Top + Y - oldY
End Sub
Private Sub Text1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
oldX = X + Left
oldY = Y + Top
Text1(Index).Drag 1
End Sub
Private Sub Text1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Text1(Index).Drag 2
End Sub
Private Sub Command1_Click(Index As Integer)
Static i
i = i + 1
Load Text1(i)
Text1(i).Visible = True
'Text1(i).Left = Text1(i).Left + Text1(i).Width * i
End Sub
我加了你那个后,增加控件后保存,读取的时候还是不行。
可以留一下你的qq么?我的81891115

关闭窗体前,会触发Form_Unload事件,在其中编写代码如下:

Private Sub Form_Unload(Cancel As Integer)
Open App.Path & "\positions.ini" For Output As #1
For i = 0 To Me.Controls.Count - 1
Write #1, Me.Controls(i).Name, Me.Controls(i).Left, Me.Controls(i).Top
Next
Close #1
End Sub

关闭窗体后,你可以在工程所在的文件夹中看到“position.ini”文件,用记事本打开它,可以看到其中记录的内容正式你想要的。

而在Form_Load 事件过程中写上如下代码:
Private Form_Load()
On Error GoTo 1
Open App.Path & "\positions.ini" For Input As #1
For i = 0 To Me.Controls.Count - 1
Input #1, Name1, left1, top1
Me.Controls(i).Left = left1
Me.Controls(i).Top = top1
Next
1:Close #1
End Sub

那么在下次打开窗体时,就会读取保存的控件位置参数,并将它们赋予每个控件。
【注】按你问题的要求,在保存和读取时,控件名是没必要保存的,目的只是想让你看的明白,你可以把他们去掉,将输出和输入语句分别修改成如下样子就可以了:
Write #1, Me.Controls(i).Left, Me.Controls(i).Top
Input #1, left1, top1

还有,少数特殊的控件是不能在运行期间给它们的位置赋值的,如ADODC等Activ