Xem mẫu

  1. BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ GIÁO TRÌNH Môn học: LẬP TRÌNH NÂNG CAO Mã số: ITPRRG03 NGHỀ: LẬP TRÌNH MÁY TÍNH Trình độ Cao đẳng nghề NĂM 2012
  2. Tuyên bố bản quyền : Tài liệu này thuộc loại sách giáo trình Cho nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo . Mọi mục đích khác có ý đồ lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm. Tổng Cục Dạy nghề sẽ làm mọi cách để bảo vệ bản quyền của mình. Tổng Cục Dạy Nghề cám ơn và hoan nghênh các thông tin giúp cho việc tu sửa và hoàn thiện tốt hơn tàI liệu này. Địa chỉ liên hệ: Dự án giáo dục kỹ thuật và nghề nghiệp Tiểu Ban Phát triển Chương trình Học liệu ……………………………………………… ................................................................
  3. LỜI TỰA Để đáp ứng nhu cầu học tập của người học, chúng tôi đã tiến hành biên soạn giáo trình Lập trình nâng cao để làm tài liệu tham thảo cho người học và người nghiên cứu. Cuốn sách này được biên soạn dựa trên các tài liệu tiếng Anh của C++ Builder, đặc biệt là dựa trên tài liệu User Guide của Borland. Đồng thời lồng ghép những kinh nghiệm giảng dạy các môn lập trình của chúng tôi. Tài liệu này được biên soạn theo đề cương chi tiết môn học Lập trình nâng cao của Tổng cục dạy nghề với mã ITPRG03. Mục tiêu của nó nhằm giúp các bạn sinh viên chuyên ngành có một tài liệu cô đọng dùng làm tài liệu học tập, nhưng chúng tôi cũng không loại trừ toàn bộ các đối tượng khác tham khảo. Chúng tôi hi vọng người đọc sẽ tìm thấy được những kiến thức bổ ích trong tài liệu này. Mặc dù đã rất cố gắng nhiều trong quá trình biên soạn giáo trình nhưng chắc chắn giáo trình sẽ còn nhiều thiếu sót và hạn chế. Rất mong nhận được sự đóng góp ý kiến quý báu của của những người đọc và người học để giáo trình ngày một hoàn thiện hơn.
  4. MỤC LỤC ĐỀ MỤC TRANG BÀI 1 C++ BUILDER VÀ CÁC ƯU THẾ SO VỚI C++........................................................9 1.1 Lịch sử phát triển C++ Builder.......................................................................................9 1.2 Các tính năng tiên tiến.................................................................................................11 1.3 Ưu thế của C++ Builder so với Visual C++..................................................................12 BÀI 2 GIỚI THIỆU VỀ C++ BUILDER..............................................................................13 2.1 Giới thiệu C++ Builder.................................................................................................13 2.2 Môi trường phát triển tích hợp IDE và các công cụ đặc trưng.....................................18 2.3 Xây dựng chương trình Text Editor.............................................................................28 2.4. Thực hành.................................................................................................................. 37 BÀI 3 TỔNG QUAN VỀ VCL.............................................................................................38 3.1 Giới thiệu VCL............................................................................................................. 38 3.2 Mô hình phân cấp VCL................................................................................................39 3.3 Các thuộc tính, biến cố chung với TControl.................................................................40 3.4 Các thuộc tính, biến cố chung với TWinControl...........................................................44 3.5 Các đối tượng, thành phần chuẩn của VCL.................................................................47 3.6 Thực hành................................................................................................................... 80 BÀI 4 PHÁT TRIỂN GIAO DIỆN NGƯỜI DÙNG ỨNG DỤNG..........................................82 4.1 Tổng quan về phát triển giao diện người dùng............................................................82 4.2 Tạo và quản lý các form..............................................................................................84 4.3. Làm việc với thành phần.............................................................................................89 4.4 Xử lý đầu vào từ chuột................................................................................................89 4.5 Làm việc với bàn phím.................................................................................................92 4.6 Tạo và quản lý các menu.............................................................................................96 4.7 Các đối tượng hành động..........................................................................................102 4.8 Thực hành................................................................................................................. 103 BÀI 5 LÀM VIỆC VỚI CÁC ĐIỀU KHIỂN........................................................................104 5.1 Thực hiện các hành động kéo và thả.........................................................................104 5.2 Thực hiện các hành động rê và kết dính....................................................................116 5.3 Làm việc với văn bản trong các điều khiển................................................................117 5.4 Thêm đồ hoạ vào điều khiển......................................................................................119 5.5 Thực hành................................................................................................................. 121 BÀI 6 TƯƠNG TÁC GIỮA NGƯỜI DÙNG VỚI ỨNG DỤNG.........................................122
  5. 6.1 Sử dụng các hộp thoại...............................................................................................122 6.2 Hộp thoại Windows dùng chung................................................................................133 6.3 Tạo và quản lý các hộp thoại.....................................................................................134 6.4. Sử dụng đa biểu mẫu...............................................................................................143 6.5 Thực hành................................................................................................................. 160 BÀI 7 ĐỒ HOẠ VÀ MULTIMEDIA...................................................................................160 7.1 Tổng quan về lập trình đồ hoạ...................................................................................160 7.2 Các thành phần đồ hoạ VCL......................................................................................160 7.3 Sử dụng các thuộc tính và các phương thức của đối tượng Canvas........................161 7.4. Tạo và quản lý các bức vẽ........................................................................................164 7.5 Lập trình multimedia..................................................................................................196 7.6 Thực hành................................................................................................................. 216 BÀI 8 LIÊN KẾT CƠ SỞ DỮ LIỆU.................................................................................217 8.1 Các kỹ thuật truy cập dữ liệu trong C++ Builder........................................................218 8.2 Các thành phần truy cập cơ sở dữ liệu của C++ Builder...........................................218 8.3. Các điều khiển nhận biết dữ liệu của C++ Builder....................................................223 8.4 Các thành phần cơ sở dữ liệu cơ bản.......................................................................224 8.5. Xây dựng chương trình Marine................................................................................226 8.6 Thực hành................................................................................................................. 227 BÀI 9 XÂY DỰNG VÀ TRIỄN KHAI CÁC ỨNG DỤNG 260 9.1 Các kỹ thuật gỡ rối trong C++ Builder........................................................................261 9.2 Sử dụng tài nguyên Windows để xây dựng trợ giúp trực tuyến.................................261 9.3 Sử dụng chương trình InstallShield Express.............................................................263 9.4 Thực hành................................................................................................................. 264 BÀI 10 MỘT SỐ TÍNH NĂNG ĐẶC BIỆT KHÁC.............................................................266 10.1 Các tính năng đặc biệt khác trong C++ Builder........................................................266 10.2 Lập trình mạng với Socket.......................................................................................266 10.3 Thực hành............................................................................................................... 268 THUẬT NGỮ CHUYÊN MÔN..........................................................................................271 TÀI LIỆU THAM KHẢO....................................................................................................272
  6. GIỚI THIỆU VỀ MÔ ĐUN/MÔN HỌC Vị trí, ý nghĩa, vai trò môn học : Khi học lập trình căn bản, chúng ta đã lập trình và làm việc với ngôn ngữ C++ bằng công cụ Turbo C++. Trong môn học này, chúng ta sẽ phát triển ứng dụng cao cấp dành cho Windows bằng ngôn ngữ C++ với công cụ Borland C++ Builder. Do đó, để nghiên cứu tốt môn học này, chúng ta cần phải nắm vững ngôn ngữ lập trình C++ và một số khái niệm của Windows như ListBox, Button, Multimedia, … Mục tiêu của môn học: Sau khi học xong môn học này học viên có khả năng: Nêu được tính năng tiên tiến và các ưu thế của các môi trường lập trình mới. Biết sử dụng các đối tượng thành phần và điều khiển trong các thư viện lập trình thông dụng. Biết thiết kế các giao diện người dùng ứng dụng,sử dụng các thao tác trên các điều khiển. Biết tạo các tương tác giữa người dùng với ứng dụng. Biết tạo và xử lý các đối tượng đồ hoạ, đưa âm thanh hay các video clip vào ứng dụng. Biết xây dựng các ứng dụng cơ sở dữ liệu đơn giản, biết tạo các chương trình ứng dụng đơn giản. Mục tiêu thực hiện của môn học: Học xong môn học này học viên có khả năng: Khái quát được quá trình phát triển phần mềm trên công cụ C++ Builder. Nêu các tính năng tiên tiến của C++ Builder. Nhận biết các ưu thế của C++ Builder so với Visual C++. Hiểu biết về môi trường lập trình Borland C++ Builder. Sử dụng IDE của C++ Builder để soạn thảo chương trình nguồn, biên dịch, liên kết và chạy kiểm tra các chương trình. Mô tả một số công cụ đặc trưng của C++ Builder. Hiểu cách xây dựng một ứng dụng Windows với C++ Builder. Hiểu biết về thư viện nền Visual Component library (VCL). Mô tả vắn tắt về mô hình phân cấp của thư viện VCL. Liệt kê các đối tượng, thành phần và điều khiển trong thư viện VCL. Sử dụng một số thành phần chuẩn của thư viện VCL. Tạo và quản lý các Form. Làm việc với các thành phần trên Form. Xử lý thông tin đầu vào từ chuột và bàn phím. Tạo và quản lý các menu, sử dụng menu designer. Sử dụng các hành động, tạo, đăng ký, viết các bộ soạn thảo danh sách hành động. Xử lý các hành động rê và thả, rê và liên kết với các đối tượng trên form. Sử dụng các văn bản trong điều khiển, sử dụng đối tượng clipboard. Thêm các đối tượng đồ hoạ vào các điều khiển. Sử dụng các hộp thoại. Phân biệt các hộp thoại modal và modeless. Sử dụng các thành phần hộp thoại Windows dùng chung. Tạo và quản lý các hộp thoại. Sử dụng đa biểu mẫu. Hiểu biết về các thành phần đồ hoạ thuộc thư viện VCL. Sử dụng các thuộc tính của đối tượng Canvas. Sử dụng các phương thức của Canvas để vẽ các đối tượng đồ hoạ. Tạo và quản lý các bức vẽ. Thêm âm thanh hay các video clip vào ứng dụng. Sử dụng các thành phần nhận biết dữ liệu, các thành phần truy cập dữ liệu và một số thành phần khác. Hiểu biết cách xây dựng một ứng dụng cơ sở dữ liệu. Cơ bản về tổ chức, quản lý và khai thác các cơ sở dữ liệu.
  7. Sử dụng một số kỹ thuật gỡ lỗi trong bộ công cụ C++ Builder. Sử dụng và khai thác các tài nguyên Windows. Hiểu biết cách xây dựng các trợ giúp trực tuyến. Sử dụng chương trình cài đặt InstallShield. Xây dựng một ứng dụng Windows đơn giản và hoàn chỉnh. Nắm bắt các tính năng đặc biệt của bộ công cụ C++ Builder. Áp dụng vào việc lập trình Client/Server, lập trình Internet, lập trình với Socket ở mức độ đơn giản.
  8. Sơ đồ quan hệ theo trình tự học nghề Hệ thống Giao diện Lập trình Lập trình máy tính người máy nâng cao Web Lập trình Phân tích thiết Lập trình hướng kế hệ thống căn bản đối tượng Mạng căn bản Thiết kế hướng đối Kỹ năng tin học Cấu trúc dữ liệu tượng và thuật giải văn phòng Kỹ năng Ứng dụng CNTT trong Giao tiếp doanh nghiệp Cơ sở dữ liệu Kỹ năng Công nghệ Internet & WWW phần mềm Cơ sở toán học Thiết kế Web Công nghệ Đa Quản lý dự án phần mềm phương tiện Hệ cơ sở dữ Lập trình Hướng dẫn đồ liệu án tốt nghiệp Visual Basic Anh văn Phần cứng An toàn Thi cho tin học máy tính lao động tốt nghiệp
  9. CÁC HÌNH THỨC HỌC TẬP TRONG MÔ ĐUN 1. Học tại phòng lý thuyết - Trình bày đầy đủ các đối tượng và phương pháp triển khai các bài tập của từng bài học. - Phân tích và thiết kế các phép toán hợp lý bằng mô hình. - Học sinh phải tập trung hết sức và phải tận dụng thời gian giải lao để giải lao thật tốt. - Học sinh luôn rèn luyện khả năng tư duy logic để phân tích, tổng hợp các vấn đề cần giải quyết. Không ngừng học hỏi các kiến thức về ngôn ngữ lập trình. Luôn chú ý rèn luyện các thao tác chính xác, cẩn thận khi lập trình. 2. Học tại phòng thực hành - Cài đặt các bài tập. - Phân tích các bài toán thật kỹ lưỡng và cài đặt nhiều lần các bài tập. - Học viên phải tập trung hết sức và phải tận dụng thời gian giải lao để giải lao thật tốt. YÊU CẦU VỀ ĐÁNH GIÁ HOÀN THÀNH MÔ ĐUN/MÔN HỌC Đánh giá thông qua kiểm tra trắc nghiệm: Kiểm tra trắc nghiệm được thực hiện trên máy tính và chấm cho kết quả ngay Xây dựng ngân hàng các câu hỏi. Học viên sẽ nhận được ngẫu nhiên các câu hỏi trắc nghiệm 100 câu (mỗi chức năng 20 câu), Thời gian kiểm tra hạn chế trong 60 phút. Thang điểm: 0-49 : Không đạt 50-69 : Đạt trung bình 70-85 : Đạt khá 86-100 : Đạt Giỏi Đánh giá thông qua các tiểu đề tài : Các tiểu đề tài được các nhóm học viên chuẩn bị và thực hiện trên máy tính có thể chấm và cho kết quả ngay. Xây dựng một bộ các tiểu đề tài. Học viên sẽ được nhận ngẫu nhiên các tiểu đề tài theo nhóm. Có thời gian chuẩn bị trước. Nội dung chính của môn học : 9
  10. BÀI 1 C++ BUILDER VÀ CÁC ƯU THẾ SO VỚI C++ Mã bài : ITPRG03.1 Giới thiệu : Trong nội dung môn học này, chúng ta sẽ quan sát sơ lược về lịch sử phát triển của C++ Builder, các tính năng tiên tiến của C++ Builder, so sánh giữa C++ Builder với Visual C++. Bài học này mang lại một tầm nhìn tổng quan về ưu thế của C++ Builder cho chúng ta. Mục tiêu thực hiện: Học xong bài này học viên sẽ có khả năng: Khái quát lịch sử phát triển C++ Builder Liệt kê một số tính năng tiên tiến của C++ Builder. Liệt kê các ưu thế của C++ Builder so với Visual C++. Nội dung chính: 1.1 Lịch sử phát triển C++ Builder C++ Builder originally targeted only the Microsoft Windows platform. Later versions incorporated Borland CLX, a cross-platform development visual component library based on Qt, that supports Windows and Linux. Sau một số năm, Borland ấn bản phiên bản Borland C++ Builder 2006, cung cấp chức năng quản lý mạnh và sửa các lỗi. C++ Builder 2006 là một phần của Borland Developer Studio, một gói chứa Delphi, C++ Builder và C# Builder. Borland cũng làm sống lại nhánh “Turbo” và ấn bản hai phiên bản “Turbo” của C++ Builder: Turbo C++ Professional và Turbo C++ Explorer (miễn phí): Tên sản phẩm Mã Ngày ấn bản ?Delphi 2008? - ?CF? Highlander ? Delphi for PHP - PHP a-la Delphi Astro 2007, Mar 27 Delphi 2007 for Windows Vista and Spacely 2007, Mar 19 AJAX Chrome 1.5.5 by RemObjects (VS 2006, Oct 27 2005, .Net 2.0) Free Pascal 2.0.4 2006, Aug 28 Borland Developer Studio 2006 - Delphi (W32 and .Net), C++ and C# DeXter 2005, Oct 10 under one IDE 10
  11. Chrome - Object Pascal in VS by 2005, May 1 RemObjects Free Pascal 2.0 2005, May Borland Delphi 2005 - C# and Delphi Diamondba 2004, Oct 12 under one IDE ck Borland Delphi 8 for .Net Octane 2003, Dec 22 Borland C++BuilderX Tomahawk 2003, Aug 28 Sidewinder Borland C#Builder 1.0 (Galileo IDE 2003, Jun 16 1.0) Borland Delphi.NET compiler Morpheus Borland Delphi 7 Aurora 2002, Aug 9 Borland C++ Builder 6.0 Riptide 2002, Feb 1 Borland Delphi 6 Illiad 2001, May 21 Free Pascal 1.0 2000, Jul Borland C++ Builder 5.0 Rampage 2000, Jan 30 Borland Delphi 5 Argus 1999, Aug 10 Borland C++ Builder 4.0 1999, Jan 26 Borland Delphi 4 Allegro 1998, Jun 17 Borland C++ Builder 3.0 1998, Feb 8 Borland Delphi 3 Ivory 1997, Aug 5 Borland C++ 5.0 1997, Mar 25 Borland C++ Builder 1.0 1997, Feb 4 Borland Delphi 2 Polaris 1996, Feb 10 Borland C++ 4.5 1995, Aug 29 Turbo C++ for Windows 4.5 1995, Apr 28 Delphi95, Wasabi, Borland Delphi 1 1995, Feb 14 Mango, AppBuilder 11
  12. Borland C++ 4.0 1993, Dec 15 Delphi project hatched mid 1993 Free Pascal (project born) 1993, Jun Borland Pascal 7 1992, Oct 27 Borland C++ 3.1 1992, Jun 10 Turbo Pascal for Windows 1.5 1992, Jun 8 Turbo C++ for DOS 3.0 1992, Feb 18 Borland C++ 3.0 1991, Nov 11 Turbo C++ for Windows 3.0 1991, Nov 11 Turbo Pascal for Windows 1.0 1991, Feb 13 Borland C++ 2.0 1991, Feb 13 Turbo Pascal 6.0 1990, Oct 23 Turbo C++ for DOS 1.0 1990, May 4 Turbo C for DOS 2.0 1989, May 11 Turbo Pascal 5.5 1989, May 2 Turbo C for DOS 1.5 1988, Dec 10 Turbo Pascal 5 1988, Aug 24 Turbo C for DOS 1.0 1987, May 13 Turbo Pascal 4 1987, Nov 20 Turbo Pascal 3 1986, Sept 17 Turbo Pascal 2 1984, Apr 17 Turbo Pascal 1 (Compass Pascal 3.0) 1983, Nov 20 Pascal as Modula 1977 Pascal - first book by Wirth and Jensen 1975 Pascal implemented 1973 Pascal defined by Prof. Niklaus Wirth 1971 1.2 Các tính năng tiên tiến 12
  13. Tính năng tiên tiến nhất của C++ Builder là hỗ trợ kiểu dữ liệu AnsiString thay thế cho kiểu dữ liệu chuỗi char truyền thống. Nói tạm biệt với char* cho công việc điều tác chuỗi. Chúng ta chuyển sang sử dụng lớp AnsiString để điều tác chuỗi. Một sự minh họa cho sự chuyển đổi sử dụng cho chuỗi ở dưới đây: int __cdecl printf(const char* format, ...); int __cdecl cat_printf(const char* format, ...); AnsiString& __cdecl sprintf(const char* format, ...); AnsiString& __cdecl cat_sprintf(const char* format, ...); Phiên bản này còn cung cấp một loạt các phương thức để làm việc chuỗi một cách linh hoạt mang lại phong cách lập trình mới đối với chuỗi. C++ Builder cung cấp thêm kiểu dữ liệu tập hợp, đây là một kiểu dữ liệu mới tương thích với kiểu dữ liệu tập hợp của Pascal. Các giá trị được thêm vào kiểu tập hợp qua phép toán >. Ví dụ, để thêm hai phần tử có giá trị bằng mbNoToAll và mbNo vào kiểu tập hợp TMsgDlgButtons(), chúng ta sử dụng lệnh TMsgDlgButtons()
  14. - C++ Builder cho phép chúng ta lập trình trên nền tảng chéo trong khi Visual C++ chỉ lập trình trên Windows. - C++ Builder sử dụng các thành phần VCL trong khi visual C++ sử dụng MFC. Thành phần VCL được bao gồm vào bộ cài đặt C++ Builder giúp người lập trình có thể tùy biến theo ý mình thích. - C++ Builder cho phép phát triển các phần mềm trên nền tảng chéo (Linux và Windows) trong khi Visual C++ chỉ cho phép phát triển trên nền Windows. - Visual C++ kết nối với cơ sở dữ liệu chỉ sử dụng công nghệ dựa trên nền tảng ADO trong khi C++ Builder còn có thể kết nối cơ sở dữ liệu có thể sử dụng BDE và SQL Links. BÀI 2 GIỚI THIỆU VỀ C++ BUILDER Mã bài : ITPRG03.2 Giới thiệu : Trong bài học này học viên sẽ làm quen với các khái niệm mà C++ Builder đưa ra, các công cụ của C++ Builder cũng như có thể hiểu được môi trường làm việc của Borland C++ Builder 6.0. Bài học này càng cung cấp cho chúng ta các thuật ngữ mới, các phương pháp làm việc cũng như quy tắc lưu trữ của C++ Builder. Để nghiên cứu thành công nội dung bài học, chúng ta phải cố gắng quan sát và ghi chép những điều cần thiết của các công cụ trong môi trường cũng như những thuật ngữ mới. Mục tiêu thực hiện: Học xong bài này học viên sẽ có khả năng: Mô tả các thành phần chính của C++ Builder Mô tả một số công cụ đặc trưng của C++ Builder. Mô tả các bước để xây dựng một chương trình Windows với C++ Builder. Nội dung chính: 2.1 Giới thiệu C++ Builder. Borland C++ Builderlà một trong những bộ biên dịch đầu tiên cho phép bạn sử dụng các đối tượng được gọi là những thành phần bằng cách sử dụng chuột và di chuyển xung quanh để thay đổi thiết kế trực quan của chương trình hơn là sử dụng các đoạn mã lệnh để thực hiện điều này. Cốt lõi của kỹ thuật này là lập trình thành phần, các thành phần có thể chạy với một tốc độ rất nhanh, thậm chí một đối tượng có thể hiện ra và ẩn đi mà mắt chúng ta chưa kịp nhìn thấy và nhấn chuột lên nó. Lập trình với Borland C++ Builder dễ đến mức bất ngờ. C++ Builder tạo thêm sự sôi nổi cho ngôn ngữ lập trình C++. Đây là một công cụ tốt để chúng ta phát triển nhanh các chương trình một cách dễ dàng và tạo được các chương trình mạnh. C++ Builder cho phép sử dụng đầy đủ các thành phần cao cấp của C++, bao gồm mẫu (templates), không gian tên (name spaces), phép toán nạp chồng và toàn bộ hàm Windows API, kể cả các hàm dùng cho DirectX, OLE và ActiveX. Ngôn ngữ C++ vẫn là cốt lõi của C++ Builder. C++ Builder đưa ra một cấp độ cao hơn để hỗ trợ ngôn ngữ C++. Borland C++ Builder tích hợp thư viện các thành 14
  15. phần trực quan (Visual Component Library) vào để dùng cho ngôn ngữ C++. Vấn đề nằm ở chỗ C++ Builder sử dụng ngôn ngữ Pascal, trong khi đó C++ Builder lại sử dụng ngôn ngữ C++. Tuy nhiên, dựa trên sự phê chuẩn của ANSI, Borland đã thêm các thành phần để hỗ trợ cho C++. Trong ngôn ngữ lập trình hướng đối tượng, các biến thành viên dùng để lưu trữ các giá trị hoặc trạng thái của đối tượng trong suốt thời gian sống của nó. Tuy nhiên, những biến lại được truy cập trực tiếp, do đó, có thể một phần nào đó của chương trình sẽ làm gãy chương trình vì đã đưa vào các giá trị không phù hợp. Để giải quyết vấn đề trên, rất nhiều nhà phát triển ứng dụng hướng đối tượng tạo ra các hàm thành viên gọi là hàm lấy giá trị và cài đặt giá trị nhằm mục đích không cho phép truy cập trực tiếp các biến thành viên đồng thời cũng tạo ra các truy bắt ngoại lệ nhằm áp đặt giá trị luôn luôn phù hợp với biến lưu trữ. Phương pháp này còn cho phép lập trình viên có thể ẩn được các dạng biến dùng để lưu trữ dữ liệu chẳng hạn như tập tin, cơ sở dữ liệu, hoặc một kiểu dữ liệu phức hợp. Borland tạo ra ngôn ngữ C++ Builder đã cung cấp thuộc tính nhằm thống nhất hai hàm thành viên lấy giá trị và cài đặt giá trị thành một thành viên trong lớp. Trong lớp của C++ Buider, một thuộc tính thường gồm một biến khai báo với bổ từ private và một hàm dùng để lấy giá trị và cài đặt giá trị được khai báo với bổ từ protected, một khai báo thuộc tính với bổ từ public. Sau đây là một minh họa: class aClassWithAProperty //khai báo lớp aClassWithAProperty { private: int myMemberVariable; //biến thành viên protected: int __fastcall GetMemberVariable(void) //hàm lấy giá trị { return myMemberVariable; }; void __fastcall SetMemberVariable(int theMemberVariable) //hàm cài đặt giá trị { myMemberVariable = theMemberVariable; }; public: __property int MemberVariable = //thuộc tính { read=GetMemberVariable, write=SetMemberVariable }; Khi đó, chúng ta có thể sử dụng cài đặt của lớp để truy cập thuộc tính MemberVariable như sau: 15
  16. AClassWithAProperty ClassWithAProperty; ClassWithAProperty.MemberVariable = 2; int Something = ClassWithAProperty.MemberVariable; Các thuộc tính được sử dụng rất nhiều trong các thành phần C++ Builder. Để trợ giúp cho môi trường trực quan được cung cấp bởi C++ Buidler, Borland đã tạo ra một phần đặc biệt cho lớp, được định nghĩa bởi __published tương tự như hai phần public và private ở ví dụ trên. Nếu một thuộc tính được đặt trong phần __published, nó sẽ được nhìn thấy trong cửa sổ điều chỉnh thuộc tính trong quá trình thiết kế. Sau đây là minh họa về thuộc tính được đặt trong phần published: class aClassWithAProperty: public TComponent { private: int myMemberVariable; protected: int __fastcall GetMemberVariable(void) { return myMemberVariable; }; void __fastcall SetMemberVariable(int theMemberVariable) { myMemberVariable = theMemberVariable; }; __published: __property int MemberVariable = { read=GetMemberVariable, write=SetMemberVariable }; }; Khi đó thuộc tính MemberVariable có thể được điều chỉnh trực tiếp trong cửa sổ điều chỉnh thuộc tính của Borland C++ Builder (Object inspector). Như đã nói ở trên, C++ Builder thưa hưởng rất nhiều đặc tính của C++ Builder. C++ Builder cung cấp một thuộc tính mặc định. Với thuộc tính này, chúng ta có thể truy cập bằng cách dùng phép toán chỉ số. Chúng ta có thể truy cập thuộc tính mặc định này như sau: (*StringListVariable)[Index] hoàn toàn tương thích với cách truy cập sau vì Strings là thuộc tính mặc định: StringListVariable->Strings[Index] 16
  17. Ngôn ngữ C++ Builder giới thiệu một thành phần cho phép truy bắt ngoại lệ được chấp nhận bởi Java. Trong C++ Builder, chúng ta dùng __finally và try để truy bắt các ngoại lệ. Ví dụ: TStringList *List = new TStringList; try { // thực hiện các câu lệnh } __finally { delete List; Đoạn lệnh đặt trong __finally sẽ thực hiện khi các câu lệnh trong try đã được thực hiện xong hay có một ngoại lệ xảy ra. Khi viết chương trình bằng Borland C++ Builder, chúng ta dùng thư viện thành phần trực quan (VCL – Visual Component Library). VCL là nguồn gốc cho các thành phần được sử dụng để tạo các ứng dụng C++ Builder (các thành phần tương tự VCL dùng đê phát triển đa nền tảng gọi là CLX). Một thành phần là một đối tượng, thường trực quan, chẳng hạn một hộp đánh dấu (checkbox), một danh sách chọn ổ đĩa, hoặc một hình ảnh. Các thành phần cũng có thể không trực quan, chẳng hạn như các kết nối cơ sở dữ liệu hoặc các kết nối mạng. Các thành phần có thể được chọn từ bảng thành phần (component palette) của IDE bằng dùng chuột trái để chọn và đặt chúng lên vùng làm việc. Hình 1 – IDE của Borland C++ Builder Chúng ta cũng có thể thêm hoặc viết thêm cái thành phần của chúng ta, VCL thực sự đã giảm bớt mức độ khó cho quá trình làm việc của chúng ta. Tất cả các thành phần đều có các thuộc tính, chúng ta có thể điều chỉnh bằng cửa sổ object inspector (xem hình 1) 17
  18. Khi chúng ta tạo một ứng dụng mới trong C++ Builder, một biểu mẫu (form) trống sẽ được tạo một cách tự động. Để xây dựng giao diện ứng dụng của chúng ta, một cách đơn giản là thêm các đối tượng trực quan vào biểu mẫu, sau đó điều chỉnh vị trí và kích thước cho phù hợp. Chúng ta cũng có thể thêm các thành phần không trực quan vào một biểu mẫu, chẳng hạn như các timer; những thành phần này sẽ hiển thị một biểu tượng trong quá trình thiết kế nhưng sẽ không nhìn thấy khi chương trình được thực thi. Chúng ta cũng có thể tạo các biểu mẫu đặc biệt như tool window hoặc dialog. Một chương trình có thể có nhiều biểu mẫu nhưng chỉ có một biểu mẫu làm biểu mẫu chính (main form). Mặc định, khi người sử dụng chạy chương trình của chúng ta, biểu mẫu chính sẽ hiển thị lên màn hình, các biểu mẫu sẽ hiển thị đúng vị trí mà chúng ta đã thiết kế trên màn hình IDE, vị trí này có thể được điều chỉnh lại bởi Object Inspector. Để đưa các thành phần vào biểu mẫu, chúng ta phải sử dụng các thành phần trong bảng thành phần. Bảng thành phần (Component Palette) nằm ở dưới menu chính, chứa tất cả các thành phần trong VCL. Các thành phần này được nhóm thành từng nhóm theo tên chủ đề trên các ngăn (tab) trên các thành phần. Để lựa chọn một thành phần, nhấn chuột trái lên nó, sau đó nhấn lại một lần nữa lên biểu mẫu để đặt đối tượng vào vị trí mà chúng ta muốn. Như đã đề cập ở trên, chúng ta có thể điều chỉnh các thuộc tính của thành phần bằng Object Inspector. Chúng ta cũng có thể điều chỉnh lại các thành phần trực quan bằng cách rê cạnh biên để điều chỉnh kích thước của nó, hoặc có thể rê nó đến vị trí mới. Để đối tượng có thể tương tác được với người sử dụng, chúng ta phải viết mã lệnh để thực thi nhằm đáp ứng các sự kiện (events) do người dùng phát sinh hay do hệ điều hành phát sinh. Các mã lệnh để đáp ứng một sự kiện nào đó gọi là giải quyết sự kiện. Một ví dụ đầu tiên về việc sử dụng sự kiện trong C++ Builder, chúng ta hãy đưa một nút nhấn (Button) đơn giản vào giữa màn hình như sau: Hình 2-Nút nhấn Button1 nằm giữa biểu mẫu C++ Builder đã tạo một nút nhấn như một phần của chương trình. Tại thời điểm này, nút nhấn này vẫn chưa thể thực hiện được gì, nghĩa là nếu chương trình được biên dịch và thực thi thì sẽ không có kết quả gì khi chúng ta nhấn chuột vào nút trên. Chúng ta có thể dùng các đoạn mã lệnh để đáp ứng sự kiện nhằm thực hiện một vài hành động như: lưu thông tin người sử dụng nhập vào, hiển thị một hộp thoại thông báo, hoặc bất cứ việc gì có thể. 18
  19. Khi nút nhấn được nhấn chuột tại thời điểm thực thi, một sự kiện được phát sinh. Ứng dụng của chúng ta phải có đoạn mã lệnh để xử lý, đoạn mã lệnh này sẽ tự động thực hiện mỗi khi sự kiện tương ứng được phát sinh. Để giải quyết vấn đề này, C++ Builder đã tạo ra sự kiện OnClick để viết các mã lệnh nhằm thực thi khi sự kiện nhấn chuột được phát sinh. Để viết lệnh cho sự kiện này, trong cửa sổ Object Inspector, chúng ta chọn ngăn Events, chọn tên sự kiện OnClick, nhấn đôi chuột trái lên nó hoặc đơn giản hơn, chúng ta có thể nhấn đôi chuột lên đối tượng Button1 trên biểu mẫu. Khi đó, cửa sổ soạn thảo mã lệnh (Source code editor Window) sẽ xuất hiện với văn bản như sau: Cấu trúc của sự kiện OnClick như sau: void __fastcall TForm1::Button1Click(TObject *Sender) { } Nếu chúng ta nhấn chuột phải trong cửa sổ soạn thảo mã lệnh và chọn Open Source/Header File, chúng ta sẽ nhìn thấy được đoạn mã lệnh sau: //---------------------------------------------------------------------------- #ifndef Unit1 #define Unit1 //---------------------------------------------------------------------------- #include #include #include #include //---------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //---------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //---------------------------------------------------------------------------- #endif Đoạn mã lệnh trên được sinh ra một cách tự động bởi C++ Buider. Tôi đưa vào đây để chúng ta có thể nhìn thấy những gì mà C++ Builder có thể làm cho chúng ta một cách tự động. 19
  20. Bây giờ, chúng ta sẽ thêm một đoạn mã lệnh để hiển thị một hộp thoại thông báo khi người sử dụng nhấn chuột lên nút nhấn trên. Trong cửa sổ soạn thảo mã lệnh, chúng ta nhấn vào ngăn Unit1.cpp để chuyển về vị trí viết mã lệnh cho sự kiện của Button. Thêm đoạn mã lệnh vào để có được đoạn mã lệnh sau: void __fastcall TForm1::Button1Click(TObject *Sender) { ShowMessage("Hello world! This is a test application! Press OK"); Close(); } Khi chương trình thực thi, người sử dụng nhấn chuột vào nút nhấn và sự kiện được phát sinh, đoạn mã lệnh trên sẽ được thực thi và hiển thị lên màn hình một thông báo. Khi người sử dụng đóng thông báo này lại, chương trình sẽ được dừng bởi câu lệnh Close(). 2.2 Môi trường phát triển tích hợp IDE và các công cụ đặc trưng Khi chúng ta khởi động C++ Builder, chúng ta được đặt trong một môi trường phát triển tích hợp gọi là IDE (Integrated Development Environment). IDE cung cấp cho chúng ta tất cả các công cụ cần thiết để thiết kế, phát triển, kiểm tra, gỡ rối (debug) và triển khai các ứng dụng, cho phép phát triển các ứng dụng với thời gian phát triển nhanh hơn. IDE gồm các công cụ sau: * Cửa sổ chính và các công cụ Cửa sổ chính của IDE khít với phần trên của màn hình. Nó chứa các công cụ khác nhau, bao gồm hệ thống thực đơn (menu bar), tất cả chúng có thể được di chuyển. Chúng ta có thể thêm hoặc loại bỏ các nút nhấn bằng cách sử dụng chức năng Customize từ thực đơn đổ xuống (Popup menu) trên bất kỳ thanh công cụ nào. Chúng ta cũng có thể kéo và thả (drag and drop) bất kỳ lệnh nào được liệt kê trong hộp thoại ngăn Commands của hộp thoại Customize vào bất kỳ thanh công cụ nào. Chúng ta chỉ có thể sử dụng những công cụ đã có mà không được tạo ra bất kỳ công cụ nào cũng như xóa chúng đi. Sử dụng cách tương tự như trên để loại bỏ các nút nhấn bằng cách chọn chức năng customize và kéo nút nhấn ra khỏi thanh công cụ đang giữ nó. * Project Manager Project Manager không hiển thị một cách mặc định nhưng nó thường rất quan trọng. Để hiển thị cửa sổ này (dĩ nhiên trong trường hợp nó chưa hiển thị), chúng ta chọn nó từ thực đơn View. Project Manager cho phép chúng ta quản lý dự án (project) đang làm việc. 20
nguon tai.lieu . vn