Thursday, January 09, 2014

Modul VBA: Membuat Form "AutoResize"

Form AutoResize di MS.Access?
Tentu bukanlah sesuatu yang mustahil apabila kita mau belajar dan mencoba.

Apa fungsinya Form AutoResize?

Form dengan kemampuan autoresize dibuat dengan maksud agar form selalu kompatibel dengan ukuran resolusi monitor PC/Laptop apapun. Form ini cocok digunakan ketika kita ingin membuat form dengan tampilan fullscreen. Ketika project yang kita buat kita buka di PC dengan resolusi yang lebih tinggi, ukuran form tersebut akan dapat memnuhi layar monitor. Karena prinsip kerjanya adalah dengan mengukur ukuran resolusi layar monitor kemudian form di atur ulang ukuran tinggi dan lebarnya sesuai dengan ukuran resolusi layar monitor PC tersebut.

Bagaimana Cara Membuatnya?



1) Buat file database baru dengan Ms. Access 2010 / Ms. Access 2013 kemudian simpan.
2) Buat Form baru, misal kita beri nama AutoResize.


3) Atur Property Sheet Form AutoResize seperti berikut:



4) Pada Tab Other (Property Sheet), atur seperti berikut:

catatan: Semua pengaturan property tersebut bersifat optional. Yang paling penting adalah untuk Pop Up di setting Yes.

5) Buat Module baru dengan cara klik Tab Create dan Klik Module


   Sehingga akan membuka jendela baru Microsoft Visual Basic For Application.




6) Ketik kode berikut di Module1

Option Compare Database
Option Explicit

Public Declare PtrSafe Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Public Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As Long
Public Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
Public Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Const LOGPIXELSX = "88"
Public Const LOGPIXELSY = "90"
Public Const HORZRES = "8"
Public Const VERTRES = "10"
Public Const TWIPSPERINCH = "1440"

Catatan: Jika Anda menggunakan Ms. Office 64 Bit, kode PtrSafe jangan dihapus. Namun apabila Anda menggunakan Ms.Office 32 Bit, kode PtrSafe dihapus saja.

Kode di atas merupakan API dari Windows yang berfungsi untuk mengukur ukuran resolusi layar monitor yang dipakai. Ukuran yang didapatkan masih dalam ukuran pixels yang kemudian akan dikonvert ke twip.

Twip merupakan ukuran standar yang dipakai Ms. Access dalam menagtur posisi dan ukuran object.
1 cm = 567 twips
1 inci = 1440 twips

7) Tambahkan kode berikut untuk membuat fungsi ukurForm

Public Sub ukurForm(ByRef x As Variant, ByRef y As Variant)

    Dim hDC As Long
    Dim IngRetVal As Long
    Dim varScreenX As Variant
    Dim varScreenY As Variant
    Dim varPTIX As Variant
    Dim varPTIY As Variant
    
    hDC = GetDC(0)
    
    varScreenX = GetDeviceCaps(hDC, HORZRES)
    varScreenY = GetDeviceCaps(hDC, VERTRES)
    varPTIX = GetDeviceCaps(hDC, LOGPIXELSX)
    varPTIY = GetDeviceCaps(hDC, LOGPIXELSX)
    
    IngRetVal = ReleaseDC(0, hDC)
    
    x = (varScreenX / varPTIX) * 72
    y = (varScreenY / varPTIY) * 72


End Sub

Nilai x dan y sebelum dikonversi adalah satuannya pixel/point/titik. Nah untuk itu dikonversi ke dalam inch terlebih dulu.

1 point/pixel=1/72 inci

8) Ctrl+S. Simpan Module1 dengan nama AutoResize.
9) Tambahkan event procedure pada Load Event di form AutoResize yang kita buat tadi.


10) Pada Module Form_AutoResize tambahkan kode berikut:

Private Sub Form_Load()
    Dim x As Variant
    Dim y As Variant
    
    ukurForm x, y
    
    x = x * 20
    y = y * 20
    
    DoCmd.MoveSize 0, 0, x, y
End Sub

Hasilnya:

Penjelasannya:
-Ketika form AutoResize dibuka, akan terjadi Load, nah pada tahap inilah Load Event dijalankan.
-Ketika Load Event form Auto Resize dijalankan (Private Sub Form_Load() ... End Sub), fungsi ukurForm yang kita buat pada Module AutoResize akan dipanggil dan dijalankan.
-Dari menjalankan fungsi tersebut, akan diperoleh ukuran lebar (x) dan tinggi (y) dari resolusi layar yang kemudian di konvert ke twip.
-Baris kode ke dua dari bawah, yaitu

DoCmd.MoveSize 0,0,x,y

berfungsi untuk menentukan letak form (atas-bawah, kiri-kanan) serta lebar (x) dan tinggi (y) form.

Format fungsi tersebut adalah DoCmd.MoveSize Kiri,Atas,Lebar,Tinggi

Satuannya harus dalam twips.

-Jadilah ukuran Form AutoResize tampak penuh dilayar yang mulanya beukuran kecil.

11) Simpan dengan menekan Ctrl+S.
12) Keluar jendela Micorsoft Visual Basic For Applications.
13) Keluar dari Design View Form AutoResize dan buka Form AutoResize.
14) Lihat Hasilnya.
15) Coba Anda ubah resolusi layar monitor Anda dan buka lagi form tersebut, insyaAllah pasti akan nampak fullscreen.
16) Bonus contoh: Perbandingan 1:2 dengan auto centering. Buka Form AutoResize1banding2 jika Anda mendownload file latihan.
17) Untuk kode, lihat Module.

Selamat mencoba dan semoga bermanfaat :).
File latihan dapat di unduh pada tautan berkut:
 


Penulis : Trisna Novi Ashari - Universitas Negeri Semarang '11



1 comment: