1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Lập trình nâng cao (Nghề Lập trình máy tính): Phần 1 - Tổng cục dạy nghề

133 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Giáo trình Lập trình nâng cao (Nghề Lập trình máy tính): Phần 1 do Tổng cục dạy nghề biên soạn nhằm cung cấp cho bạn những kiến thức về C++ builder và các ưu thế so với C++; tổng quan về VCL, phát triển giao diện người dùng ứng dụng, làm việc với các điều khiển. Mời các bạn tham khảo!

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 Tuyên bố quyền : Tài liệu thuộc loại sách giáo trình Cho nên nguồn thơng tin phép dùng ngun trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác có ý đồ lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm Tổng Cục Dạy nghề làm cách để bảo vệ quyền Tổng Cục Dạy Nghề cám ơn hoan nghênh thông tin giúp cho việc tu sửa hoàn thiện tốt tàI liệu Địa liên hệ: Dự án giáo dục kỹ thuật nghề nghiệp Tiểu Ban Phát triển Chương trình Học liệu ……………………………………………… LỜI TỰA Để đáp ứng nhu cầu học tập 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 người nghiên cứu Cuốn sách biên soạn dựa tài liệu tiếng Anh C++ Builder, đặc biệt dựa tài liệu User Guide Borland Đồng thời lồng ghép kinh nghiệm giảng dạy mơn lập trình chúng tơi Tài liệu biên soạn theo đề cương chi tiết mơn học Lập trình nâng cao Tổng cục dạy nghề với mã ITPRG03 Mục tiêu nhằm giúp bạn sinh viên chuyên ngành có tài liệu cô đọng dùng làm tài liệu học tập, chúng tơi khơng loại trừ tồn đối tượng khác tham khảo Chúng hi vọng người đọc tìm thấy kiến thức bổ ích tài liệu Mặc dù cố gắng nhiều trình biên soạn giáo trình chắn giáo trình cịn nhiều thiếu sót hạn chế Rất mong nhận đóng góp ý kiến quý báu của người đọc người học để giáo trình ngày hồn thiện MỤC LỤC ĐỀ MỤC TRANG BÀI C++ BUILDER VÀ CÁC ƯU THẾ SO VỚI C++ 1.1 Lịch sử phát triển C++ Builder .9 1.2 Các tính tiên tiến .11 1.3 Ưu C++ Builder so với Visual C++ 12 BÀI 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 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 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 VCL .47 3.6 Thực hành 80 BÀI PHÁT TRIỂN GIAO DIỆN NGƯỜI DÙNG ỨNG DỤNG 82 4.1 Tổng quan phát triển giao diện người dùng 82 4.2 Tạo quản lý 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 quản lý menu 96 4.7 Các đối tượng hành động 102 4.8 Thực hành 103 BÀI LÀM VIỆC VỚI CÁC ĐIỀU KHIỂN 104 5.1 Thực hành động kéo thả .104 5.2 Thực hành động rê kết dính 116 5.3 Làm việc với văn đ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 TƯƠNG TÁC GIỮA NGƯỜI DÙNG VỚI ỨNG DỤNG .122 6.1 Sử dụng hộp thoại .122 6.2 Hộp thoại Windows dùng chung 133 6.3 Tạo quản lý 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 ĐỒ HOẠ VÀ MULTIMEDIA 160 7.1 Tổng quan lập trình đồ hoạ 160 7.2 Các thành phần đồ hoạ VCL 160 7.3 Sử dụng thuộc tính phương thức đối tượng Canvas 161 7.4 Tạo quản lý vẽ 164 7.5 Lập trình multimedia 196 7.6 Thực hành 216 BÀI LIÊN KẾT CƠ SỞ DỮ LIỆU .217 8.1 Các kỹ thuật truy cập liệu C++ Builder 218 8.2 Các thành phần truy cập sở liệu C++ Builder 218 8.3 Các điều khiển nhận biết liệu C++ Builder 223 8.4 Các thành phần sở liệu .224 8.5 Xây dựng chương trình Marine 226 8.6 Thực hành 227 BÀI XÂY DỰNG VÀ TRIỄN KHAI CÁC ỨNG DỤNG 260 9.1 Các kỹ thuật gỡ rối 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 đặc biệt khác 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 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 bản, lập trình làm việc với ngơn ngữ C++ cơng cụ Turbo C++ Trong môn học này, phát triển ứng dụng cao cấp dành cho Windows 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, cần phải nắm vững ngơn ngữ lập trình C++ số khái niệm Windows ListBox, Button, Multimedia, … Mục tiêu môn học: Sau học xong mơn học học viên có khả năng: Nêu tính tiên tiến ưu mơi trường lập trình Biết sử dụng đối tượng thành phần điều khiển thư viện lập trình thơng dụng Biết thiết kế giao diện người dùng ứng dụng,sử dụng thao tác điều khiển Biết tạo tương tác người dùng với ứng dụng Biết tạo xử lý đối tượng đồ hoạ, đưa âm hay video clip vào ứng dụng Biết xây dựng ứng dụng sở liệu đơn giản, biết tạo chương trình ứng dụng đơn giản Mục tiêu thực môn học: Học xong mơn học học viên có khả năng: Khái quát trình phát triển phần mềm cơng cụ C++ Builder Nêu tính tiên tiến C++ Builder Nhận biết ưu C++ Builder so với Visual C++ Hiểu biết môi trường lập trình Borland C++ Builder Sử dụng IDE C++ Builder để soạn thảo chương trình nguồn, biên dịch, liên kết chạy kiểm tra chương trình Mơ tả số công cụ đặc trưng C++ Builder Hiểu cách xây dựng ứng dụng Windows với C++ Builder Hiểu biết thư viện Visual Component library (VCL) Mơ tả vắn tắt mơ hình phân cấp thư viện VCL Liệt kê đối tượng, thành phần điều khiển thư viện VCL Sử dụng số thành phần chuẩn thư viện VCL Tạo quản lý Form Làm việc với thành phần Form Xử lý thông tin đầu vào từ chuột bàn phím Tạo quản lý menu, sử dụng menu designer Sử dụng hành động, tạo, đăng ký, viết soạn thảo danh sách hành động Xử lý hành động rê thả, rê liên kết với đối tượng form Sử dụng văn điều khiển, sử dụng đối tượng clipboard Thêm đối tượng đồ hoạ vào điều khiển Sử dụng hộp thoại Phân biệt hộp thoại modal modeless Sử dụng thành phần hộp thoại Windows dùng chung Tạo quản lý hộp thoại Sử dụng đa biểu mẫu Hiểu biết thành phần đồ hoạ thuộc thư viện VCL Sử dụng thuộc tính đối tượng Canvas Sử dụng phương thức Canvas để vẽ đối tượng đồ hoạ Tạo quản lý vẽ Thêm âm hay video clip vào ứng dụng Sử dụng thành phần nhận biết liệu, thành phần truy cập liệu số thành phần khác Hiểu biết cách xây dựng ứng dụng sở liệu Cơ tổ chức, quản lý khai thác sở liệu Sử dụng số kỹ thuật gỡ lỗi công cụ C++ Builder Sử dụng khai thác tài nguyên Windows Hiểu biết cách xây dựng trợ giúp trực tuyến Sử dụng chương trình cài đặt InstallShield Xây dựng ứng dụng Windows đơn giản hoàn chỉnh Nắm bắt tính đặc biệt 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 Sơ đồ quan hệ theo trình tự học nghề Hệ thống máy tính Giao diện người máy Lập trình Lập trình nâng cao Lập trình hướng đối tượng Mạng Cấu trúc liệu thuật giải Kỹ tin học văn phòng Kỹ Giao tiếp Cơ sở liệu Phân tích thiết kế hệ thống Thiết kế hướng đối tượng Ứng dụng CNTT doanh nghiệp Công nghệ phần mềm Kỹ Internet & WWW Thiết kế Web Cơ sở toán học Quản lý dự án phần mềm Công nghệ Đa phương tiện Lập trình Visual Basic Anh văn cho tin học Lập trình Web Phần cứng máy tính Hệ sở liệu Hướng dẫn đồ án tốt nghiệp An toàn lao động Thi tốt nghiệp CÁC HÌNH THỨC HỌC TẬP TRONG MƠ ĐUN Học phịng lý thuyết - Trình bày đầy đủ đối tượng phương pháp triển khai tập học - Phân tích thiết kế phép tốn hợp lý mơ hình - Học sinh phải tập trung phải tận dụng thời gian giải lao để giải lao thật tốt - Học sinh rèn luyện khả tư logic để phân tích, tổng hợp vấn đề cần giải Không ngừng học hỏi kiến thức ngơn ngữ lập trình Ln ý rèn luyện thao tác xác, cẩn thận lập trình Học phịng thực hành - Cài đặt tập - Phân tích toán thật kỹ lưỡng cài đặt nhiều lần tập - Học viên phải tập trung 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 thực máy tính chấm cho kết Xây dựng ngân hàng câu hỏi Học viên nhận ngẫu nhiên câu hỏi trắc nghiệm 100 câu (mỗi chức 20 câu), Thời gian kiểm tra hạn chế 60 phút Thang điểm: 0-49 : Không đạt 50-69 : Đạt trung bình 70-85 : Đạt 86-100 : Đạt Giỏi Đánh giá thông qua tiểu đề tài : Các tiểu đề tài nhóm học viên chuẩn bị thực máy tính chấm cho kết Xây dựng tiểu đề tài Học viên nhận ngẫu nhiên tiểu đề tài theo nhóm Có thời gian chuẩn bị trước Nội dung mơn học : BÀI 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, quan sát sơ lược lịch sử phát triển C++ Builder, tính tiên tiến C++ Builder, so sánh C++ Builder với Visual C++ Bài học mang lại tầm nhìn tổng quan ưu C++ Builder cho Mục tiêu thực hiện: Học xong học viên có khả năng: Khái quát lịch sử phát triển C++ Builder Liệt kê số tính tiên tiến C++ Builder Liệt kê ưu 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 số năm, Borland ấn phiên Borland C++ Builder 2006, cung cấp chức quản lý mạnh sửa lỗi C++ Builder 2006 phần Borland Developer Studio, gói chứa Delphi, C++ Builder C# Builder Borland làm sống lại nhánh “Turbo” ấn hai phiên “Turbo” C++ Builder: Turbo C++ Professional Turbo C++ Explorer (miễn phí): Tên sản phẩm Mã Ngày ấn ?Delphi 2008? - ?CF? Highlander ? Delphi for PHP - PHP a-la Delphi Astro 2007, Mar 27 Delphi 2007 for Windows Vista and Spacely AJAX 2007, Mar 19 Chrome 1.5.5 by RemObjects (VS 2005, Net 2.0) 2006, Oct 27 Free Pascal 2.0.4 2006, Aug 28 Borland Developer Studio 2006 Delphi (W32 and Net), C++ and C# DeXter under one IDE 2005, Oct 10 10 int X, int Y) { TListItem *currentitem, *nextitem, *dragitem, *dropitem ; TListView *temp; TItemStates selected = TItemStates() GetItemAt(X,Y); currentitem = temp->Selected; //phần tử chọn while( currentitem != NULL) { nextitem = temp->GetNextItem(currentitem, sdAll, selected) ; //tạo phần tử rỗng vị trí chèn vào // phần tử lưu biến dragitem if(dropitem!=NULL) dragitem = temp->Items->Insert(dropitem->Index); else dragitem = temp->Items->Add(); //gán giá trị currentitem cho dragitem dragitem->Assign(currentitem) ; delete currentitem; currentitem = nextitem; } } } Bước 4: Nhấn F9 để thực thi chương trình Ví dụ 3: Chương trình sau kéo thả phần tử TreeView 119 Hình 83-TreeView Drag and Drop Mã nguồn chương trình sau: // #include #pragma hdrstop #include "Unit1.h" // #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; // fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } // void fastcall TForm1::TreeView1DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept) { Accept = (Sender == TreeView1); } // 120 void fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source, int X, int Y) { TTreeNode *ToDeleteItem, *DropItem, *CurrentItem, *NextItem; int ChildCount, Childrun; if(Sender == Source ) { DropItem = TreeView1->GetNodeAt(X, Y); CurrentItem = TreeView1->Selected; ToDeleteItem = CurrentItem; NextItem = TreeView1->Items->Insert(DropItem, CurrentItem->Text); DropItem = NextItem; ChildCount = TreeView1->Selected->Count; for( Childrun = 1; Childrun Selected->getFirstChild(); NextItem = TreeView1->Items->AddChild(DropItem, CurrentItem->Text); TreeView1->Items->Delete(CurrentItem); } delete ToDeleteItem; } } // Ví dụ 5: Chương trình drag Drop PageControl Hình 84-Page Control Drag and Drop Mã lệnh chương trình sau: 121 // #include #pragma hdrstop #include "Unit1.h" // #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; // fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } // void fastcall TForm1::PageControl1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { PageControl1->BeginDrag(true) ; } // void fastcall TForm1::PageControl1DragDrop(TObject *Sender, TObject *Source, int X, int Y) { //const TCM_GETITEMRECT=0x130A; TRect int TabRect; j; if(Sender->ClassNameIs("TPageControl")) for( j = 0; j PageCount - 1; j ++) { // PageControl1->Perform(TCM_GETITEMRECT, j, LParam(&TabRect)) ; PageControl1->Perform(0x130A,j,(int)&TabRect); 122 if(PtInRect(TabRect, Point(X, Y)) ) { if(PageControl1->ActivePage->PageIndex != j ) PageControl1->ActivePage->PageIndex = j; return; } } } // void fastcall TForm1::PageControl1DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept) { Accept = (Sender == PageControl1); } // Tuy nhiên, để kéo thả tập tin, phải thực phương pháp khác phương pháp đón nhận kiện WM_DROPFILES Đây phương pháp phức tạp, đưa vào tài liệu ví dụ minh hoạ mà khơng phân tích q chi tiết Ví dụ 6: Chương trình kéo thả tập tin vào chương trình Hình 85-Chương trình Files and Folders Drag Để thực chương trình này, dùng ListBox phải thêm vào hai phương thức; phương thức đáp ứng kiện kéo thả file (thông điệp WM_DROPFILES) phương thức dùng để liệt kê tập tin thư mục thư mục định Ngồi ra, cịn số biến thêm vào ngăn private 123 Hình 86-Thêm hai phương thức Mã lệnh chương trình: Tập tin Unit1.h: // #ifndef Unit1H #define Unit1H // #include #include #include #include #include // class TForm1 : public TForm { published: // IDE-managed Components TListBox *ListBox1; void fastcall FormCreate(TObject *Sender); void fastcall FormClose(TObject *Sender, TCloseAction &Action); private: // User declarations //khai báo thêm biến //MAX_PATH: số cho biết độ dài tối đa đường dẫn đến tập tin hệ điều hành 124 char DroppedFile[MAX_PATH*2+1] ; long TotalDroppedFiles, Counter ; void *FindHandle void TForm1::ProcessDir(AnsiString root); void fastcall DragProc(TMessage & Msg); public: // User declarations fastcall TForm1(TComponent* Owner); protected: BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_DROPFILES, TMessage, DragProc) END_MESSAGE_MAP(TForm) }; // extern PACKAGE TForm1 *Form1; // #endif Mã lệnh tập tin Unit1.cpp // #include #pragma hdrstop #include "Unit1.h" // #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; // fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } // void fastcall TForm1::FormCreate(TObject *Sender) { //cho phép ListBox1 chấp nhận kéo thả tập tin DragAcceptFiles(this->ListBox1->Handle,true); 125 } // void TForm1::ProcessDir(AnsiString root) { TSearchRec filesearch; AnsiString folder; folder = root; //tìm kiếm tập tin thư mục if (FindFirst(folder+"\\*.*",faAnyFile,filesearch)==0) { { //nếu thư mục khác “ ” (thư mục cha) “.” (chính thư mục này) đệ quy vào thư mục if ((filesearch.Attr & faDirectory)==faDirectory) { if (filesearch.Name !=" " && filesearch.Name !=".") { //yêu cầu chương trình xử lý thơng điệp tránh trường hợp bị đóng băng với thư mục lớn Application->ProcessMessages(); ProcessDir(folder + "\\" + filesearch.Name); } } else { this->ListBox1->Items->Add(folder+"\\" + filesearch.Name); } }while (FindNext(filesearch)==0); } } void fastcall TForm1::DragProc(TMessage & Msg) { /* Chúng ta chuyển tham số $FFFFFFFF để lấy số tập tin kéo vào*/ TotalDroppedFiles = NULL,0); DragQueryFile((void *)Msg.WParam , 0xFFFFFFFF, AnsiString root; for( Counter = 0; Counter ListBox1->Items->Add(root); } } //Giải phóng lượng nhớ chiếm giữ tập tin kéo DragFinish((void *)Msg.WParam ); } void fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { DragAcceptFiles(this->ListBox1->Handle,false); //trả trạng thái ban đầu } // 5.2 Thực hành động rê kết dính Hoạt động rê kết dính (Drag and Dock) hành động tương tự kéo thả kết dính, đối tượng kết dính vào biên đối tượng khác nhận đối tượng kết dính làm đối tượng cha Các kiện phát sinh q trình kết dính gồm: OnBeginDock, OnDockOver, OnDockDrap, EndDock Trong nội dung học này, nghiên cứu cách thực hành động rê kết dính thơng qua số ví dụ sau: Ví dụ: Chương trình sau sử dụng phương thức Dock tự động đối tượng để kết dính đối tượng 127 Hình 87-Dock Button Chúng ta tiến hành thiết kế Form, đặt đối tượng Panel lên Form đổi thuộc tính DockSite thành true để Panel chấp nhận cho phép kết dính đối tượng lên Tiếp theo, đặt đối tượng Button lên Form, điều chỉnh thuộc tính: DragKin=dkDock DragMode = dmAutomatic Khi đó, đối tượng Button1 kết dính lên đối tượng Panel1 muốn truy bắt kiện sử dụng OnBeginDock, OnDockOver, OnDockDrag, OnEndDock 5.3 Làm việc với văn điều khiển a) Cài đặt lề cho văn Setting text alignment Trong đối tượng RichText hay đối tượng memo, văn canh phải, canh trái hay canh Để điều chỉnh dạng canh lề văn bản, chúng a sử dụng thuộc tính Alignment Thuộc tính có tác dụng thuộc tính WordWrap điều cài đặt thành true Nếu WordWrap đặt thành false khơng có canh lề áp dụng Để lấy ví dụ, giả sử có ta có menu để thực canh lề trái, phải cho văn Đoạn mã lện sau minh hoạ phương pháp xử lý mục chọn văn richtext sau: void TEditForm::AlignClick(TObject *Sender) { TMenuItem *temp; Left1.Checked := False; { clear all three checks */ Right1->Checked = False; Center1->Checked = False; temp = (TMenuItem *)Sender; temp->Checked=true; 128 if(Left1->Checked ) Editor-> Alignment = taLeftJustify else if(Right1->Checked ) Editor-> Alignment = taRightJustify else if(Center1->Checked ) Editor-> Alignment = taCenter; } b) Thêm cuộn vào thời điểm thực thi Đối tượng RichEdit memo chứa cuộn ngang cuộn dọc hai cần thiết Khi thuộc tính WordWrap kích hoạt, có cuộn dọc hiển thị mà Để thêm cuộn vào thời điểm thực thi, sử dụng đoạn lệnh ví dụ sau: void fastcall TEditForm::WordWrap1Click(TObject *Sender) { Editor->WordWrap := not WordWrap; { toggle word-wrapping */ if(WordWrap ) ScrollBars:= ssVertical { wrapped requires only vertical */ else ScrollBars := ssBoth; { unwrapped might need both */ WordWrap1.Checked := WordWrap; { check menu item to match property */ } c) Thêm đối tượng Clipboard Hầu hết chương trình xử lý văn cho phép di chuyển đoạn văn chọn lựa qua lại ứng dụng, chí văn ứng dụng khác Đối tượng Clipboard C++ Builder thân Clipboard Windows bao gồm phương thức cắt, copy dán văn (thậm chí định dạng khác, chẳng hạn hình ảnh) Đối tượng Clipboard khai báo thư viện Clipbrd.hpp (hoặc Clipbrd.h) Để thêm đối tượng Clipboad vào ứng dụng phải thêm câu lệnh khai báo thư viện lên đoạn khai báo thư viện C++ Buidler (#include Clipbrd.hpp) d) Đoạn văn chọn Trước gởi đoạn văn vào Clipboard, đoạn văn phải chọn trước Khi người sử dụng chọn đoạn văn bản, hiển thị cách đánh dấu (thường vùng đen, chữ trắng) Các thuộc tính hỗ trợ để xử lý đoạn văn lựa chọn sau: Thuộc tính Ý nghĩa SelText Chứa chuỗi văn chọn 129 SelLength Chứa chiều dài văn chọn SelStart Chứa vị trí bắt đầu chuỗi e) Chọn tất văn Để chọn tất văn có điều khiển, sử dụng phương thức Select All Đây phương pháp hiệu để chọn văn hiển thị vùng khuất Thường thường, người sử dụng chọn văn hay sử dụng chuột bàn phím f) Cắt, chép dán văn Các ứng dụng sử dụng thư viện Clipbrd cắt, chép dán văn bản, đồ hoạ đối tượng thông qua Clipboard Windows Chúng ta sử dụng đoạn mã lệnh tương tự sau: void fastcall TEditForm::CutToClipboard(TObject *Sender) {   Editor->CutToClipboard(); } void fastcall TEditForm::CopyToClipboard(TObject *Sender) {   Editor->CopyToClipboard(); } void fastcall TEditForm||PasteFromClipboard(TObject *Sender) {   Editor->PasteFromClipboard(); } g) Xoá đoạn văn lựa chọn Chúng ta xố đoạn văn lựa chọn mà khơng phải cắt đưa vào Clipboard Để làm điều này, phải gọi phương thức ClearSelecton Ví dụ, để xoá đoạn văn lựa chọn sử dụng đoạn lệnh sau: void fastcall TEditForm::Delete(Sender: TObject); {   RichEdit1->ClearSelection(); } 5.4 Thêm đồ hoạ vào điều khiển Các điều khiển list-box, combo-box menu có kiểu dáng đặc biệt gọi “kiểu tự vẽ”, có nghĩa tự vẽ phần tử, văn phần tử mã lệnh thực thi Đây phương cách hay dùng để đưa đồ hoạ vào điều khiển 130 Thông thường, để tạo đối tượng tự vẽ C++ Builder, phải qua ba bước sau: - Chỉ định để hệ thống biết đối tượng tự vẽ Cả hai danh sách listbox combobox có thuộc tính Style Style cho phép định phương pháp vẽ phần tử mặc định hay tự vẽ Grid (lưới) sử dụng thuộc tính DefaultDrawing phép hay không cho phép việc hệ thống vẽ mục chọn cách mặc định Listbox Combobox có thêm kiểu tự vẽ gồm: fixed variable diễn giải bảng sau: Kiểu vẽ tự Ý nghĩa Giá trị Fixed Mỗi phần tử có chiều cao, chiều cao định thuộc tính ItemHeight lbOwnerDrawFixed, csOwnerDrawFixed Variable Mỗi phần tử có chiều cao khác phụ thuộc vào liệu thời điểm thực thi lbOwnerDrawVariable, csOwnerDrawVariable - Thêm đối tượng hình ảnh vào String List Một string list có khả lưu danh sách đối tượng kèm theo danh sách chuỗi Ví dụ, ứng dụng quản lý tập tin, thêm hình ảnh để ổ đĩa với tên ổ đĩa Để thực điều này, cần phải thêm số hình ảnh vào ứng dụng, sau chép chúng vào string list Chúng ta sử dụng hình ảnh đối tượng hình ảnh ẩn, chẳng hạn như: + Thêm đối tượng hình ảnh vào form + Cài đặt tên cho đối tượng + Cài đặt thuộc tính Visible thành false + Tải hình ảnh thuộc tính Picture Đối tượng hình ảnh ẩn ứng dụng thực thi Một sử dụng hình ảnh ứng dụng, đính kèm với danh sách văn String list Chúng ta thêm đồng thời đối tượng văn đính kèm vào string list Ví dụ cho phép tìm hiểu cách thêm hình ảnh vào string list Đây phần chương trình quản lý tập tin, đó, ổ đĩa chó hình ảnh ký tự kèm Để thêm hình ảnh, truy bắt kiện OnCreate Form đoạn lệnh void fastcall TFMForm::FormCreate(TObject *Sender) {  char Drive; int AddedIndex; for( Drive = 'A';Drive

Ngày đăng: 17/01/2022, 11:29

Xem thêm: