กระทู้เก่าบอร์ด อ.Yeadram
3,661 16
URL.หัวข้อ /
URL
ขอโค้ดควบคุม กล่องข้อความครับ
คือผมมี ComboBox อยู่อันหนึ่ง ชื่อว่า "111"
มีตัวเลือกอยู่ 2 ตัวเลือก คือ "ใช้" , "ไม่ใช้"
ผมต้องการให้
ถ้าหากว่ารายการใน ComboBox เป็น "ใช้" ให้ คอนโทรล กล่องข้อความที่ชื่อ "222" เปลี่ยนพื้นหลังเป็นสีเขียว กล่องข้อความที่ชื่อ "333" ตัวหนังสือเป็นสีเขียว
ถ้าหากว่ารายการใน ComboBox เป็น "ไม่ใช้" ให้ คอนโทรล กล่องข้อความที่ชื่อ "222" เปลี่ยนพื้นหลังเป็นสีแดง กล่องข้อความที่ชื่อ "333" ตัวหนังสือเป็นสีแดง
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ต้องเขียนโค้ดยังไงครับ
รบกวนท่านทั้งหลายด้วยครับ
มีตัวเลือกอยู่ 2 ตัวเลือก คือ "ใช้" , "ไม่ใช้"
ผมต้องการให้
ถ้าหากว่ารายการใน ComboBox เป็น "ใช้" ให้ คอนโทรล กล่องข้อความที่ชื่อ "222" เปลี่ยนพื้นหลังเป็นสีเขียว กล่องข้อความที่ชื่อ "333" ตัวหนังสือเป็นสีเขียว
ถ้าหากว่ารายการใน ComboBox เป็น "ไม่ใช้" ให้ คอนโทรล กล่องข้อความที่ชื่อ "222" เปลี่ยนพื้นหลังเป็นสีแดง กล่องข้อความที่ชื่อ "333" ตัวหนังสือเป็นสีแดง
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ต้องเขียนโค้ดยังไงครับ
รบกวนท่านทั้งหลายด้วยครับ
16 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R04182
มันไม่เปลี่ยนการแสดงผลอะไรเลย
ไม่มี error ขึ้นด้วย
รบกวน ท่านใด
พอจะช่วยเหลือได้
ช่วยแก้ให้หน่อยครับ
ไม่มี error ขึ้นด้วย
รบกวน ท่านใด
พอจะช่วยเหลือได้
ช่วยแก้ให้หน่อยครับ
3 @R04184
ผมเขียนบนพื้นฐานของ ComboBox ชื่อ 111 ไม่ใช่ "111"
เช่นเดียวกัน TextBox อีก 2 ตัว คือ 222 ,333
แต่ยังไม่เคยพบ การตั้งชื่อเป็น "111","222","333"
ไม่ทราบจะนำไปใช้ ทำอะไรหรือครับ เผื่อมีทางออกด้านอื่น
เช่นเดียวกัน 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
ทีนี้ลองทดลอง "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_
ก็ใช้ได้เช่นกัน
แก้ไข Ctl111,Ctl222,Ctl333 เป็น Ctl_111_ , Ctl_222_ , Ctl_333_
ก็ใช้ได้เช่นกัน
6 @R04188
ขออนุญาตเสริมนะครับ
กรณีนี้เอาแบบง่ายๆโดยไม่ต้องใช้โค้ดอะไรเลยดังนี้ครับ
เปิดฟอร์มที่มุมมองออกแบบ แล้วคลิกขวาที่คอนโทรลที่คุณต้องการ แล้วเลือก "จัดรูปแบบตามเงื่อนไข" (ตามในรูป)
จากนั้นคุณก็กำหนดรูปแบบต่างๆ ตามที่ต้องการได้เอง โดยไม่ต้องเขียนโค้ดครับ
กรณีนี้เอาแบบง่ายๆโดยไม่ต้องใช้โค้ดอะไรเลยดังนี้ครับ
เปิดฟอร์มที่มุมมองออกแบบ แล้วคลิกขวาที่คอนโทรลที่คุณต้องการ แล้วเลือก "จัดรูปแบบตามเงื่อนไข" (ตามในรูป)
จากนั้นคุณก็กำหนดรูปแบบต่างๆ ตามที่ต้องการได้เอง โดยไม่ต้องเขียนโค้ดครับ
7 @R04189
จัดรูปแบบตามเงื่อนไขที่คุณต้องการ
สามารรถจัดรูปแบบได้ 4 รูปแบบครับ
สามารรถจัดรูปแบบได้ 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) ทดลองดูแล้ว ทำได้กับ คอนโทรลนั้นๆ
แต่ผมหาวิธีอ้างไปหา คอนโทรลอื่น ๆ ไม่ได้ครับ
หรืออาจจะต้องสร้างเป็น นิพจน์ เพื่ออ้างไปหา คอนโทรลอื่นๆ อีกที
คงต้องรบกวนด้วยครับ
ถึงจะยังไม่สำเร็จ แต่ก็ขอบคุณ ทั้งสองท่านที่เข้ามา กรุณาตอบให้ครับ
หากมี ท่านไหนพอจะช่วยได้ ก็รบกวนด้วยครับ
ผมก็กะว่าถ้าได้แล้วก็จะเปลียนตัวเลข 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
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 พอทราบเหตุผลหรือไม่ครับ
กรณีที่ตั้งชื่อ 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
ต้องขอรบกวน ท่านทั้งหลาย รบกวนช่วยกรุณา แ้ก้ไขให้ด้วยครับ
คำอธิบายอยู่หน้าฟอร์มครับผม
ทำให้หลายท่านอาจจะเข้าใจไม่ละเีอียด
ก็ขอ อภัยไว้ด้วยครับ
ผมจึงส่งตัวอย่างไฟล์งานของผม ไปไว้ที่ แอคเค้าท์บอร์ด
user: accboard
pass : accgmail
ชื่อหัวข้อ : โค้ด ควบคุม สีของ กล่องข้อความ
ขนาดไฟล์ : 220 K
ต้องขอรบกวน ท่านทั้งหลาย รบกวนช่วยกรุณา แ้ก้ไขให้ด้วยครับ
คำอธิบายอยู่หน้าฟอร์มครับผม
13 @R04203
โค้ดของ อ.yeadram ที่ให้ไว้
เอาไปเปลี่ยนชื่อแล้วก็ยัง ไม่ได้ครับผม
คงต้อง รบกวน อ.yeadram เข้าไป
ดูตัวอย่างไฟล์ ในแอคเคาท์บอร์ด
ให้ด้วยครับ
ต้องขอรบกวน อ.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 แล้วให้เปลี่ยนสี ด้วย
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 ที่กรุณา สละเวลาไปทำให้ครับ
ตรงกับที่ต้องการเลย
ขอบคุณมากครับผม
แล้วก็ขอบคุณทุกๆ ท่าน ที่กรุณาเข้ามาให้ความเห็น
เข้ามาให้คำแนะนำ ทุกๆ เรป ครับผม
ขอบคุณมากๆ ครับ
ต้องขอบคุณท่าน ditasilk ที่กรุณา สละเวลาไปทำให้ครับ
ตรงกับที่ต้องการเลย
ขอบคุณมากครับผม
แล้วก็ขอบคุณทุกๆ ท่าน ที่กรุณาเข้ามาให้ความเห็น
เข้ามาให้คำแนะนำ ทุกๆ เรป ครับผม
ขอบคุณมากๆ ครับ
Time: 0.4799s
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
ลองเขียนดูได้ประมาณนี้ครับ