Tecnologia, programação e muito Visual FoxPro.

domingo, 11 de abril de 2010

Re: ]] XL-mania [[ Userform & TextBox dlm konfigurasi matrix

begini kah, pak Boss ??
 
 
' keempat variable ini di-declares di level modul
' agar berlaku di semua prosedur dlm modul ybs (userform1 module)
Dim ArrTop()
dim ArrLef()
Dim vCheck As Integer
Dim hCheck As Integer
 
Private Sub ShowHide_TextBox(ChkVal As Boolean)
   ' siti Vi / 11 april 2010
   ' prosedur utama / show/hide textboxes
   ' prosedur ini dijalankan otomatis setiap ada checkbox di klik

  
   Dim oCtr As Control
   Dim nTop As Integer
   Dim nLef As Integer
  
   For Each oCtr In Me.Controls
      If InStr(1, LCase(oCtr.Name), "text") > 0 Then oCtr.Visible = 0
   Next
   Call CheckBoxTopLeftList
   If vCheck = 0 And hCheck = 0 Then Exit Sub
  
   ' ada 3 cara show/hide, tergantung nilai vCheck dan hCheck
   ' --1-- hanya menampakkan TxtBox yg nilai TOP nya
   '       ada di daftar ArrTOP

   If vCheck > 0 And hCheck = 0 Then
      For nTop = 1 To vCheck
         For Each oCtr In Me.Controls
            If InStr(1, LCase(oCtr.Name), "text") > 0 Then
               If oCtr.Top = ArrTop(nTop) Then oCtr.Visible = True
            End If
         Next
      Next
   End If
  
   ' --2-- hanya menampakkan TxtBox yg nilai LEFT nya
   '       ada di daftar ArrLEF
   If vCheck = 0 And hCheck > 0 Then
      For nLef = 1 To hCheck
         For Each oCtr In Me.Controls
            If InStr(1, LCase(oCtr.Name), "text") > 0 Then
               If oCtr.Left = ArrLef(nLef) Then oCtr.Visible = True
            End If
         Next
      Next
   End If
  
   ' --3-- hanya menampakkan TextBox yg nilai LEFT dan TOP nya
   '       saat itu ada di dlm daftar (array) ArrLEF dan ArrTOP
   If vCheck > 0 And hCheck > 0 Then
      For nTop = 1 To vCheck
         For nLef = 1 To hCheck
            For Each oCtr In Me.Controls
               If InStr(1, LCase(oCtr.Name), "text") > 0 Then
                  If oCtr.Left = ArrLef(nLef) Then
                     If oCtr.Top = ArrTop(nTop) Then oCtr.Visible = True
                  End If
               End If
            Next
         Next
      Next
   End If
End Sub
 

Private Sub CheckBoxTopLeftList()
   ' siti Vi / 11 april 2010
   ' membuat daftar dinamis mengenai
   ' checkbox yg dicontreng & nilai Top & LEFT nya
   ' prosedur ini dipanggil oleh prosedur Show_Hide...
  
   Dim oCheck As Control, p As Integer, q As Integer
  
   ' 4 variable di bawah ini akan digunakan oleh prosedur utama
   ' untuk mengatur show/hide Textbox
   ReDim ArrTop(0 To 0)  'daftar nilai TOP  ChkBox KIRI yg dicontreng
   ReDim ArrLef(0 To 0)  'daftar nilai LEFT ChkBox ATAS yg dicontreng
   vCheck = 0   'banyaknya ChkBox bag.KIRI yg dicontreng saat itu
   hCheck = 0   'banyaknya ChkBox bag.ATAS yg dicontreng saat itu
  
   For Each oCheck In Me.Controls
  
      ' Jika NAMA object control mengandung "chk"...
      ' (= berarti obj dari class CheckBox...)

      If InStr(1, LCase(oCheck.Name), "chk") > 0 Then
     
         ' Jika kondisinya dlm keadaan dicontreng...
         If oCheck.Value = True Then
            oCheck.BackStyle = 1
           
            ' Jika yg dicontreng = ChkBox KIRI...
            If oCheck.Left < 20 Then
               p = p + 1
               ReDim Preserve ArrTop(0 To p)
               ArrTop(p) = oCheck.Top
               vCheck = UBound(ArrTop)
            End If
           
            ' Jika yg dicontreng = ChkBox ATAS...

            If oCheck.Top < 40 Then
               q = q + 1
               ReDim Preserve ArrLef(0 To q)
               ArrLef(q) = oCheck.Left
               hCheck = UBound(ArrLef)
            End If
         Else
            oCheck.BackStyle = 0
         End If
      End If
   Next oCheck
End Sub

'-----------------
note:
in case anda tidak dapat melihat UserFormModule DAN anda memerlukannya
coding lengkap akan dikirimkan kpd anda, at request.../japri..
-ctv-
 

----- Original Message -----
From: HerrSoe
Sent: Sunday, April 11, 2010 12:41 PM
Subject: ]] XL-mania [[ Userform & TextBox dlm konfigurasi matrix
 
Si boss lagi belajar excel dan rupanya tertarik dgn userform & vba programming-nya.
Dia sudah membuat userform penuh dengan textbox dlm konfigurasi matrik.
Setelah dirapihkan 'dikit; kira kira penampakannya seperti ini
 
 
 
CheckBoxA
 
CheckBoxB
 
CheckBoxC
 
CheckBoxD
 
CheckBoxE
 
CheckBoxF
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox8
 
 
 
 
 
 
 
 
 
 
 
 
 
Dia ingin:
ketika userform dipanggil:
semua Textbox harus tidak nampak
yg boleh nampak hanya CheckBox
 
Jika CheckBox di-checked (dicontreng)
 
**kalau CheckBoxnya dari grup yg berada di Atas (warna biru) SAJA
maka sekelompok ("sekolom") TextBox yg berada tepat di bawahya harus nampak.
 
**kalau CheckBoxnya dari grup yg berada di KIRI (warna coklat muda) SAJA
maka sekelompok ("sebaris") TextBox yg berada tepat di samping kanannya harus nampak
 
**kalau CheckBoxnya dari grup yg berada di KIRI  DAN juga ada dari grup ATAS; 
maka TextBox yg boleh nampak hanyaTextBox yg di atas nya ada CheckBox yg dicotreng
dan di KIRI nya ada CheckBox yg dicontreng
 
 
 
CheckBoxA
 
contreng
 
CheckBoxC
 
contreng
 
contreng
 
CheckBoxF
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
contreng
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
contreng
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CheckBox8
 
 
 
 
 
 
 
 
 
 
 
 
 
Mohon bantuan bagaimana codingnya ??
terlampir workbook yg sudah berisi userform tetapi belum ada prosedur untuk mengatur perilaku
TextBox seperti yg di minta si boss...
 
terima kasih.
 

Nenhum comentário:

Arquivo do blog