กระทู้เก่าบอร์ด อ.Yeadram
        
           2,189   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.5010s
    
      
		
**************************
ชอบจังครับความต้องการของคุณ man นี่
เรียกว่าเป็นความต้องการที่เป็นขั้นพัฒนาจริง ๆ
------------------
เข้าเรื่องละกัน
ผมขอตอบในทางที่น่าจะเป็นไปได้ละกันนะครับ
ถ้าคุณ man มองว่าคอนโทรล (form, textbox, checkbox) เป็นคลาส ๆ หนึ่ง
ในคลาสนั้นจะมี procedure, property หรืออะไรต่อมิอะไรก็ตาม เวลาที่คุณต้องการสร้างคลาสใหม่(คลาสที่ลอกมาจากคอนโทรลที่มีอยู่แล้ว) คุณก็ทำการสร้างคลาสใหม่นั้นขึ้นมาแล้วก็ทำการเพิ่ม instance ของคอนโทรล
เขามาในคลาสของคุณ จากนั้นถ้าคุณต้องการให้มันมี property หรือ procedure ใหม่ ๆ ตามที่คุณต้องการก็ให้สร้าง Property Get, Property Let หรือฟังก์ชัน เข้ามาในคลาสนั้น