Agus's Virtual House
Agus'VirtuaHouse


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 ]
Copyright © 1999 by Agus Suhartono
Last modified on:
Hierarchical Menu by Peter Belesis, Dynamic HTML Lab.