Menu Horisontal

Senin, 31 Desember 2012

Fungsi-fungsi Date/Time

Sumber : http://putravb.blogspot.com/2012/01/fungsi-fungsi-datetime.html
Berikut ini merupakan Fungsi-fungsi dasar untuk mengolah data jenis Date/Time atau Tanggal/Waktu di Visual Basic

  • Now, digunakan untuk mendapatkan Tanggal dan Waktu sekarang.
    d = Now , hasilnya 13/01/2012 1:22:42

  • Date, digunakan untuk mendapatkan Tanggal sekarang.
    [ VB 6.0 ] d = Date , hasilnya 13/01/2012
    [ VB .NET ] d = Now.Date , hasilnya 13/01/2012

  • Time, digunakan untuk mendapatkan Waktu sekarang.
    [ VB 6.0 ] d = Time , hasilnya 1:22:42
    [ VB .NET ] d = Now.ToLongTimeString , hasilnya 1:22:42

  • Day(x), digunakan untuk mengambil nilai Tanggal saja dari x.
    [ VB 6.0 ] d = Day(#1/13/2012#) , hasilnya 13
    [ VB .NET ] d = #1/13/2012#.Day , hasilnya 13

  • Month(x), digunakan untuk mengambil nilai Bulan saja dari x.
    [ VB 6.0 ] d = Month(#1/13/2012#) , hasilnya 1
    [ VB .NET ] d = #1/13/2012#.Month , hasilnya 1

  • Year(x), digunakan untuk mengambil nilai Tahun saja dari x.
    [ VB 6.0 ] d = Year(#1/13/2012#) , hasilnya 2012
    [ VB .NET ] d = #1/13/2012#.Year , hasilnya 2012

  • Hour(x), digunakan untuk mengambil nilai Jam saja dari x.
    [ VB 6.0 ] d = Hour(#1:22:42 AM#) , hasilnya 1
    [ VB .NET ] d = #1:22:42 AM#.Hour , hasilnya 1

  • Minute(x), digunakan untuk mengambil nilai Menit saja dari x.
    [ VB 6.0 ] d = Minute(#1:22:42 AM#) , hasilnya 22
    [ VB .NET ] d = #1:22:42 AM#.Minute, hasilnya 22

  • Second(x), digunakan untuk mengambil nilai Detik saja dari x.
    [ VB 6.0 ] d = Second(#1:22:42 AM#) , hasilnya 42
    [ VB .NET ] d = #1:22:42 AM#.Second, hasilnya 42

  • DateSerial(x, y, z), digunakan untuk menghasilkan Tanggal dari kombinasi x, y, z.
    d = DateSerial(2012, 1, 13) , hasilnya 13/01/2012

  • TimeSerial(x, y, z), digunakan untuk menghasilkan Waktu dari kombinasi x, y, z.
    d = TimeSerial(1, 22, 42) , hasilnya 1:22:42

  • MonthName(x), digunakan untuk mendapatkan nama Bulan dari x.
    d = MonthName(2) , hasilnya Februari

  • WeekdayName(x), digunakan untuk mendapatkan nama Hari dari x.
    d = WeekdayName(2, , vbSunday) , hasilnya Senin
 Untuk menambah dan mengurangi data bertipe Date/Tanggal tidak semudah dengan data bertipe Angka yang hanya menggunakan operator + dan -. Karena itu ada fungsi khusus untuk melakukannya, berikut contoh penggunaannya :

Tutorial Starduino: Mengontrol 4 Relay Dari Komputer Via Komunikasi Serial RS232 Dengan Perantaraan Starduino Board

Sumber : http://telinks.wordpress.com/category/softwareprogramming/vb-net/
Sumber : http://teknikelektrolinks.com/
Pada tutorial Starduino kali ini, kita akan membahas tentang bagaimana mengontrol relay dari komputer melalui port komunikasi serial RS232 dengan menggunakan Starduino Board.
Gambar di samping adalah foto pengujian Starduino Board untuk mengontrol relay dan menampilkan statusnya di LCD 16×2.
Starduino Board, Modul Relay DRV04, dan Modul LCD 16×2 dapat dipesan melalui email ke info@teknikelektrolinks.com atau SMS ke 081231784018 atau BB ke 24B15B64.
Untuk pembelian paket Starduino + Modul DRV04 akan mendapatkan source code sketch Arduino pengontrolan relay melalui port serial + source code program VB.NET lengkap dengan Installer VB.NET 2005 Express Edition.
Untuk memudahkan eksperimen,  berikut adalah tabel perintah pengontrolan relay.
Perintah Aksi
‘A’ RELAY 1 ON
‘1’ RELAY 1 OFF
‘B’ RELAY 2 ON
‘2’ RELAY 2 OFF
‘C’ RELAY 3 ON
‘3’ RELAY 3 OFF
‘D’ RELAY 4 ON
‘4’ RELAY 5 OFF
Berikut adalah looping utama program yang berfungsi menerima data dari port serial dan mengeksekusi perintah sesuai data yang diterima dari komputer.
if (Serial.available())
{
  char inChar = Serial.read();
  if (inChar==’A')
    digitalWrite(RL1, HIGH);
  else if (inChar==’1′)
    digitalWrite(RL1, LOW);
  else if (inChar==’B')
    digitalWrite(RL2, HIGH);
  else if (inChar==’2′)
    digitalWrite(RL2, LOW);
  else if (inChar==’C')
    digitalWrite(RL3, HIGH);
  else if (inChar==’3′)
    digitalWrite(RL3, LOW);
  else if (inChar==’D')
    digitalWrite(RL4, HIGH);
  else if (inChar==’4′)
    digitalWrite(RL4, LOW);
}
Fungsi Serial.available() berfungsi mengembalikan jumlah karakter yang ada di dalam buffer port serial. Jika fungsi Serial.available() bernilai 0 (nol), maka tidak ada karakter dalam buffer. Jika fungsi Serial.available() > 0, maka ada karakter yang diterima dalam buffer port serial.
Fungsi Serial.read() berfungsi membaca/mengambil data karakter dari buffer port serial. Perintah char inChar = Serial.read() berfungsi mendeklarasikan variable inChar sebagai penampung data karakter hasil pembacaan fungsi Serial.read().
Selanjutnya, karakter dibandingkan dengan konstanta karakter sesuai dengan tabel perintah di atas untuk mengetahui perintah apa yang harus dieksekusi oleh kontroler.
Jika inChar==’A’, maka aktifkan RELAY-1 dan jika inChar==’1’, maka matikan RELAY-1. Pembandingan yang sama juga berlaku untuk perintah ‘B’, ‘2’, ‘C’, ‘3’, ‘D’, dan ‘4’.
Setelah program di upload ke Starduino, maka pengujian dapat dilakukan dengan mengirimkan karakter ‘A’, ‘1’, ‘B’, dan seterusnya dari komputer.
Untuk mengirimkan data secara manual bisa menggunakan terminal bawaan IDE Arduino atau program terminal seperti Hyperterminal.
Dapat juga pengontrolan dilakukan dengan menggunakan program aplikasi yang dapat Anda peroleh jika membeli paket Starduino Board + Modul DRV04. Berikut adalah tampilan program aplikasi Starduino+DRV04 yang dibuat menggunakan VB.NET 2005 Express Edition.
starduino_drv04_vbnet
Demikian sekelumit penjelasan mengenai pengontrolan relay dari komputer melalui port esrial RS232 dengan perantaraan Starduino Board.
Selamat belajar dan selamat berkarya!

Minggu, 30 Desember 2012

Mengetahui UserName dan ComputerName

Sumber : http://putravb.blogspot.com/2011/01/mengetahui-username-dan-computername.html
UserName dan ComputerName biasanya digunakan untuk melengkapi Form registrasi suatu aplikasi / software berbayar. Untuk mengetahui / mendapatkan UserName maupun ComputerName, hanya dibutuhkan 1 baris kode, berikut ini kodenya :

UserName :

s = Environ("UserName")

ComputerName :
s = Environ("ComputerName")

Selain itu, Anda juga bisa menggantikan teks yang berwarna merah untuk mendapatkan informasi yang lain. Seperti : UserDomain, OS, LogOnServer, ClientName, dll.

Operasi Angka VB.Net

Sumber : http://tidipia-comp.blogspot.com/2011/12/operasi-angka-vbnet.html

Berikut ini adalah fungsi-fungsi yang sering digunakan untuk mengolah data bertipe angka (integer, long, double, dll). Sebelumnya ketikkan kode berikut dibagian paling atas dari jendela kode dari Form yang merupakan Namespace Math dari .Net.
Imports System.Math

Berikut nama dan penggunaan fungsinya :

NamaFungsi
Sina = Sin(n * Angle)
Cosina = Cos(n * Angle)
Tangena = Tan(n * Angle)
Inv. Sina = Asin(n) / Angle
Inv. Cosina = Acos(n) / Angle
Inv. Tangena = Atan(n) / Angle
Sin Hyp.a = Sinh(n)
Cosin Hyp.a = Cosh(n)
Tangen Hyp.a = Tanh(n)
Inv. Sin Hyp.a = Log(n + Sqrt(n * n + 1))
Inv. Cosin Hyp.a = Log(n + Sqrt(n * n - 1))
Inv. Tangen Hyp.a = Log((1 + n) / (1 - n)) / 2

Dalam beberpa fungsi diatas terdapat variabel dengan nama Angel, yang bisa digantikan dengan nilai berikut :
Degress (DEG), gantikan dengan (3.14159265358979 / 180)
Radians (RAD), gantikan dengan 1
Grads (GRAD), gantikan dengan (3.14159265358979 / 200)
Contoh menghitung Sin dari 5 dengan ukuran DEG :

a = Sin(5 * (3.14159265358979 / 180))

Operasi String VB.Net

Sumber : http://tidipia-comp.blogspot.com/2011/12/operasi-string-vbnet.html

Maksud dari Operasi String diatas adalah terkait dengan method-method pada .Net untuk memanipulasi string. Berikut adalah beberapa contoh dasar operasi string tersebut :

Fungsi : Len
Deskripsi : Menghasilkan panjang string
Syntax: Len(string)
Contoh :
1. lngLen = Len("Visual Basic")
Hasil: lngLen = 12

Fungsi : Mid$ (or Mid)
Deskripsi : Menghasilkan potongan string mulai dan panjangnya dapat ditentukan
Syntax: Mid$(string, start[, length]) string
String yang ingin dipotong.
start Start pemotongan.
length Optional; panjang pemotongan.
Contoh :
strSubstr = Mid$("Visual Basic", 3, 4)
Hasil: strSubstr = "sual"

Fungsi : Left$ (or Left)
Deskripsi : Memotong string dari kiri
Syntax: Left$(string, length)
string String yang ingin dipotong length
Required; Panjang pemotongan
Contoh :
1. strSubstr = Left$("Visual Basic", 3)
Hasil: strSubstr = "Vis"
Diatas sama jika kita menggunakan Mid$:
strSubstr = Mid$("Visual Basic", 1, 3)

File dan Direktori VB.net

Sumber : http://tidipia-comp.blogspot.com/2011/12/file-dan-direktori-vbnet.html
Ok, teman-teman dan bapak-ibu semua, kali ini saya hendak membahas tentang mengutak-atik file dan direktori dengan menggunakan Visual Basic .Net.

Biasanya yang paling sering dibutuhkan pada project .Net anda terkait dengan file dan direktori adalah, menggandakan (copy), menghapus (delete) atau bahkan mengecek apakah file/direktori tersebut sudah ada dalam direktori lain.

Dan langsung saja, dibawah ini mudah-mudahan bisa menjadi jawabanya :

Directory / Folder.
Syntax untuk membuat direktori. Contoh membuat folder "testdir1" :
System.IO.Directory.CreateDirectory("C:\testDir1")

Syntax untuk mengecek apakah folder "testDir1" sudah ada atau belum pada path tertentu :
System.IO.Directory.Exists("C:\testDir1")

Syntax contoh untuk memindahkan folder "testDir2" yang berada didalam folder "C:\testDir1" ke folder "C:\testDir3" :
System.IO.Directory.Move("C:\testDir1\testDir2", "C:\testDir3")

Syntax untuk menghapus folder "testDir1" :
System.IO.Directory.Delete("C:\testDir1")

Mencari Selisih Tanggal dan Bulan VB.Net

 Sumber : http://tidipia-comp.blogspot.com/2011/12/mencari-selisih-tanggal-dan-bulan-vbnet.html

Masih dengan tema tanggal, berikut cara untuk mencari selisih tanggal dan bulan antara data tanggal pertama dan data tanggal kedua. Tidak sulit kok, karena .Net sudah menyertakan fungsi tersebut dengan menggunakan "DateDiff" , dibawah adalah contoh penggunaanya saja :

Disini untuk data rentang tanggalnya saya gunakan contoh dengan menggunakan DateTimePicker dan nilai kembali dengan tipe data Integer.
Ok, masukan dua buah DateTimePicker ke dalam form, kemudian ubah namanya :
Untuk tanggal awal ubah menjadi "dtPicker1", dan rentang tanggal akhir-nya dtPicker2.

Menghitung selisih tanggal :
Private Function HitungTanggal() As Integer
Return DateDiff(DateInterval.Day, dtPicker1.Value.Date, dtPicker2.Value.Date)
End Function

Menghitung selisih bulan :
Private Function HitungBulan() As Integer
Return DateDiff(DateInterval.Month, dtPicker1.Value.Date, dtPicker2.Value.Date)
End Function

Jika yang dicari selisih tanggal awal atau tanggal akhirnya hari ini, ganti dtPicker1/dtPicker2 dengan Date.Now .

Nah, pada aplikasi penggajian biasanya sering membutuhkan fungsi untuk menghitung jumlah hari juga, tapi tidak termasuk hari sabtu/minggu atau mencari jumlah hari kerja. Bagaimanakah caranya ? Berikut cuplikan syntax-syntax pada fungsi tersebut :

Private Function HitungHariKerja() As Integer
Dim tmpDate = Date.Now
Dim intResult As Integer = DatePart(DateInterval.Day, DateAdd(DateInterval.Day, -1, _
DateAdd(DateInterval.Month, 1, DateAdd(DateInterval.Day, _
DatePart(DateInterval.Day, Date.Now) + 1, Date.Now))))

For i As Integer = 0 To intResult
If Weekday(tmpDate) = 1 Then 'hari minggu (1)
intResult += -1
End If

If Weekday(tmpDate) = 7 Then 'hari sabtu (7)
intResult += -1
End If

tmpDate = DateAdd(DateInterval.Day, 1, tmpDate)
Next

Return intResult
End Function

Fungsi diatas jumlah hari kerja yang dicari adalah bulan dari tanggal sekarang, syntax nya terdapat pada deklarasi pertama kali (Dim tmpDate = Date.Now). Jika anda hendak mencari jumlah hari kerja bulan berikutnya atau bulan lalu, "Date.Now" pada deklarasi "tmpDate" bisa dikombinasikan dengan fungsi "DateAdd". Misalkan anda ingin menambahkan dua bulan berikutnya dari sekarang :
Dim tmpDate = DateAdd(DateInterval.Month, 2, Date.Now)

atau dua bulan lalu dari sekarang :
Dim tmpDate = DateAdd(DateInterval.Month, -2, Date.Now)

Bagaimana penjelasan saya kira-kira? apakah mudah dimengerti? Jika ada pertanyaan, saran, kritik atau masukan (cacian dan makian tidak termasuk) silahkan tinggalkan komentar dibawah. Terima kasih sudah berkunjung, semoga bermanfaat.

Casting Tipe Data VB.Net

Sumber : http://tidipia-comp.blogspot.com/2011/12/casting-tipe-data-vbnet.html
 
Nah sekarang kita akan membahas tentang casting tipe, dan dua keyword casting yang paling sering digunakan biasanya CType dan DirectCast. CType adalah kode konversi menjadi bagian dari kode yang mengevaluasi ekspresi. Oleh karena tidak ada pemanggilan ke prosedur, akibatnya CType akan dieksekusi lebih cepat. Berikut contoh dari CType :

Dim int As Integer = 1
Dim b As Boolean, c As Boolean

'Casting int ke Boolean, b = True
b = CType(int, Boolean)

Perhatian! CType bukan merupakan jalan satu-satunya menuju kesukesan solusi casting pada semua tipe. Khusus untuk casting dari tipe Object ke tipe lainnya, sebaiknya gunakan DirectCast. Lihat pada contoh dibawah :
Dim x As Integer = 123

' Boxing x ke Object
Dim myObj As Object = x

Console.WriteLine(”myObj= ” & myObj.ToString())
' Output: myObj= 123

' Unboxing, secara eksplisit
Dim y As Integer = DirectCast(myObj, Integer)

Console.WriteLine(”y= ” & y)
' Output: y= 123

Pada saat melakukan casting suatu objek ke tipe yang lebih spesifik, DirectCast lebih baik dibanding CType, karena ia tidak menggunakan method-method pembantu runtime.

Mulai dari VB.NET 2005 ke atas, ditambahkan keyword casting baru, yaitu TryCast. Perbedaan mendasar antara TryCast dengan CType dan DirectCast adalah mengenai nilai yang dikembalikan ketika operasi gagal dilakukan. Baik CType maupun DirectCast, keduanya sama-sama mengembalikan nilai InvalidCastException pada objek, sedangkan TryCast akan mengembalikan Nothing. Perhatikan contoh dibawah, agar lebih mantab ilmu kanuragan nya :

Function TestCast(ByVal o As Object) As String
Dim obj As IConvertible = TryCast(o, IConvertible)
If obj Is Nothing Then
Return "Objek tidak dapat dikonversi"
Else
Return "Tipe kode " & obj.GetTypeCode()
End If
End Function

Segitu dulu penjelasan seputar VB.Net mengenai Casting Tipe Data, terima kasih dan semoga bermanfaat.

Bersihkan Isi Semua TextBox pada Form VB.Net

Pada VB.6 Control TextBox bisa dibuat array, sehingga untuk membersihkan nya tinggal me-loop array dari Control TextBox tersebut lalu mengosongkan isinya. Pada Paltform .Net objek atau kontrol tidak bisa dibuat array, kalaupun bisa diakalin malah akan menambah syntax-syntax nya makin jelimet.

Dibawah ini contoh memberishkan isi semua TextBox pada form :
Private Sub ClearTextBox(ByVal frm As System.Windows.Forms.Form)
For Each ctl As Control In frm.Controls
If TypeOf ctl Is TextBox Then
CType(ctl, TextBox).Text = String.Empty
End If
Next
End Sub

Penggunaanya di dalam form tersebut :
ClearTextBox(Me)
Perhatian !!! Contoh diatas Jika TextBox anda berada pada form tanpa GroupBox, jika TextBox di form tersebut berada didalam GroupBox maka syntax nya akan berbeda lagi. Perhatikan perbedaanya :
Public Sub ClearTextBoxInBox(ByVal grb As System.Windows.Forms.GroupBox)
For Each ctl As Control In grb.Controls
If TypeOf ctl Is TextBox Then
CType(ctl, TextBox).Text = String.Empty
End If
Next
End Sub

Maka contoh penggunaanya :
CearTextBoxInBox(GroupBox1)
Sumber : http://tidipia-comp.blogspot.com/2011/12/bersihkan-isi-semua-textbox-pada-form.html

Sedikit penjelasan kedua fungsi diatas, "ctl" didekarasikan sebagai Control langsung pada saat di-looping dengan "for-each" pada syntax :
For Each ctl as Control In grb.Controls

karena yang di-looping objek nya bersifat global (Control), maka untuk pencarian objek TextBox perlu dilakukan validasi control dengan menyertakan TypeOf pada operator bersyarat "If" :
If TypeOf ctl Is TextBox Then

selanjutnya, jika ditemukan maka "ctl" (Control) di-casting ke bentuk object TextBox :
CType(ctl, TextBox).Text = String.Empty

Dan anda bisa melakukan modifikasi jika ingin menghapus isi TextBox pada semua GroupBox didalam form, caranya dengan membuat If Bersarang (If Nested). Pada If pertama lakukan validasi GroupBox, lalu letakan kondisi lagi didalamnya (If kedua) dengan validasi TextBox.

Terima kasih atas kunjunganya, semoga bermanfaat.

Selasa, 25 Desember 2012

Enable Remote Connection on SQL Server 2008 Express

Sumber : http://www.linglom.com/2009/03/28/enable-remote-connection-on-sql-server-2008-express/

Introduction

Last time, I wrote an article show how to enable remote connection on SQL Server 2005 Express. Now SQL Server 2008 Express is released for a while, it doesn’t allow remote connection on default installation as on SQL Server 2005 Express. So you have to enable it manually.


If you’re trying to connect to SQL Server 2008 Express remotely without enable remote connection first, you may see these error messages:
  • “Cannot connect to SQL-Server-Instance-Name
    An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 28 – Server doesn’t support requested protocol) (Microsoft SQL Server)”

    Server doesn't support requested protocol
  • “Cannot connect to SQL-Server-Instance-Name
    An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified) (Microsoft SQL Server)”

    Error Locating Server/Instance Specified
  • “Cannot connect to SQL-Server-Instance-Name
    Login failed for user ‘username‘. (Microsoft SQL Server, Error: 18456)”

    Login failed for user 'sa'
To enable remote connection on SQL Server 2008 Express, see the step below:
  1. Start SQL Server Browser service if it’s not started yet. SQL Server Browser listens for incoming requests for Microsoft SQL Server resources and provides information about SQL Server instances installed on the computer.
  2. Enable TCP/IP protocol for SQL Server 2008 Express to accept remote connection.
  3. (Optional) Change Server Authentication to SQL Server and Windows Authentication. By default, SQL Server 2008 Express allows only Windows Authentication mode so you can connect to the SQL Server with current user log-on credential. If you want to specify user for connect to the SQL Server, you have to change Server Authentication to SQL Server and Windows Authentication.
Note: In SQL Server 2008 Express, there isn’t SQL Server Surface Area Configuration so you have to configure from SQL Server Configuration Manager instead.

Step-by-step

  1. Open SQL Server Configuration Manager. Click Start -> Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager.
    SQL Server Configuration Manager
  2. On SQL Server Configuration Manager, select SQL Server Services on the left window. If the state on SQL Server Browser is not running, you have to configure and start the service. Otherwise, you can skip to step 6.
    SQL Server Browser Service
  3. Double-click on SQL Server Browser, the Properties window will show up. Set the account for start SQL Server Browser Service. In this example, I set to Local Service account.
    Set Startup Account
  4. On SQL Server Browser Properties, move to Service tab and change Start Mode to Automatic. Therefore, the service will be start automatically when the computer starts. Click OK to apply changes.
    Set Start Mode to Automatic
  5. Back to SQL Server Configuration Manager, right-click on SQL Server Bowser on the right window and select Start to start the service.
    Start SQL Server Browser Service
  6. On the left window, expand SQL Server Network Configuration -> Protocols for SQLEXPRESS. You see that TCP/IP protocol status is disabled.
    Protocols for SQL EXPRESS
  7. Right-click on TCP/IP and select Enable to enable the protocol.
    Enable TCP/IP protocol
  8. There is a pop-up shown up that you have to restart the SQL Service to apply changes.
    Need to Restart SQL Server Service
  9. On the left window, select SQL Server Services. Select SQL Server (SQLEXPRESS) on the right window -> click Restart. The SQL Server service will be restarted.
    Restart SQL Server Service
  10. Open Microsoft SQL Server Management Studio and connect to the SQL Server 2008 Express.
    Open Microsoft SQL Server Management Studio
  11. Right-click on the SQL Server Instance and select Properties.
    Open Server Properties
  12. On Server Properties, select Security on the left window. Then, select SQL Server and Windows Authentication mode.
    Change Authentication to SQL Server and Windows Authentication
  13. Again, there is a pop-up shown up that you have to restart the SQL Service to apply changes.
    Need to Restart SQL Server Service
  14. Right-click on the SQL Server Instance and select Restart.
    Restart SQL Server Service
  15. That’s it. Now you should be able to connect to the SQL Server 2008 Express remotely.

Selasa, 11 Desember 2012

Menyisipkan Kontrol Baru

Sumber : http://pujanggavb.wordpress.com/2008/11/14/menyisipkan-kontrol-baru/

Menambahkan sebuah kontrol pada saat design mode memang mudah sekali. Anda tinggal memilih jenis kontrol yang disediakan ToolBox, kemudian melakukan dragging pada badan form. Bisakah Anda menciptakan atau menambahkan kontrol baru pada saat runtime atau melalui jendela kode?
Teknik berikut ini adalah teknik untuk menciptakan kontrol baru. Cukup aneh memang, Anda tidak memasukkan kontrol apapun, namun ketika program berjalan form tiba-tiba menciptakan kontrol-kontrol baru. Lebih aneh lagi kontrol-kontrol ini dapat diperintah layaknya kontrol yang Anda desain saat design mode.
Berikut ini contoh program untuk menyisipkan sebuah PictureBox, beberapa TextBox dan sebuah VScrollBar yang dijalankan ketika runtime.
Stop! Tidak perlu melakukan design apapun, ketikkan kode di bawah ini.



Option Explicit

   Dim ctl As Control
   Dim i As Long
   Dim AkhirTinggi As Long
   Dim AwalTop As Long

   Dim JumTextBox As Integer
   Dim myVsb As Control

  Dim WithEvents vsbScroll As VScrollBar
  Dim WithEvents Picture1 As PictureBox

  Private Sub Form_Load()
      'Membuat PictureBox
      Set ctl = Me.Controls.Add("VB.PictureBox", _
          "Picture1")
      ctl.Visible = True

      ctl.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
      Set Picture1 = ctl

      'Membuat TextBox baru
      JumTextBox = 20 '<-- banyaknya="banyaknya" br="br" textbox="textbox">      For i = 0 To JumTextBox
          Set ctl = Me.Controls.Add("VB.TextBox", _
          "Text" & CStr(i))
          'Agar kontrol ditampung PictureBox
          Set ctl.Container = Picture1
          'Memposisikan dan mengatur ukuran TextBox
          ctl.Move 60, 60 + (330 * i), 2000, 285

          AkhirTinggi = i * (60 + (330 * i) + 285)
          'Mengisi properti Text
          'sesuai dengan nama TextBox
          ctl.Text = ctl.Name

          'Menampilkan TextBox
          ctl.Visible = True
      Next

      'Membuat ScrollBar vertical
      Set ctl = Me.Controls.Add("VB.VScrollBar", _
          "vsbScroll")
      Set ctl.Container = Picture1
      ctl.Move Picture1.Width - 350, 0, 280, Picture1.Height - 100
      ctl.Max = JumTextBox * 300 + Picture1.Height
      ctl.SmallChange = 100
      ctl.LargeChange = 200
      ctl.Visible = True

      Set vsbScroll = ctl
  End Sub

  Sub vsbScroll_Change()
      'Memindahkan posisi TextBox
      For Each ctl In Me.Controls
          If TypeOf ctl Is TextBox Then
              ctl.Top = ctl.Top + (AwalTop - vsbScroll.Value)
          End If
      Next
      AwalTop = vsbScroll.Value
  End Sub

  Sub vsbScroll_Scroll()
      vsbScroll_Change
  End Sub

  Private Sub VScroll1_Change()
      For Each ctl In Me.Controls
          If TypeOf ctl Is TextBox Then
              ctl.Top = ctl.Top + (AwalTop - VScroll1.Value)
          End If
      Next

      AwalTop = VScroll1.Value
  End Sub
Jalankan program (F5), lihatlah apa yang terjadi! CObalah untuk mengklik atau menggerakan batang penggulung (VScrollBar).