กระทู้เก่าบอร์ด อ.Yeadram
2,029 10
URL.หัวข้อ /
URL
ต้องการสร้าง property ใน Textbox เป็นของตัวเองได้ไ
ถ้าผมต้องการจะสร้าง property โดยต้องการกำหนดชื่อเป็นของผมเอง โดยอาจจะสร้างที่ FORM,TextBox,Checkbox ฯลฯ ได้ไหมครับ
ใช่เป็นการสร้าง class หรือเปล่าครับ ขอตัวอย่างด้วยนะครับ
ใช่เป็นการสร้าง class หรือเปล่าครับ ขอตัวอย่างด้วยนะครับ
10 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R06807
ตัวอย่าง ทำการสร้างคลาสชื่อ class_A
....
dim myTextBox as New TextBox
Property Get getTextBoxName() As String
getTextBoxName = myTextBox.Name
End Property
Property Let setTextBoxName(strName as String)
Set myTextBox.Name = strName
End Property
....
dim myTextBox as New TextBox
Property Get getTextBoxName() As String
getTextBoxName = myTextBox.Name
End Property
Property Let setTextBoxName(strName as String)
Set myTextBox.Name = strName
End Property
3 @R06808
ว่าแต่ Property ที่ไมโครซอฟท์ให้มายังไม่พอต่อความต้องการของคุณ man อีกหรอคับ สงสัยคงอยากจะทำให้มันยืดหดได้อัตโนมัติ
ถ้าเป็นไปได้ก็หันไปใช้ Native programming tool ซะเลยครับ
ถ้าเป็นไปได้ก็หันไปใช้ Native programming tool ซะเลยครับ
4 @R06809
แล้ว class_A นี้ต้องสร้างตรงไหนครับ ใช่ class module หรือเปล่า
ความต้องการของผมเพิ่มเติมคือ เวลาผมใช้ TextBox ที่อยู่ในฟอร์ม ผมต้องการให้มันขึ้น Property ให้อยู่ใน PropertySheet ด้วยนะครับ
เช่น TextBoxA มี property ชื่อ ColorGroup เป็น String มีค่า = 'A'
TextBoxB มี property ชื่อ ColorGroup เป็น String มีค่า = 'B'
พอ FormLOAD ผมก็ตรวจสอบแค่ว่า ColorGroup ตัวไหนเป็น A ให้แสดงตัวอักษรเป็นสีแดง ตัวไหนมีค่าเป็น B ให้แสดงตัวอักษรเป็นสีดำเป็นตัน อยากได้ตัวอย่างด้วยนะครับ มือใหม่สุดๆ
ความต้องการของผมเพิ่มเติมคือ เวลาผมใช้ TextBox ที่อยู่ในฟอร์ม ผมต้องการให้มันขึ้น Property ให้อยู่ใน PropertySheet ด้วยนะครับ
เช่น TextBoxA มี property ชื่อ ColorGroup เป็น String มีค่า = 'A'
TextBoxB มี property ชื่อ ColorGroup เป็น String มีค่า = 'B'
พอ FormLOAD ผมก็ตรวจสอบแค่ว่า ColorGroup ตัวไหนเป็น A ให้แสดงตัวอักษรเป็นสีแดง ตัวไหนมีค่าเป็น B ให้แสดงตัวอักษรเป็นสีดำเป็นตัน อยากได้ตัวอย่างด้วยนะครับ มือใหม่สุดๆ
5 @R06810
***************
หลอกเด็กหรือเปล่า มือใหม่เค้าคงไม่คิดแปลกแหวกแนวแบบนี้มั้งครับ
หลอกเด็กหรือเปล่า มือใหม่เค้าคงไม่คิดแปลกแหวกแนวแบบนี้มั้งครับ
6 @R06811
สำหรับ access นะครับ
7 @R06812
ก็หมายความว่าถ้าเป็นอย??างอื่นคุณ man ต้องเก่งแน่ ๆ เลย(ฝากตัวด้วยนะครับ)
*********** ต่อ
ถ้าจะเปรียบเทียบแล้ว Access มันเป็นตัวเลือกสุดท้ายในการพัฒนาโปรแกรม จริงอยู่ว่ามันสามารถนำไปใช้ร่วมกับ tool อื่น ๆ ได้ดี แต่ถ้าคิดจะทำให้ตัวมันเองทำงานได้เท่ากับ tool ตัวอื่น มันทำไม่ได้หรอกครับ
**********
ต่อจากการเขียนคลาส เมื่อสร้างคลาส A ขึ้นมาได้แล้ว ปัญหาที่ตามมาคือ คุณก็ไม่สามารถที่จะทำให้คลาส A นั้นปรากฎบนฟอร์มได้อยู่ดี เพราะคลาส A ก็คือคลาส A ไม่ใช่คลาส TextBox (จะไปกำหนดให้ class_A = TexBox ผมว่ามันทำไม่ได้ ถ้าเป็นจาวาหรือ C อันนั้นไม่แน่) แต่คุณสามารถ ใช้งานมันได้ในจินตนาการ (ผมไม่รู้จะใช้คำพูดอะไรแทน) เหมือนกับเวลาที่เราเขียนเชื่อมต่อข้อมูลด้วย DAO หรือ ADO ประมาณนั้นครับ เราไม่เห็นตัวคอนโทรล แต่เราสามารถนึกภาพตามได้ว่า คลาสที่เราเขียนขึ้นมานั้นมันทำงานได้จริง
*********** ต่อ
ถ้าจะเปรียบเทียบแล้ว Access มันเป็นตัวเลือกสุดท้ายในการพัฒนาโปรแกรม จริงอยู่ว่ามันสามารถนำไปใช้ร่วมกับ tool อื่น ๆ ได้ดี แต่ถ้าคิดจะทำให้ตัวมันเองทำงานได้เท่ากับ tool ตัวอื่น มันทำไม่ได้หรอกครับ
**********
ต่อจากการเขียนคลาส เมื่อสร้างคลาส A ขึ้นมาได้แล้ว ปัญหาที่ตามมาคือ คุณก็ไม่สามารถที่จะทำให้คลาส A นั้นปรากฎบนฟอร์มได้อยู่ดี เพราะคลาส A ก็คือคลาส A ไม่ใช่คลาส TextBox (จะไปกำหนดให้ class_A = TexBox ผมว่ามันทำไม่ได้ ถ้าเป็นจาวาหรือ C อันนั้นไม่แน่) แต่คุณสามารถ ใช้งานมันได้ในจินตนาการ (ผมไม่รู้จะใช้คำพูดอะไรแทน) เหมือนกับเวลาที่เราเขียนเชื่อมต่อข้อมูลด้วย DAO หรือ ADO ประมาณนั้นครับ เราไม่เห็นตัวคอนโทรล แต่เราสามารถนึกภาพตามได้ว่า คลาสที่เราเขียนขึ้นมานั้นมันทำงานได้จริง
8 @R06813
สำหรับกระทู้ที่ T01599 เกี่ยวกับเรื่องการเปิดฟอร์มเดียวกันหลายครั้งนั้น
ผมว่าเป็นคำถามที่ดีครับ ถ้าเรานำมาประยุกต์ใช้กับการทำงานบางอย่าง เช่นถ้าเป็นห้างร้านที่ต้องมีการออกบิล/ใบกำกับ
นึกภาพดูซิครับถ้าเรากำลังขายสินค้าให้กำลูกค้าคนหนึ่งและเราก็ทำการบันทึกรายการ
สินค้าของลูกค้าคนนั้นไปด้วย แต่บังเอิญว่ามีลูกค้าอีกคนหนึ่งเข้ามาและซื้อสินค้า
เพียงรายการเดียว ดังนั้นเราจำเป็นต้องพักการขายให้กับลูกค้าคนก่อนเอาไว้ ถ้าโดยทั่วไปเรามีฟอร์มสำหรับขายเพียงฟอร์มเดียว เราจะไม่สามารถขายสินค้าให้กับลูกค้าที่คนที่สองได้นอกเสียจากว่าจะทำการ
ยกเลิกรายการของคนก่อนหรือไม่ก็รอจนกว่าการบันทึกรายการก่อนนั้นจะสมบูรณ์
หรือคิดจะแก้ปัญหาโดยการสร้างฟอร์มสำรองขึ้นมาอีกฟอร์ม (อันนี้ก็แล้วแต่
เทคนิคของแต่ละคน) แต่แน่นอนครับสำหรับการทำงานในรูปแบบนี้ ถ้าคิดจะใช้
แบบ bound form ล่ะก็ ผมคิดว่าน่าจะเกิดปัญหา Record Lock หรือถ้าไม่ล็อก มันก็น่าจะเกิดปัญหาการรุมกินโต๊ะอะไรประมาณนี้ เพราะงั้นผมถึงต้องหลีกเลี่ยง
ไปใช้วิธีการเขียนคลาสขึ้นมาเพื่อทำงานกับฐานข้อมูลแยกต่างหาก
ผมว่าเป็นคำถามที่ดีครับ ถ้าเรานำมาประยุกต์ใช้กับการทำงานบางอย่าง เช่นถ้าเป็นห้างร้านที่ต้องมีการออกบิล/ใบกำกับ
นึกภาพดูซิครับถ้าเรากำลังขายสินค้าให้กำลูกค้าคนหนึ่งและเราก็ทำการบันทึกรายการ
สินค้าของลูกค้าคนนั้นไปด้วย แต่บังเอิญว่ามีลูกค้าอีกคนหนึ่งเข้ามาและซื้อสินค้า
เพียงรายการเดียว ดังนั้นเราจำเป็นต้องพักการขายให้กับลูกค้าคนก่อนเอาไว้ ถ้าโดยทั่วไปเรามีฟอร์มสำหรับขายเพียงฟอร์มเดียว เราจะไม่สามารถขายสินค้าให้กับลูกค้าที่คนที่สองได้นอกเสียจากว่าจะทำการ
ยกเลิกรายการของคนก่อนหรือไม่ก็รอจนกว่าการบันทึกรายการก่อนนั้นจะสมบูรณ์
หรือคิดจะแก้ปัญหาโดยการสร้างฟอร์มสำรองขึ้นมาอีกฟอร์ม (อันนี้ก็แล้วแต่
เทคนิคของแต่ละคน) แต่แน่นอนครับสำหรับการทำงานในรูปแบบนี้ ถ้าคิดจะใช้
แบบ bound form ล่ะก็ ผมคิดว่าน่าจะเกิดปัญหา Record Lock หรือถ้าไม่ล็อก มันก็น่าจะเกิดปัญหาการรุมกินโต๊ะอะไรประมาณนี้ เพราะงั้นผมถึงต้องหลีกเลี่ยง
ไปใช้วิธีการเขียนคลาสขึ้นมาเพื่อทำงานกับฐานข้อมูลแยกต่างหาก
9 @R06814
ในคอลโทรลต่างๆบนฟอร์ม จะมี Tag property (อยู่ใน Property Sheet) ซึ่ง Access เตรียมไว้ให้ผู้ใช้นำไปใช้ได้ตามต้องการ แต่เพราะมันมีเตรียมไว้เพียง property เดียว ถ้าต้องการใส่หลายๆค่า ก็อาจใส่เป็น ColorGroup='A', FontGroup='Cordia New' แต่คุณก็ต้องเขียนโปรแกรมเพื่อตีความพารามิเตอร์ที่ต้องการว่ามีค่าเป็นอะไรเองครับ
10 @R06815
ขอบคุณครับ เดี๋ยวจะถามอีกเรื่อยๆ ยังไงก็ฝากตัวด้วยเหมือนกันนะครับ
Time: 0.2468s
**************************
ชอบจังครับความต้องการของคุณ man นี่
เรียกว่าเป็นความต้องการที่เป็นขั้นพัฒนาจริง ๆ
------------------
เข้าเรื่องละกัน
ผมขอตอบในทางที่น่าจะเป็นไปได้ละกันนะครับ
ถ้าคุณ man มองว่าคอนโทรล (form, textbox, checkbox) เป็นคลาส ๆ หนึ่ง
ในคลาสนั้นจะมี procedure, property หรืออะไรต่อมิอะไรก็ตาม เวลาที่คุณต้องการสร้างคลาสใหม่(คลาสที่ลอกมาจากคอนโทรลที่มีอยู่แล้ว) คุณก็ทำการสร้างคลาสใหม่นั้นขึ้นมาแล้วก็ทำการเพิ่ม instance ของคอนโทรล
เขามาในคลาสของคุณ จากนั้นถ้าคุณต้องการให้มันมี property หรือ procedure ใหม่ ๆ ตามที่คุณต้องการก็ให้สร้าง Property Get, Property Let หรือฟังก์ชัน เข้ามาในคลาสนั้น