Control Array.
Code:: |
'Deskripsi: Menambahkan control DTPicker, ComboBox, dan TextBox ' ke atas form saat run-time. Dalam contoh ini, semua posisi control ' dijadikan dalam satu baris dengan tinggi (Heigh) yang sama. ' Klik Command1 untuk membuat control baru saat run-time; ' Klik Command2 untuk melihat value dari setiap control. 'Persiapan: 1. Buat satu project standard exe dengan 1 Form. ' 2. Tambahkan masing-masing: 1 DTPicker, 2 ComboBox, ' 3 TextBox, dan 2 CommandButton ke atas Form1. ' 3. Pilih semua control (kecuali CommandButton), ' lalu copy dan paste-kan semua control tadi ke atas form; ' dan jika ada konfirmasi pertanyaan apakah ingin dibuat ' sebagai control array, maka jawab dengan Yes. ' 4. Selanjutnya, hapus control hasil copy tadi, dan pastikan ' bahwa yang tersisa di atas Form1 adalah semua control ' dengan indeks ke-0; yaitu: DatePicker1(0), Combo1(0), ' Combo2(0), Text1(0), Text2(0), dan Text3(0). ' 5. Buat semua control dalam satu baris dan tinggi yang sama. ' 6. Copy-kan code berikut ke editor Form yang bertalian. '---------------------------------------------------------------------- Private Const TinggiControl = 315 Dim IndeksAkhir As Integer 'Klik Command1 untuk membuat control baru saat run-time Private Sub Command1_Click() On Error GoTo ErrHandler '--- Mulai DTPicker --- Dim SelisihDP As Double 'Tampung indeks terakhir dengan cukup mengambil Count DTPicker1 terakhir IndeksAkhir = DTPicker1.Count 'Batas antar control atas dengan bawah SelisihDP = DTPicker1(IndeksAkhir - 1).Height * 1.13 'Load DTPicker1 ke memory Load DTPicker1(IndeksAkhir) 'Definisikan batas atas label DTPicker1(IndeksAkhir).Top = DTPicker1(IndeksAkhir - 1).Top + SelisihDP 'Munculkan DTPicker1 yang baru ke form DTPicker1(IndeksAkhir).Visible = True '--- Akhir DTPicker --- '--- Mulai Combo1 --- Dim SelisihCb1 As Double 'Tampung indeks terakhir dengan cukup mengambil Count Combo1 terakhir IndeksAkhir = Combo1.Count 'Batas antar control atas dengan bawah SelisihCb1 = Combo1(IndeksAkhir - 1).Height * 1.13 'Load Combo1 ke memory Load Combo1(IndeksAkhir) 'Definisikan batas atas label Combo1(IndeksAkhir).Top = Combo1(IndeksAkhir - 1).Top + SelisihCb1 'Munculkan Combo1 yang baru ke form Combo1(IndeksAkhir).Visible = True '--- Akhir Combo1 --- '--- Mulai Combo2 --- Dim SelisihCb2 As Double 'Tampung indeks terakhir dengan cukup mengambil Count Combo2 terakhir IndeksAkhir = Combo2.Count 'Batas antar control atas dengan bawah SelisihCb2 = Combo2(IndeksAkhir - 1).Height * 1.13 'Load Combo2 ke memory Load Combo2(IndeksAkhir) 'Definisikan batas atas label Combo2(IndeksAkhir).Top = Combo2(IndeksAkhir - 1).Top + SelisihCb2 'Munculkan Combo2 yang baru ke form Combo2(IndeksAkhir).Visible = True '--- Akhir Combo2 --- '--- Mulai Text1 --- Dim SelisihTxt1 As Double 'Tampung indeks terakhir dengan cukup mengambil Count TextBox1 terakhir IndeksAkhir = Text1.Count 'Batas antar control atas dengan bawah SelisihTxt1 = Text1(IndeksAkhir - 1).Height * 1.13 'Load Text1 ke memory Load Text1(IndeksAkhir) 'Definisikan batas atas label Text1(IndeksAkhir).Top = Text1(IndeksAkhir - 1).Top + SelisihTxt1 'Munculkan Text1 yang baru ke form Text1(IndeksAkhir).Visible = True '--- Akhir Text1 --- '--- Mulai Text2 --- Dim SelisihTxt2 As Double 'Tampung indeks terakhir dengan cukup mengambil Count TextBox2 terakhir IndeksAkhir = Text2.Count 'Batas antar control atas dengan bawah SelisihTxt2 = Text2(IndeksAkhir - 1).Height * 1.13 'Load Text2 ke memory Load Text2(IndeksAkhir) 'Definisikan batas atas label Text2(IndeksAkhir).Top = Text2(IndeksAkhir - 1).Top + SelisihTxt2 'Munculkan Text2 yang baru ke form Text2(IndeksAkhir).Visible = True '--- Akhir Text2 --- '--- Mulai Text3 --- Dim SelisihTxt3 As Double 'Tampung indeks terakhir dengan cukup mengambil Count TextBox3 terakhir IndeksAkhir = Text3.Count 'Batas antar control atas dengan bawah SelisihTxt3 = Text3(IndeksAkhir - 1).Height * 1.13 'Load Text3 ke memory Load Text3(IndeksAkhir) 'Definisikan batas atas label Text3(IndeksAkhir).Top = Text3(IndeksAkhir - 1).Top + SelisihTxt3 'Munculkan Text3 yang baru ke form Text3(IndeksAkhir).Visible = True '--- Akhir Text3 --- MsgBox "Indeks control terakhir yang baru dibuat: " & IndeksAkhir, vbInformation Exit Sub ErrHandler: MsgBox Err.Description, vbCritical, "Error Buat Control" End Sub 'Klik Command2 untuk menampilkan value atau teks setiap control. 'Hal ini berguna jika Anda menginginkan agar setiap value di control 'yang baru dibuat nilainya berbeda dengan control sebelumnya. Private Sub Command2_Click() MsgBox "Value control terakhir yang baru dibuat: " & vbCrLf & vbCrLf & _ "DTPicker1 = " & DTPicker1(IndeksAkhir).Value & vbCrLf & _ "Combo1 = " & Combo1(IndeksAkhir) & vbCrLf & _ "Combo2 = " & Combo2(IndeksAkhir) & vbCrLf & _ "Text1 = " & Text1(IndeksAkhir) & vbCrLf & _ "Text2 = " & Text2(IndeksAkhir) & vbCrLf & _ "Text3 = " & Text3(IndeksAkhir) & vbCrLf & _ "", vbInformation End Sub Private Sub Form_Load() 'Pastikan tinggi semua control sama! DTPicker1(0).Height = TinggiControl 'Khusus Combobox, property Height tidak bisa diset saat RunTime! 'Dia hanya bisa diset saat design-time. Harap maklum. :-P 'Combo1(0).Height = TinggiControl 'Combo2(0).Height = TinggiControl Text1(0).Height = TinggiControl Text2(0).Height = TinggiControl Text3(0).Height = TinggiControl End Sub |