C++/CLI ตัวอย่างที่สามารถไปพัฒนาต่อยอดเป็นโปรเจ็คจบมหาวิทยาลัยได้

ในห้อง 'คอมพิวเตอร์ & อินเตอร์เน็ต' ตั้งกระทู้โดย ledphong, 20 สิงหาคม 2014.

  1. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    ตัวอย่างสมบูรณ์มากที่สุดสไตล์ไมโครซอร์ฟ จะรีบอัฟเดทลงให้สมาชิกที่ เป็นเซียน C++/CLI ตัวจริงโดยจะเริ่มต้นจากขั้นตอนการฝึกฝนเบื้องต้นถึงขั้นเทพไปทีละ Step By Step
    ===============================
    ตัวอย่างฉบับนำไปใช้ C++/CLI ใช้ฐานข้อมูล MS Access 2003 การแสดงผล ListView (โคตรหินๆ)
    ===============================
    Mr.Ledphong 080-7428876
     
    แก้ไขครั้งล่าสุดโดยผู้ดูแล: 21 สิงหาคม 2014
  2. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 1
    =========================================
    ดีไชน์ฐานข้อมูลว่าต้องเก็บอะไรบ้าง

    ชื่อฐานข้อมูล dbPhone
    ชื่อตารางข้อมูล tblPhone
    ภายในตารางมีชื่อฟิลล์ CodePK เป็น Primary Key , FirstName เก็บชื่อ , LastName เก็บนามสกุลและ PhoneNumber เก็บเบอร์โทรศัพท์
     

    ไฟล์ที่แนบมา:

    • pic1.jpg
      pic1.jpg
      ขนาดไฟล์:
      203.5 KB
      เปิดดู:
      66
    • pic2.jpg
      pic2.jpg
      ขนาดไฟล์:
      182.5 KB
      เปิดดู:
      41
    • pic3.jpg
      pic3.jpg
      ขนาดไฟล์:
      215.4 KB
      เปิดดู:
      43
    • pic4.jpg
      pic4.jpg
      ขนาดไฟล์:
      225.6 KB
      เปิดดู:
      60
    • pic5.jpg
      pic5.jpg
      ขนาดไฟล์:
      225.7 KB
      เปิดดู:
      42
    • pic6.jpg
      pic6.jpg
      ขนาดไฟล์:
      228.2 KB
      เปิดดู:
      18
  3. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 2
    ==========================================
    เข้าใช้โปรแกรมครั้งแรก
     

    ไฟล์ที่แนบมา:

    • pic7.jpg
      pic7.jpg
      ขนาดไฟล์:
      248.3 KB
      เปิดดู:
      20
  4. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 3
    =======================================
    ดีไชน์หน้าตาโปรแกรมและกำหนดชื่อต่างๆของปุ่มคำสั่ง
     

    ไฟล์ที่แนบมา:

    • pic1.jpg
      pic1.jpg
      ขนาดไฟล์:
      71 KB
      เปิดดู:
      25
  5. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 4
    ===================================
    เปลี่ยนชื่อ Form1.h เป็น frmMain.h
     

    ไฟล์ที่แนบมา:

    • pic2.jpg
      pic2.jpg
      ขนาดไฟล์:
      302.9 KB
      เปิดดู:
      21
  6. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 5
    =======================================
    ดับเบิ้ลคลิ๊ก Phone2014.cpp แล้วแก้ค่าตามกรอบเป็น "frmMain.h"
     

    ไฟล์ที่แนบมา:

    • pic3.jpg
      pic3.jpg
      ขนาดไฟล์:
      231.2 KB
      เปิดดู:
      19
  7. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 6
    ==========================================
    จัดกึ่งกลางจอภาพ พิมพ์ตามกรอบสีแดง

    StartPosition = FormStartPosition::CenterScreen;//จัดกึ่งกลาง
     

    ไฟล์ที่แนบมา:

    • pic4.jpg
      pic4.jpg
      ขนาดไฟล์:
      245 KB
      เปิดดู:
      28
  8. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 7
    =======================================
    กด F5 ดูว่ากึ่งกลางจอภาพจริงหรือไม่
     

    ไฟล์ที่แนบมา:

    • pic5.jpg
      pic5.jpg
      ขนาดไฟล์:
      260 KB
      เปิดดู:
      22
  9. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 8
    =====================================
    พิมพ์คำสั่งเพื่อติดต่อฐานข้อมูล MS Access 2003

    using namespace System::Data::OleDb; // for MS Access 2003 database
     

    ไฟล์ที่แนบมา:

    • pic6.jpg
      pic6.jpg
      ขนาดไฟล์:
      258.9 KB
      เปิดดู:
      23
  10. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 9
    ======================================
    ภายใต้ (ประกาศตัวแปรต่าง ๆ)
    public ref class Form1 : public System::Windows::Forms::Form
    ======================================

    private:
    // determines number lines of text each row should allow:
    static int iRowHeight = 0;
    String^ strConnection; // DB connection string
    // StringFormat^ strFormat; // to format the grid rows.
    ArrayList^ arrColumnLefts; // left coordinates of columns
    ArrayList^ arrColumnWidths; // column widths
    int iCellHeight; // datagridview cell dimensions
    int iTotalWidth;
    int iRow; // counter
     

    ไฟล์ที่แนบมา:

    • pic7.jpg
      pic7.jpg
      ขนาดไฟล์:
      290.2 KB
      เปิดดู:
      28
  11. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 10
    ===================================
    ภายใต้

    ~Form1()
    {
    if (components)
    {
    delete components;
    }
    }

    ========================================
    ประกาศตัวแปรเพื่อ Connect DataBase ในไดร์ฟ C:\dbPhone.mdb

    private:
    void InitializeVariables()
    {
    // For SQL server side database:
    // strConnection = "data source=localhost;Integrated Security=SSPI;Initial Catalog=yourDatabase;"
    // For client side OLE database:
    strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\dbPhone.mdb";// หรือ Data Source=..\\dbPhone.mdb";
    arrColumnLefts = gcnew ArrayList();
    arrColumnWidths = gcnew ArrayList();
    iCellHeight = 0;
    iTotalWidth = 0;
    iRow = 0;
    }
     

    ไฟล์ที่แนบมา:

    • pic8.jpg
      pic8.jpg
      ขนาดไฟล์:
      298.5 KB
      เปิดดู:
      20
  12. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 11
    ===========================================
    อย่าลืมเซฟไฟล์ด้วยครับ แล้วลองกด F5 ดูว่าสามารถติดต่อฐานข้อมูลได้หรือไม่
    ด้านล่างกรอบสีแดงจะต้องไม่ขึ้นข้อความอะไร ก็แสดงว่า Connect ผ่าน DataBase MS Access 2003 แล้วครับ
     

    ไฟล์ที่แนบมา:

    • pic9.jpg
      pic9.jpg
      ขนาดไฟล์:
      274.2 KB
      เปิดดู:
      22
  13. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 12
    =========================================
    เข้าไปดีไซน์ listView1 เพื่อให้แสดงค่าตรงตามวัตถุประสงค์
     

    ไฟล์ที่แนบมา:

    • pic10.jpg
      pic10.jpg
      ขนาดไฟล์:
      271.2 KB
      เปิดดู:
      19
  14. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 13
    ========================================
    ต่อ.....
     

    ไฟล์ที่แนบมา:

    • pic12.jpg
      pic12.jpg
      ขนาดไฟล์:
      289.4 KB
      เปิดดู:
      19
  15. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 14
    ===========================================
    ต่อ....
     

    ไฟล์ที่แนบมา:

    • pic13.jpg
      pic13.jpg
      ขนาดไฟล์:
      291.2 KB
      เปิดดู:
      19
  16. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 15
    =======================================
    ต่อ.....
     

    ไฟล์ที่แนบมา:

    • pic14.jpg
      pic14.jpg
      ขนาดไฟล์:
      301.2 KB
      เปิดดู:
      21
  17. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 16
    =========================================
    ดับเบิ้ลคลิ๊กที่ปุ่ม กำหนดเลข Auto เพื่อเขียนโค้ด โดยเราไม่ต้องมานั่งนับว่าตอนนี้รันถึงตัวเลขไหนแล้วง่ายดีครับ
    =========================================
    OleDbConnection^ oleDbConnection;
    OleDbCommand ^ oleDbCommand;

    strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\dbPhone.mdb";//Data Source=..\\dbPhone.mdb";
    oleDbConnection = gcnew OleDbConnection(strConnection);
    oleDbConnection->Open();
    oleDbCommand = gcnew OleDbCommand("SELECT Count(CodePK)+1 FROM tblPhone", oleDbConnection);
    Object ^MaxID = oleDbCommand->ExecuteScalar();
    txtCodePK->Text = MaxID->ToString();//ค่าสูงสุด
    // txtCodeID->Text = MaxID->ToString()->PadLeft(7, '0'); // กำหนดเลข เช่น 0000001,0000002,0000003....
     

    ไฟล์ที่แนบมา:

    • pic16.jpg
      pic16.jpg
      ขนาดไฟล์:
      313.4 KB
      เปิดดู:
      18
  18. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 17
    ==========================================
    กด F5 รันดูว่าตรงไหม
     

    ไฟล์ที่แนบมา:

    • pic17.jpg
      pic17.jpg
      ขนาดไฟล์:
      282.3 KB
      เปิดดู:
      16
  19. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 18
    เพิ่ม LoadData() เพื่อทำการโหลดข้อมูลมาแสดงใน listView1
    กำหนดภายใต้ #pragma endregion
    //=================Load Data===========================
    private:
    void LoadData(){
    OleDbConnection^ oleDbConnection;
    OleDbCommand ^ oleDbCommand;
    OleDbDataReader^ oleDbDataReader;

    try{
    String^ strQuery = "SELECT CodePK , FirstName, LastName, PhoneNumber FROM tblPhone ";

    // OLE DB:
    oleDbConnection = gcnew OleDbConnection(strConnection);
    oleDbConnection->Open();
    oleDbCommand = gcnew OleDbCommand(strQuery, oleDbConnection);
    oleDbDataReader = oleDbCommand->ExecuteReader();

    while(oleDbDataReader->Read()){
    ListViewItem^ item = gcnew ListViewItem(oleDbDataReader["CodePK"]->ToString());
    item->SubItems->Add(oleDbDataReader["FirstName"]->ToString());
    item->SubItems->Add(oleDbDataReader["LastName"]->ToString());
    item->SubItems->Add(oleDbDataReader["PhoneNumber"]->ToString());
    listView1->Items->Add(item);
    }
    //===========lblCount==Use ExecuteScalar==================================
    oleDbCommand = gcnew OleDbCommand("SELECT Count(CodePK) FROM tblPhone", oleDbConnection);
    Object ^lblC = oleDbCommand->ExecuteScalar();
    lblCount->Text = "[ จำนวน : " + lblC->ToString() + " คน ]";//นับจำนวน lblCount ว่ามีกี่ (คน)
    //=========================================================================
    oleDbDataReader->Close();
    }
    catch(Exception^ e){
    MessageBox::Show(e->Message, "Error", MessageBoxButtons::OK, MessageBoxIcon::Error);
    return;
    }
    finally{
    oleDbConnection->Close();
    if(oleDbDataReader != nullptr){
    oleDbDataReader->Close();
    oleDbDataReader = nullptr;
    }
    if(oleDbCommand != nullptr){
    oleDbCommand = nullptr;
    }
    }
    }
    //========================จบ Load Data========================
     

    ไฟล์ที่แนบมา:

    • pic18.jpg
      pic18.jpg
      ขนาดไฟล์:
      319.9 KB
      เปิดดู:
      22
    แก้ไขครั้งล่าสุดโดยผู้ดูแล: 21 สิงหาคม 2014
  20. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Step 19
    เพิ่ม ClearAll() เพื่อทำการ Clear ค่าต่าง ๆ ใน TextBox ให้ว่าง
    กำหนดภายใต้ #pragma endregion
    ========================================
    //=======================ClearAll=====================================
    private:
    void ClearAll(){
    txtCodePK->Text = "";
    txtFirstName->Text = "";
    txtLastName->Text = "";
    txtPhoneNumber->Text = "";
    }
    //=============จบ ClearAll====================
     

    ไฟล์ที่แนบมา:

    • pic19.jpg
      pic19.jpg
      ขนาดไฟล์:
      268.3 KB
      เปิดดู:
      28

แชร์หน้านี้

Loading...