บทที่ 7

คอนโทรลพิเศษใน VB.NET


1.การใช้คอนโทรล Frame


หน้าที่ของคอนโทรล Frame
         คอนโทรล  Frame ใช้สำหรับแยกหมวดหมู่คอนโทรลออกจากกัน  เพื่อให้เกิดความสะดวกการในจัดการ  และการเคลื่อนย้าย นิยมใช้ร่วมกับคอนโทรล CheckBox และOptionButton

การจัดวางคอนโทรล  Frame  

1.คลิกเมาส์ที่ปุ่มปุ่ม  Frame  ที่แถบเครื่องมือ 1 ครั่ง  (ปุ่มจะยุบลง)
2.เลื่อนเมาส์ไปยังพื้นที่ฟอร์ม  คลิกเมาส์ค้างไว้วางลงบนฟอร์ม  แล้วปล่อยปุ่มเมาส์
3.ย้าย  หรือ ปรับขนาดของ  Frame   ตามความเหมาะสม


คุณสมบัติ ที่สำคัญ (Properties)  ของคอนโทรล   Frame
Properties
รายละเอียด
Name
ชื่อของคอนโทรลที่ใช้อ้างถึงโปรแกรม
Caption
ข้อความที่แสดงบนตัวคอนโทรล
Enable
อนุญาต/ไม่อนุญาตให้คอนโทรลทำงาน
Visible
ให้แสดงหรือไม่แสดง คอนโทรลในขณะโปรแกรมทำงาน
ForeColor
สีอักษรที่แสดงบนคอนโทรล(กำหนดได้เหมือนคอนโทรล  Label)


ความสามารถ (Method) ที่สำคัญของคอนโทรล Command  Button

Method
รายละเอียด
Refresh
สั่งให้ปรับปรุงการแสดงผลคอนโทรล
Zorder
จัดลำดับดารแสดงผลซ้อนกันของคอนโทรล (0 อยู่บนสุด 1 อยู่ล่างสุด)

2.บันทึกพาธ และ Copy ไฟล์รูปภาพจาก OpenFileDialog


บทความนี้เป็นตัวอย่างเล็กๆ สำหรับการใช้งาน OpenFileDialog คอนโทรล และการดึงค่าต่างๆ ไปใช้งาน เช่น การบันทึกพาธไฟล์ และการ copy ไฟล์ไปไว้ในโฟลเดอร์ที่เราต้องการ เป็นลักษณะการเก็บพาธไว้ในฐานข้อมูล ส่วนรูปภาพจะเก็บไว้ในโฟลเดอร์ที่เรากำหนดไว้ เช่นไว้ภายใต้ root ของโฟลเดอร์ย่อยที่โปรแกรม (exe) รันอยู่ไปดูวิธีกันเลย
นี่คือหน้าจอโปรแกรมเมื่อเลือกรูปภาพจากการกดปุ่ม Brows…
0 

การรันโปรแกรม
1. กดปุ่ม Brows… => เลือกรูปภาพที่ต้องการ
1 2

2. เมื่อคลิกปุ่มม Open จากข้อ 1 รูปจะแสดงบน pictureBox1 => กดปุ่ม Save เพื่อทำดารบันทึก และ copy ไฟล์ไปไว้ในที่ที่เราได้กำหนดไว้ (ตัวอย่างนี้ไม่ได้กล่าวถึงโค้ดในส่วนบันทึกพาธลงฐานข้อมูล ท่านผู้อ่านลองไปต่อยอดเอานะครับ)
3 4

3. ถ้าเราเข้าไปดูในพาธที่โปรแกรมของเรารันอยู่จะเห็นว่ามีการสร้างโฟลเดอร์ Picture รอไว้หนึ่งอันซึ่งไว้สำหรับการ copy รูปไปเก็บไว้นั่นเอง และพาธอันนี้แหละที่เราจะเก็บมันไว้ในฐานข้อมูล เพื่อว่าเมื่อย้อนกลับมาดู้ข้อมูล โปรแกรมจะได้จำได้ว่ารูปถูกเก็บไว้ที่ใหน
 6
ไปดูโค้ดกันครับ

โค้ดบางส่วน
       //ที่ปุ่ม Brows
        private void btBrows_Click(object sender, EventArgs e)
        {
            OpenFileDialog opfd = new OpenFileDialog();
            opfd.Filter = "JPEG (*.jpg)|*.jpg|Windows bitmap (*.bmp)|*.bmp|All files|*.*" ;
            opfd.InitialDirectory = "C:\";
            opfd.Title = "Select a picture";
            if (opfd.ShowDialog() == DialogResult.OK)
            {
                filenname = System.IO.Path.GetFileName(opfd.FileName);//ดึงเฉพาะชื่อไฟล์ไปเก็บชั่วคราวในตัวแปร filenname
                path = System.IO.Path.GetDirectoryName(opfd.FileName);//ดึงเฉพาะพาธไฟล์ไปเก็บชั่วคราวในตัวแปร path




                txtPart.Text = opfd.FileName;
                this.pictureBox1.Image = new Bitmap(opfd.FileName.ToString());


            }


        }


    //โค้ดที่ปุ่ม บันทึก
        private void btSave_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("คุณต้องการบันทึกข้อมูล ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                try
                {
                    string sourceFile = path + "\" + filenname;
                    //ดึงพาธปัจจุบันที่โปรแกรม exe รันอยู่ ไปต่อด้วยชื่อโฟลเดอร์ Picture เพื่อเก็บภาพ และพาธเป็นปลายทาง
                    string pathPicture = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\Picture";


                    //destFile ไฟล์ปลายทาง ที่จะ copy ไปวาง ได้แก่ พาธปลายทาง และชื่อไฟล์
                    string destFile = pathPicture + "\" + filenname;


                    //ทำกการตรวจสอบ พาธเป็นปลายทาง
                    if (!Directory.Exists(pathPicture))
                        Directory.CreateDirectory(pathPicture);//ถ้ายังไม่เคยมีในโลก ให้สร้างใหม่


                    //ทำการตรวจสอบ ไฟล์ปลายทาง
                    if (!File.Exists(destFile))
                        File.Copy(sourceFile, destFile);//ถ้ายังไม่มีให้ copy ไปได้ 
                                                        //หรือใช้ File.Copy(sourceFile, destFile,true)จะ copy ทับของเก่า


                    //วางโค้ดบันทึก ข้อมูลลงฐานข้อมูล
                    //ลงที่นี่: โดย
                    // นำพาธในตัวแปร pathPicture
                    // นำชื่อไฟล์ในตัวแปร filenname
                    // ไปบันทึกลงฐานข้อมูล
                    //#หมายเหตุ ข้อควรระวัง#
                    //
                    // โปรแกรมนี้เหมาะสำหรับการใช้ของผู้ใช้งานคนเดียว
                    // ไม่เหมาะสำหรับการใช้งานหลายๆ เครื่องๆ เนื่องจากพาธที่เก็บใน Server กระจายตามเครื่อง Client 
                    // ทำให้มีปัญหาเครื่องอื่นจะเปิดพาธไฟล์และชื่อไฟล์ ที่บันทึกจากเครื่องของเราไม่ได้
                    ////////////////////////


                    MessageBox.Show("บันทึกข้อมูลเรียบร้อย", "ผลการบันทุกข้อมูล", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    clearObject();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("เกิดข้อผิดพลาด"+Environment.NewLine+"Error "+ex.Message , "ผลการบันทุกข้อมูล", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }






            }
        }





3.Date Time Picker

Date time picker เป็น Text box พิเศษที่ได้รับการออกแบบสำหรับค่าของ Date หรือ Time โดย Text box แบ่งออกเป็นฟิลด์ย่อย สำหรับส่วนประกอบแต่ละวัน (วันที่, เดือน, ปี, ชั่วโมง, นาที และวินาที) ตัว control นี้สนับสนุนรูปแบบ Date/Time ทั้งหมด (รวมถึงรูปแบบที่กำหนดเอง) และสามารถส่งออกเป็นค่าว่าง
ในเวลาเรียกใช้ ผู้ใช้สามารถใช้ประโยชน์จากปุ่มลูกศรซ้ายและขวากับฟิลด์ย่อย และสามารถเพิ่มค่าหรือลดค่าด้วยการใช้ปุ่มลูกศรขึ้นและลง แสดงวันที่ด้วย Drop-down calendar (ตั้งค่าคุณสมบัติ UpDown เป็น False) หรือปรับปรุงค่าปัจจุบันจากการไฮไลต์ส่วนประกอบด้วยปุ่ม spin (ตั้งค่าคุณสมบัติ UpDown เป็น True)

การตั้งค่าคุณสมบัติเมื่อออกแบบ

ตามค่าเริ่มต้นของลูกศรลบอยู่ทางขวาของตัว control เช่นเดียวกับ Combo box ปกติ การคลิกบนลูกศร จะแสดงปฏิทินแบบ drop-down สำหรับผู้ใช้เลือกวันที่แทนการพิมพ์ ถ้าตั้งค่าคุณสมบัติ UpDown เป็น True ลูกศรลงจะเปลี่ยนเป็นปุ่ม spin สำหรับการเพิ่มหรือค่าด้วยเมาส์
คุณสมบัติ CheckBox ถ้าเป็น True จะแสดง CheckBox ใกล้ขอบซ้ายของตัว Control ซึ่งผู้ใช้สามารถยกเลิกการเลือกได้ ถ้าไม่ต้องการเลือกวันใด ๆ
Date time picker มีการใช้คุณสมบัติบางส่วนร่วมกับ Month view เช่น คุณสมบัติ Value, MinDate และ MaxDate
Drop-down calendar เป็นการแสดง Month view เพียง 1 เดือน ทำให้ Date time picker มีคุณสมบัตินี้ทั้งหมดของ Month View แต่มีชื่อแตกต่างกัน คือ calendar เนื่องจากตัว control ไม่มีคุณสมบัติ ForeColor และ BackColor มาตรฐาน ทำให้การแก้ไขลักษณะภายนอกของ Drop-down calendar จะไม่สามารถใช้คำสั่งเปลี่ยนสีเริ่มต้นในตัว control ได้
คุณสมบัติ Format มีผลกับการแสดงตัว control และมีค่าเป็น 0-dtpLongDate, 1-dtpShortDate, 2-dtpTime หรือ 3-dtpCustom
ถ้าเลือกรูปแบบกำหนดเองจะสามารถกำหนดรูปในคุณสมบัติ CustomFormat

Date time picker สามารถรวมกับแหล่งข้อมูลได้ ทำให้มีคุณสมบัติ DataSource, DataMember, DataField และ DataFormat แต่คุณสมบัติ DataFormat ไม่สนับสนุนเมื่อตัว control รวมกับ Data control หรือ Remote Date control แต่สามารถปรับปรุงรูปแบบการแสดงค่าด้วยคุณสมบัติ Format และ CustomFormat

การทำงานเมื่อเรียกใช้

เมื่อมีการเรียกใช้ การดึงและตั้งค่าใน Date time picker จะผ่านคุณสมบัติ Value หรือโดยคุณสมบัติ Year, Month, Day, DayOfWeek, Hour, Minute และ Second
DTPicker1.Month = (DTPicker1.Month Mod 12) +1
If DTPicker1.Month = 1 Then DTPicker1.Year = DTPicker1.Year + 1

Date time picker มีหลาย event ที่สนับสนุน Text box มาตรฐาน ได้แก่ Change, KeyDown, KeyPress, KeyUp, MouseDown, MouseMove, MouseUp, Click และ DblClick เมื่อมีการใช้ Drop-down calendar จะไม่มี event ที่เกิดขึ้นจากเมาส์และคีย์บอร์ด
เมื่อผู้ใช้คลิกบนลูกศรลง จะเกิด DropDown event ก่อนที่ Drop-down calendar จะปรากฏขึ้น (ถ้าคุณสมบัติ UpDown เป็น False)
เมื่อมีการเลือกวันที่จากปฏิทินแล้วจะเกิด Change event จากนั้นตามด้วย CloseUp event
ข้อควรระวัง: ไม่สามารถกำหนดค่าคุณสมบัติ MinDate และ MaxDate ขณะเรียกใช้


ไม่มีความคิดเห็น:

แสดงความคิดเห็น