Menyimpan posisi form terakhir dalam Visual Basic
Aplikasi yang baik akan memberi kebebasan pada user untuk menentukan posisi
dan ukuran dari form/window aplikasi. Seperti pada Microsoft Word, sewaktu dipanggil
maka posisi dan ukuran form/window akan sama dengan ukuran saat terakhir kali
keluar dari aplikasi Mikrosoft Word tersebut.
Form pada Visual Basic tidak memiliki fasilitas tersebut di atas.
Cara berikut ini akan mengatasi kekurangan tersebut.
Saya telah membuatkan dua buah prosedur untuk Anda yaitu SaveMainFormPos
dan SetMainFormPos serta satu fungsi private SetFunnyFormPos yang digunakan
oleh fungsi SetMainFormPos.
'// File Name: FrmSett.Bas
'// Author : Agus Suhartono
'//Menyimpan letak form dalam Registry.
Public Sub SaveMainFormPos()
Dim sWindowState As String
Dim sMainFormTop As String
Dim sMainFormLeft As String
Dim sMainFormHeight As String
Dim sMainFormWidth As String
Dim sAppName
Let sAppName = App.ProductName & " " & _
App.Major & "." _
& App.Minor & "." _
& App.Revision
sWindowState = Trim$(Str$(frmMain.WindowState))
SaveSetting sAppName, "MainForm", "WindowState", _
sWindowState
sMainFormTop = Trim$(Str$(frmMain.Top))
SaveSetting sAppName, "MainForm", "Top", sMainFormTop
sMainFormLeft = Trim$(Str$(frmMain.Left))
SaveSetting sAppName, "MainForm", "Left", sMainFormLeft
sMainFormHeight = Trim$(Str$(frmMain.Height))
SaveSetting sAppName, "MainForm", "Height", sMainFormHeight
sMainFormWidth = Trim$(Str$(frmMain.Width))
SaveSetting sAppName, "MainForm", "Width", sMainFormWidth
End Sub
'// Menampilkan form di posisi terakhir kali keluar.
'// Bila form baru pertama kali dibuka letakkan di,
'// tengah-tengah layar (dengan menggunakan fungsi SetFunny )
Public Sub SetMainFormPos()
Dim sWindowState As String
Dim sMainFormTop As String
Dim sMainFormLeft As String
Dim sMainFormHeight As String
Dim sMainFormWidth As String
Dim sAppName
Let sAppName = App.ProductName & " " & _
App.Major & "." & App.Minor _
& "." & App.Revision
'==>Mengambil setting WindowState dari Registry
sWindowState = _
GetSetting(sAppName, "MainForm", "WindowState")
If sWindowState = "" Then
'//Jika Registry kosong(tidak ada) Full Screen.
SetFunnyFormPos
Else
Select Case Val(sWindowState)
Case 0 'None
'Gunakan Ukuran dan letak window dalam Registry.
' Jika salah satu saja tidak ada, _
' maka dipaka1 SetFunnyFormPos.
sMainFormTop = _
GetSetting(sAppName, "MainForm", "Top")
If sMainFormTop = "" Then
SetFunnyFormPos
End If
sMainFormLeft = _
GetSetting(sAppName, "MainForm", "Left")
If sMainFormLeft = "" Then
SetFunnyFormPos
End If
sMainFormHeight = _
GetSetting(sAppName, "MainForm", "Height")
If sMainFormHeight = "" Then
SetFunnyFormPos
End If
sMainFormWidth = _
GetSetting(sAppName, "MainForm", "Width")
If sMainFormWidth = "" Then
SetFunnyFormPos
End If
frmMain.WindowState = vbNormal
frmMain.Move Val(sMainFormLeft), Val(sMainFormTop), _
Val(sMainFormWidth), Val(sMainFormHeight)
Case 1
frmMain.WindowState = vbMinimized
Case Else
frmMain.WindowState = vbMaximized
End Select
End If
End Sub
Private Sub SetFunnyFormPos()
'Full Screen untuk 640*480 dan ditengah
'untuk yang lebih tinggi.
frmMain.Width = 640 * Screen.TwipsPerPixelX
frmMain.Height = 480 * Screen.TwipsPerPixelY
If frmMain.Width + 100 > Screen.Width Then
frmMain.WindowState = vbMaximized
Else
frmMain.Top = (Screen.Height - frmMain.Height) \ 2
frmMain.Left = (Screen.Width - frmMain.Width) \ 2
End I
End Sub
Fungsi-fungsi menganggap form yang akan ditangani bernama frmMain karena biasanya
hanya digunakan untuk form utama (main form). Supaya konsisten saya selalu memberi
nama form utama saya frmMain. Fungsi SetMainFormPos dipanggil dari event Form_Load
sedangkan fungsi SaveMainFormPas dipanggil dari event Form_Unload dari form frmMain.
Contohnya sebagai berikut:
'// File Name : Main.FRM
'// Form Name :frmMain
'// Author : Agus Suhartono
Sub Form_Load()
SetMainFormPos
End Sub
Sub Form_Unload()
SaveMainFormPos
End Sub
[ Top ]
|