ขอโค้ดควบคุม กล่องข้อความครับ
กระทู้เก่าบอร์ด อ.Yeadram

 3,661   16
URL.หัวข้อ / URL
ขอโค้ดควบคุม กล่องข้อความครับ

คือผมมี ComboBox อยู่อันหนึ่ง ชื่อว่า "111"
มีตัวเลือกอยู่ 2 ตัวเลือก คือ "ใช้" , "ไม่ใช้"

ผมต้องการให้

ถ้าหากว่ารายการใน ComboBox เป็น "ใช้" ให้ คอนโทรล กล่องข้อความที่ชื่อ "222" เปลี่ยนพื้นหลังเป็นสีเขียว กล่องข้อความที่ชื่อ "333" ตัวหนังสือเป็นสีเขียว

ถ้าหากว่ารายการใน ComboBox เป็น "ไม่ใช้"   ให้ คอนโทรล กล่องข้อความที่ชื่อ "222" เปลี่ยนพื้นหลังเป็นสีแดง กล่องข้อความที่ชื่อ "333" ตัวหนังสือเป็นสีแดง

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ต้องเขียนโค้ดยังไงครับ
รบกวนท่านทั้งหลายด้วยครับ

16 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R04176

Private Sub Ctl111_AfterUpdate()
     If Not IsNull(Ctl111) Then
            Select Case Ctl111.ListIndex
                   Case 0
                            Ctl222.BackColor = vbGreen
                            Ctl333.ForeColor = vbGreen
                   Case 1
                            Ctl222.BackColor = vbRed
                            Ctl333.ForeColor = vbRed
            End Select
     Else
            MsgBox "ไม่ได้เลือกข้อมูล"
     End If
End Sub
ลองเขียนดูได้ประมาณนี้ครับ
2 @R04182
มันไม่เปลี่ยนการแสดงผลอะไรเลย
ไม่มี error ขึ้นด้วย

รบกวน ท่านใด
พอจะช่วยเหลือได้
ช่วยแก้ให้หน่อยครับ
3 @R04184
ผมเขียนบนพื้นฐานของ ComboBox ชื่อ 111 ไม่ใช่ "111"
เช่นเดียวกัน TextBox อีก 2 ตัว คือ 222 ,333

แต่ยังไม่เคยพบ การตั้งชื่อเป็น "111","222","333"
ไม่ทราบจะนำไปใช้ ทำอะไรหรือครับ เผื่อมีทางออกด้านอื่น
4 @R04185

ทีนี้ลองทดลอง "111","222","333"
click event procedure ที่ AfterUpdate
ขึ้น เป็น Ctl_111_
ทดลองดูหลายแบบ ได้วิธีนี้ก่อน ไม่ทราบว่า ใช้ได้หรือไม่

Private Sub Ctl_111__AfterUpdate()
On Error GoTo err_111
     Select Case Me(Chr(34) & 111 & Chr(34)).Value
            Case "ใช้"
                   Me(Chr(34) & 222 & Chr(34)).BackColor = vbGreen
                   Me(Chr(34) & 333 & Chr(34)).ForeColor = vbGreen
            Case "ไม่ใช้"
                   Me(Chr(34) & 222 & Chr(34)).BackColor = vbRed
                   Me(Chr(34) & 333 & Chr(34)).ForeColor = vbRed
     End Select
Exit Sub
err_111:
      MsgBox Err.Number & " " & Err.Description
End Sub
5 @R04186
หรือใน R04176

แก้ไข Ctl111,Ctl222,Ctl333 เป็น Ctl_111_ , Ctl_222_ , Ctl_333_

ก็ใช้ได้เช่นกัน
6 @R04188
ขออนุญาตเสริมนะครับ

กรณีนี้เอาแบบง่ายๆโดยไม่ต้องใช้โค้ดอะไรเลยดังนี้ครับ

เปิดฟอร์มที่มุมมองออกแบบ แล้วคลิกขวาที่คอนโทรลที่คุณต้องการ แล้วเลือก "จัดรูปแบบตามเงื่อนไข" (ตามในรูป)



จากนั้นคุณก็กำหนดรูปแบบต่างๆ ตามที่ต้องการได้เอง โดยไม่ต้องเขียนโค้ดครับ
7 @R04189
จัดรูปแบบตามเงื่อนไขที่คุณต้องการ



สามารรถจัดรูปแบบได้ 4 รูปแบบครับ
8 @R04191
ที่ตั้งชื่อเป็น 111 , 222 , 333 นั้น เพื่อให้ง่ายต่อการทำความเข้าใจครับ
ผมก็กะว่าถ้าได้แล้วก็จะเปลียนตัวเลข 111 , 222 , 333
ให้เป็น ชื่อ คอนโทรลของผมครับ
หรือถ้าไม่ได้ ก็จะเปลี่ยน คอนโทรลของผม
ให้เป็นเลข 111 , 222 , 333 แทนซะเลย

- - - - - - - - - - - - - - - - - - - -

งานของผมคือ ฐานข้อมูลครุภัณฑ์ในหน่วยงานครับ
มันจะมี รหัสของครุภัณฑ์ที่ "ยังใช้อยู่" ในฐานข้อมูล
และรหัสของครุัภัณฑ์ที่ "ตัดทิ้งแล้ว" อยู่ในฐานข้อมูล
ซึ่งในฐานข้อมูลชื่อคอนโทรลคือ status เป็น combobox มีลิสอยู่ 2 รายการ
คือ "ยังใช้อยู่" และ "ตัดทิ้งแล้ว"

จุดประสงค์ของผมคือถ้ารหัสหมายเลขไหนซึ่ง สถานะเป็น   "ยังใช้อยู่"
ก็ให้ txtbox ชื่อว่า code ซึ่งเป็น หมายเลขรหัสครุภัณฑ์ พื้นหลังเป็นสีเขียว ตัวหนังสือสีขาว
และใน txtbox ชื่อว่า detail ซึ่งเป็น รายละเอียดครุภัณฑ์ พื้นหลังเป็นสีขาว ตัวหนังสือเป็นสีเขียว เพื่อให้รู้ว่า ใช้อยู่

ส่วนรหัสครุภัณฑ์ไหนที่ สถานะเป็น "ตัดทิ้งแล้ว"
ก็ให้ txtbox ชื่อว่า code ซึ่งเป็น หมายเลขรหัสครุภัณฑ์ พื้นหลังเป็นสีแดง ตัวหนังสือสีขาว
และใน txtbox ชื่อว่า detail ซึ่งเป็น รายละเอียดครุภัณฑ์ พื้นหลังเป็นสีขาว ตัวหนังสือเป็นสีแดง เพื่อให้รู้ว่า รหัสนี้ไม่ใช้แล้ว

แสดงให้เห็นแตกต่า่งกันอย่างชัดเจน น่ะครับ

- - - - - - - - - - - - - - - - - - - -

ผมกลัวว่าจะทำความเข้าใจยากน่ะครับ ก็เลยสมมติชื่อคอนโทรลให้เป็น
เลข 111 , 222 , 333 แทน ก็คิดว่าถ้าทำได้แล้วก็จะเอาชื่อคอนโทรลเข้าไปแทน ตัวเลข 1 2 3 ครับ
ต้อง ขออภัย ที่อาจจะอธิบาย ไม่ละเอียด ตั้งแต่ต้น


ส่วนวิธีของคุณ ditasilk เรปที่ (R04185) เอาไปทดลองดูแล้ว ยังไม่ได้ครับ
ผมกลัวว่า อาจะเป็นเพราะฐานข้อมูลของผมเอง เพราะในหน้า VB นั้น
ภาษาไทยของผมกลายเป็นภาษาต่างดาว หมดเลย
ผมยังหาวิธีเปลี่ยนไม่ได้ครับ กลัวว่าทำไปแล้ว โค้ดมันจะพังครับ
เพราะผมเขียน VB ไม่เป็น ที่ทำทุกวันนี้ก็คือ หา copy โค้ดจากในเว็บ
ไปแปะในฐานข้อมูล ซึ่งจะแำ้ก้อะไร เล็กๆ น้อยๆ ก็ทำไม่ค่อยเป็นน่ะครับ
อาจจะรบกวนบ่อยไปหน่อย   ก็ขออภัยไว้ ณ ที่นี้ครับ


ส่วนวิธีของคุณ อภิชัย เรปที่ (R04188) ทดลองดูแล้ว ทำได้กับ คอนโทรลนั้นๆ
แต่ผมหาวิธีอ้างไปหา คอนโทรลอื่น ๆ ไม่ได้ครับ
หรืออาจจะต้องสร้างเป็น นิพจน์ เพื่ออ้างไปหา คอนโทรลอื่นๆ อีกที
คงต้องรบกวนด้วยครับ


ถึงจะยังไม่สำเร็จ แต่ก็ขอบคุณ ทั้งสองท่านที่เข้ามา กรุณาตอบให้ครับ
หากมี ท่านไหนพอจะช่วยได้ ก็รบกวนด้วยครับ
9 @R04194
private sub 111_change()
222.forecolor=ดำ
333.forecolor=ดำ
222.backcolor=ขาว
333.backcolor=ขาว
if 111="ใช้" then
   222.backcolor=เขียว
    333.forecolor=เขียว
elseif 111="ไม่ใช้ then
    222.backcolor=RGB(255,10,10)
    333.forecolor=RGB(255,10,10)
end if
End sub
10 @R04196
ขอแลกเปลี่ยนด้วยครับ

กรณีที่ตั้งชื่อ Control Combo box เป็น 111 เวลาเขียน event procedure
ทำไม ไม่เป็น Private sub 111_change() แต่ access กลับ สร้างให้เป็น
private sub Ctl111_change()
พอเปลี่ยนเป็น 111_change() มันฟ้องว่า IDENTIFIER แสดงว่ามันหา
OBJECT ไม่พบ
อ.yeadram พอทราบเหตุผลหรือไม่ครับ
11 @R04200
ชื่อออบเจค ทุกชนิด
ต้องนำหน้าด้วย ตัวอักษรครับ ห้ามนำหน้าด้วยตัวเลข

เห็นว่าเจ้าของคำถามจะนำไปเปลี่ยนคำ ผมเลยเขียนให้เห็นเป็นโครงสร้างไว้ให้ครับ
12 @R04201
เนื่องจากผมอาจจะอธิบายไม่ละเอียดตั้งแต่ต้น
ทำให้หลายท่านอาจจะเข้าใจไม่ละเีอียด
ก็ขอ อภัยไว้ด้วยครับ

ผมจึงส่งตัวอย่างไฟล์งานของผม ไปไว้ที่ แอคเค้าท์บอร์ด

user: accboard
pass : accgmail

ชื่อหัวข้อ : โค้ด ควบคุม สีของ กล่องข้อความ
ขนาดไฟล์ : 220 K

ต้องขอรบกวน ท่านทั้งหลาย รบกวนช่วยกรุณา แ้ก้ไขให้ด้วยครับ
คำอธิบายอยู่หน้าฟอร์มครับผม
13 @R04203
โค้ดของ อ.yeadram ที่ให้ไว้
เอาไปเปลี่ยนชื่อแล้วก็ยัง ไม่ได้ครับผม

คงต้อง รบกวน อ.yeadram เข้าไป
ดูตัวอย่างไฟล์ ในแอคเคาท์บอร์ด
ให้ด้วยครับ

ต้องขอรบกวน อ.yeadram ด้วยครับ
ขอบคุณครับ
14 @R04205
ผมส่งไฟล์ที่แก้ไขให้แล้ว นะครับ
ไม่ทราบตรงตามที่ต้องการหรือไม่

ต้องการให้แก้ไขอไรก็แจ้งมานะครับ
15 @R04206
ให้คุณนครินทร์ เพิ่มเติม เหตุการณ์
Private Sub Form_Current()
            Select Case status.ListIndex
                     Case 0
                             status.BackColor = 6723891
                             code.BackColor = 6723891   'vbGreen
                             detail.ForeColor = 6723891   'vbGreen
                     Case 1
                             status.BackColor = RGB(255, 10, 10)
                             code.BackColor = RGB(255, 10, 10)
                             detail.ForeColor = RGB(255, 10, 10)
            End Select
       
End Sub
ในกรณีที่เลื่อน reccord แล้วให้เปลี่ยนสี ด้วย
16 @R04211
ทำได้แล้วครับ
ต้องขอบคุณท่าน ditasilk ที่กรุณา สละเวลาไปทำให้ครับ
ตรงกับที่ต้องการเลย
ขอบคุณมากครับผม

แล้วก็ขอบคุณทุกๆ ท่าน ที่กรุณาเข้ามาให้ความเห็น
เข้ามาให้คำแนะนำ ทุกๆ เรป ครับผม

ขอบคุณมากๆ ครับ

@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.4799s