Friday, December 21, 2012

Method .Move Jauh Lebih Cepat - VB6 Tips

Menjelaskan bahwa method .Move yang terdapat pada objek jauh lebih cepat dibandingkan setting pada properties - Apabila Anda bekerja dengan tampilan yang terdapat pada VB6 dan pada tampilan tersebut banyak melakukan resize terhadap objek misalnya: Form melakukan resize terhadap Container1 (PictureBox), Container1 melakukan resize terhadap Container2 (PictureBox), Container2 melakukan resize terhadap Container3, dan seterusnya hingga akhirnya Container terakhir melakukan resize terhadap objek-objek. Barulah Anda menyadari sebuah ketidakstabilan karena menggunakan kode seperti yang dicontohkan di bawah ini:

Private Sub Picture1_Resize()
    With Text1
        .Left = 0
        .Top = 0
        .Width = Picture1.ScaleWidth
        .Height = Picture1.ScaleHeight
    End With
End Sub

Sebaiknya kode di atas Anda ganti saja dengan menggunakan methode move seperti yang dicontohkan di bawah ini:

Private Sub Picture1_Resize()
    With Text1
        .Move 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
    End With
End Sub
Atau sebaiknya buatlah sebuah method reusable seperti di bawah ini:
Public Sub SetSameSize(Parent, Child)
With Child
.Move 0, 0, Parent.ScaleWidth, Parent.ScaleHeight
End With
End Sub
Contoh penggunaan dari method di atas:
Private Sub Picture1_Resize()
SetSameSize Picture1, Text1
End Sub

Ngomong-ngomong mengapa method move lebih cepat? tentu saja karena ia hanya memerlukan satu kali proses dan langsung memanggil fungsi API, sementara setting properties membutuhkan bebarapa kali proses disebabkan OOP dan Class-nya.

READ MORE - Method .Move Jauh Lebih Cepat - VB6 Tips

Thursday, December 20, 2012

Context Menu Untuk File Ber-ektensi VBL - VB6 OCX

Masih ingatkah Anda? Ya, tentu saja. Masih ingatkah Anda dengan posting saya terdahulu tentang file yang ber-ektensi .VBL. Jika lupa coba Anda buka link di samping untuk mengingatnya klik disini. Apakah pada saat mencoba komponen Shadow.OCX menampilkan gambar di bawah ini:
OCX License not found
Gambar: Lisensi tidak ditemukan untuk komponen shadow.ocx

Hal tersebut terjadi karena Anda tidak memiliki lisensi untuk menggunakan shadow.ocx pada saat design time dan hanya diperbolehkan melihat demonya saja. Sekarang kita bermain pura-pura, pura-puranya Anda telah membeli lisensi dari saya, kemudian saya memberikan lisensinya berupa file ber-ektensi .vbl atau tepatnya lisensi.vbl.
Download: Lisensi.VBL

Apa Yang Harus Dilakukan Dengan Lisensi.VBL

Memasukan lisensi key yang terdapat pada file lisensi.vbl ke dalam registry agar Anda dapat menggunakan file shadow.ocx tersebut pada saat design time, tetapi bagaimana caranya? Kita ambil dua cara termudah:
  1. Mengganti ektensi .vbl dengan ektensi .reg kemudian double klik
  2. Membuat context menu untuk file .vbl dengan cara mengetik file registry di bawah ini pada notepad:
REGEDIT4

[HKEY_CLASSES_ROOT\.vbl]
@="VisualBasic.VBLFile"
[HKEY_CLASSES_ROOT\VisualBasic.VBLFile]
@="Visual Basic Control License File"
[HKEY_CLASSES_ROOT\VisualBasic.VBLFile\shell\open]
@="&Insert License"

    • Kemudian simpan dengan nama lisensi.reg lakukan double klik, selanjutnya akan ada konfirmasi sukses.
    • Klik kanan file lisensi.vbl maka pada context menu akan terdapat menu Insert Lisensi seperti gambar di bawah ini:
    • OCX Insert License
      Gambar: Context Menu Baru (Insert License)
    • Selanjutnya apa lagi jika bukan klik!
Nah, setelah Anda paham maka kita hentikan kepura-puraannya.

Nama file: Shadow.OCX
GUID: A434183A-F9E0-4DFA-AB7B-7538C391A576
License Key: kkgdjdikddedddfdieikpdfkqesjgdjdkdpj

READ MORE - Context Menu Untuk File Ber-ektensi VBL - VB6 OCX

VB6 Code: Menggunakan ( := ) dalam Coding VB6

Apabila Anda sering bekerja dengan pemrograman macro yang terdapat dalam Microsoft Office , entah itu macro yang ada dalam Microsoft Office 97, Microsoft Office 2000, Microsoft Office 2003, Microsoft Office 2007, dan Microsoft Office seterusnya, tentu Anda sudah tidak asing lagi dengan := (titik dua sama dengan).

Dikarenakan VB6 identik dengan VBA office dalam artian keduanya menggunakan bahasa yang sama, kebutuhan runtime file yang sama, dan sebagainya (yang berbeda hanya objek-objek saja), maka apa yang ada dalam VBA tentu bisa dijalankan dalam VB6. Salah satunya adalah tanda (:=) walau jarang sekali melihatnya dalam pengkodean VB6.

Tanda (:=) merupakan pemberitahuan kepada compiler bahwa sebuah argumen optional telah diisi dengan nilai tertentu. Agar lebih jelasnya berikut merupakan contoh sebuah function yang memiliki 26 argument optional (argumen yang memiliki 2 opsi, boleh diisi atau tidak):

Option Explicit

'Sebuah function dengan 26 argument, nama argument dari a s/d z
Private Function Test(Optional a, Optional b, Optional c, Optional d, Optional e _
, Optional f, Optional g, Optional h, Optional i, Optional j, Optional k, Optional l _
, Optional m, Optional n, Optional o, Optional p, Optional q, Optional r, Optional s _
, Optional t, Optional u, Optional v, Optional w, Optional x, Optional y, Optional z)
    MsgBox o
    MsgBox z
    'Kode dan seterusnya
End Function
Maka untuk memanggil fungsi di atas bisa seperti ini:
Private Sub Command1_Click()
    Call Test(, , , , , , , , , , , , , , 6, , , , , , , , , , , 1)
End Sub
Atau seperti ini:
Private Sub Command2_Click()
    Call Test(o:=6, z:=1) 'Call disini berguna untuk memudahkan pembacaan kode
End Sub
Atau seperti ini (dengan membalikan, argumen z di depan dan argumen o di belakang):
Private Sub Command3_Click()
     Call Test(z:=1, o:=6)
End Sub
Atau seperti ini (tanpa call):
Private Sub Command4_Click()
     Test z:=1, o:=6 'tanpa Call juga bisa berjalan kok
End Sub
Mana yang menurut Anda praktis?
READ MORE - VB6 Code: Menggunakan ( := ) dalam Coding VB6

Tuesday, December 18, 2012

Blogging - Merapikan Kode XML Dengan Mudah - XML Tidy

Struktur XML (Extensible Markup Language) memiliki tag pembuka juga tag penutup, memiliki parent (induk), dari parent ini kemudian memiliki child (anak), dari child ini memiliki child lagi, dan seterusnya. Sehingga secara tidak langsung parent yang tadi bisa menjadi grandfather, tak terkecuali uncle serta aunt, berikut daughter and son.

Berdasarkan dari cara penulisannya maka format XML ini memungkinkan untuk dibaca oleh kedua belah pihak, baik manusia maupun mesin (compiler/interpreter). Salah satu dari sekian banyak yang menggunakan XML diantaranya adalah template blogger.

Nah, apabila Anda menemukan kode XML misalnya widget yang kurang terformat rapi, dan menyebabkan ia hanya mudah dibaca oleh satu pihak saja yaitu mesin, maka ada cara yang paling mudah untuk merapikannya yaitu dengan menggunakan software editor Notepadd++. Adapun caranya adalah sebagai berikut:

  1. Copykan potongan code XML tersebut ke Notepad++
  2. Pada Notepad++ klik menu TextFX >> TextFX HTML Tidy >> Tidy: Reindent XML, seperti pada gambar di bawah ini:

Merapikan kode XML - XML Tidy dengan Notepad++
Gambar: Merapikan kode XML - XML Tidy dengan Notepad++

Dengan dirapikannya kode XML tersebut, maka struktrurnya menjadi logis, mudah untuk dibaca kedua belah pihak (manusia dan mesin), sehingga menjadi mudah untuk diedit.

Contoh XML yang belum dirapikan:

<b:includable id=breadcrumb var="posts">
<b:if cond="data:blog.homepageUrl == data:blog.url">
<b:else></b:else><b:if cond='data:blog.pageType == "item"'>
<DIV class=breadcrumbs>Browse » <A rel=tag expr:href="data:blog.homepageUrl">Beranda</A>
<b:loop var="post" values="data:posts"><b:if cond="data:post.labels">
<b:loop var="label" values="data:post.labels"><b:if cond='data:label.isLast == "true"'> »
<A rel=tag expr:href="data:label.url"><?xml:namespace prefix = data /><data:label.name></data:label.name></A>
</b:if></b:loop>» <SPAN><data:post.title></data:post.title></SPAN>
</b:if></b:loop></DIV><b:else></b:else><b:if cond='data:blog.pageType == "archive"'>
<DIV class=breadcrumbs>Browse » <A expr:href="data:blog.homepageUrl">Beranda</A> » Arsip untuk <data:blog.pageName></data:blog.pageName></DIV><b:else></b:else>
<b:if cond='data:blog.pageType == "index"'>
<DIV class=breadcrumbs>
<b:if cond='data:blog.pageName == ""'>
Browse » <A expr:href="data:blog.homepageUrl">Beranda</A> » Seluruh Artikel
<b:else></b:else>
Browse » <A expr:href="data:blog.homepageUrl">Beranda</A> » Artikel Pada Kategori <data:blog.pageName></data:blog.pageName>
</b:if></DIV></b:if></b:if></b:if></b:if></b:includable>
Contoh XML yang sudah dirapikan:
<b:includable id=breadcrumb var="posts">
<b:if cond="data:blog.homepageUrl == data:blog.url">
<b:else></b:else>
<b:if cond='data:blog.pageType == "item"'>
<DIV class=breadcrumbs>Browse »
<A rel=tag expr:href="data:blog.homepageUrl">Beranda</A>
<b:loop var="post" values="data:posts">
<b:if cond="data:post.labels">
<b:loop var="label" values="data:post.labels">
<b:if cond='data:label.isLast == "true"'>»
<A rel=tag expr:href="data:label.url">
<data:label.name></data:label.name>
</A></b:if>
</b:loop>»
<SPAN>
<data:post.title></data:post.title>
</SPAN></b:if>
</b:loop></DIV>
<b:else></b:else>
<b:if cond='data:blog.pageType == "archive"'>
<DIV class=breadcrumbs>Browse »
<A expr:href="data:blog.homepageUrl">Beranda</A>»
Arsip untuk
<data:blog.pageName></data:blog.pageName></DIV>
<b:else></b:else>
<b:if cond='data:blog.pageType == "index"'>
<DIV class=breadcrumbs>
<b:if cond='data:blog.pageName == ""'>Browse »
<A expr:href="data:blog.homepageUrl">Beranda</A>»
Seluruh Artikel
<b:else></b:else>Browse »
<A expr:href="data:blog.homepageUrl">Beranda</A>»
Artikel Pada Kategori
<data:blog.pageName></data:blog.pageName></b:if>
</DIV>
</b:if>
</b:if>
</b:if>
</b:if>
</b:includable>
READ MORE - Blogging - Merapikan Kode XML Dengan Mudah - XML Tidy