ใช้วิธีการซ่อน Control ต่างๆ ที่อยู่ในแต่ละ Area ของฟอร์มดูนะครับ วิธีง่ายๆ ตามด้านล่างนี้ครับ
==================================================
เพิ่มปุ่ม Command เข้าไปในฟอร์ม 4 ปุ่ม
Name: cmdShowAll | cmdShowA1 | cmdShowA2 | cmdShowA3
Caption: [Show All] | [Show #1] | [Show #2] | [Show #3]
และที่ Control แต่ตัว เฉพาะใน Area 1, 2 และ 3 ให้ระบายรวบ ทุกๆ Control ใน Area นั้นๆ
แล้วเปลี่ยน Properties ที่ชื่อว่า tag เป็นตัวเลข 1, 2 และ 3 ตามแต่ละ Area
ส่วน Control อื่นๆ ที่ต้องพิมพ์ทุกๆครั้ง ไม่ต้องระบุครับ
เมื่อคลิกปุ่มหนึ่งปุ่มใดใน 4 ปุ่ม นี้ จะทำการซ่อน/แสดง Control ตาม Area
หลังจากที่ซ่อนแล้ว สามารถสั่งพิมพ์ฟอร์มได้ต่างต้องการครับ
----------------------------------------------------------------------------------------
Option Compare Database
Option Explicit
Sub ShowForm(Optional ShowArea As Byte = 0)
'ซ่อน/แสดง Control
Dim ctl As Control
Dim ShowMe As Boolean
'ShowArea = 0 is Show All
'ย้ายโฟกัสมาที่ Control ตัวอื่นก่อน กัน Error ขณะซ่อน Control ที่โฟกัสอยู่
txtDATE.Tag = ""
txtDATE.SetFocus
'วนซ่อน Control
For Each ctl In Me.Controls
If ShowArea = 0 Or ctl.Tag = "" Or ctl.Tag = ShowArea Then
'Show All | Show for No Tag | Show for Matching Area
ctl.Visible = True
Else
ctl.Visible = Fase
End If
Next ctl
'ซ่อนปุ่มคำสั่ง Show ต่างๆ
cmdShowAll.Visible = False
cmdShowA1.Visible = False
cmdShowA2.Visible = False
cmdShowA3.Visible = False
'4 ปุ่มนี้ แสดงเมื่อ Form_load หรือ Detail_DblClick
End Sub
Private Sub cmdShowAll_Click()
ShowForm
End Sub
Private Sub cmdShowA1_Click()
Call ShowForm(1)
End Sub
Private Sub cmdShowA2_Click()
Call ShowForm(2)
End Sub
Private Sub cmdShowA3_Click()
Call ShowForm(3)
End Sub
Private Sub Detail_DblClick(Cancel As Integer)
'คลิกๆ ที่ว่าง (Form Detail) เพื่อแสดงปุ่มที่ซ่อนไป
cmdShowAll.Visible = True
cmdShowA1.Visible = True
cmdShowA2.Visible = True
cmdShowA3.Visible = True
End Sub
----------------------------------------------------------------------------------------
ลองปรับใช้ดูนะครับ
ูู๋^J^