gravatar

Control Array.

program yang akan Anda buat mengharuskan dapat menambah control saat run-time, maka persyaratan utama adalah: Anda terlebih dulu harus menjadikan control-control tersebut sebagai Control Array. Silahkan jelajahi source code di artikel ini. 

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

free counters

Halaman

Diberdayakan oleh Blogger.