Các đối tượng cơ bản (Common Control)

Một phần của tài liệu Lập Trình C++ (Trang 60 - 72)

TểM TẮT CHƯƠNG 10 : LẬP TRèNH GIAO DIỆN

5) Các đối tượng cơ bản (Common Control)

a) Button:

Hiểu đơn giảnbuttonlà 1controlnút nhấn có chức năng xác nhận cho một thao tác nào, có thể là kết thúc một tác vụ, xác nhận yêu cầu, gửi thông tin… Button thường thấy ởrất nhiềuứng dụng, hầu như như ứng dụng nào cũng có button, trên các website cũng có button đ ể xác nhận thông tin (thường gọi là submit). Thông thường button có hình chữnhật với tên và icon minh họa với màu sắc đơn giản, nhưng tùy theo từng loại ứng dụng khác nhau, button được biến họa với nhiều màu sắc cũng như hình dạng.

Cũng như các control khác, chúng ta kh ởi tạo Button từ hộp công cụ Toolbox bằng cách kéo thả; Bảng properties để thay đổi các thuộc tính và xác lập sựkiện (event) cho button. Button trong Visual Studio ngoài dạng chuẩn như button đầu tiên trong hình dưới thì ta còn có thể thay đổi một số thuộc tính để có những diện mạo khác nhau. Ví dụ như thêm icon, thay đổi màu sắc, kiểu hiển thị, hình nền, màu chữ…

Thuc tính ca Button:

Là control trong thư viện DotNet, Button được thừa hưởng nhiều thuộc tính và sự kiện khác nhau nhưng trong thực tế ta chỉ cần quan tâm đến 1 số cái hữu dụng mà thôi, vì xét đơn thuần thì Button cũng chỉ là 1 cái nút thì cũng không cần quá nhiều thuộc tính cũng như sự kiện.

Thuộc tính hay dùng đến như:BackColor,BackgroundImage,Imagedùng để thay đổi màu sắc, hìnhảnh trên Button; ImageAlign dùng để căn chỉnh vị trí image (Lưu ý là Image chứ không phải BackgroundImage). Font,ForeColor, Text,TextAlign dùng để thay đổi thuộc tính của Text hiển thị trên Button. Ngoài ra một số thuộc tính đáng chú ý như: Enable, TabIndex, Size, Location…

Có một thuộc tính quan trọng của Button cũng như tất cả các đối tượng khác là Name,đây là thuộc tính quy định tên củađối tượng nhằm mục đích phân biệt giữa các đối tượng và khi được khởi tạo đối tượng đã có 1 tên mặc định. Vì trong 1 Form có thểcó rất nhiều đối tượng, do đó để dễnhớ ta nên đặt tên lại cho các đối tượng thông qua thuộc tính Name(thay đổi thông qua cửa sổ properties). Và khi truy xuất đến các thuộc tính khác của đối tượng, chúng ta đều phải thông qua tên của đối tượng.

VD : this->button1->Text = “OK”; //Truy xuất đến thuộc tính Text của Button có tên là button1

Button trong chương trình, chúng ta phải thông qua Form. (VD: this->button1->Icon = … , this-

>buton1->Size = … .)

Một số thuộc tính cơ bản của Button:

Text : thuộc tính cho phép chỉnh sửa dòng kí tựhiển thịtrên button; Text có kiểu dữliệu là String.

VD : this->button1->Text = “Start”; //Thay đổi dòng kí tựxuất hiện trên button1 Visible : thuộc tính cho phépẩn/hiện button trên form; Visible có kiểu dữliệu là bool.

VD : this->button1->Visible = false; // Làmẩn button1 trên Form.

Skin ca Button:

Vềsựkiện của Button thì ta thấy rằng nút thì chỉ dùng để bấm nên chỉcần quan tâm đến sự kiệnClick là đủ.

Bây giờ chúng ta sẽ viết một chương trình đơn giản: tạo một nút có chức năng thoát chương trình.

Đầu tiên chúng ta chọn đối tượng Button trong toolbox và thêm vào trong Form. Sau khi đặt tên cho đối tượng này là BT1 và thay đổi thuộc tính Text của đối tượng thành EXIT trong cửa sổ properties như hình dưới.

Sau đó chọn event Click và gọi ra Delegate tương ứng. Trong Delegate vừa được khởi tạo, chúng ta sẽviết thêm câu lệnh thoát chương trình:

private: System::Void BT1_Click(System::Object^ sender, System::EventArgs^ e) {

Application::Exit() }

Như vậy, khi nhấn nút EXIT, chương trình sẽtự động thoát.

b) TextBox:

Textbox là một control cho phép nhập và xuất dữliệu dưới dạng chuỗi ; hiểu đơn giản thì Textbox là một ô trống cho phépngười dùng có thểnhập dữliệuđồng thời cho phép xuất dữliệu.

kéo thả; Bảngpropertiesđể thay đổi các thuộc tính và xác lập sựkiện (event) cho Textbox.

Thuc tính ca Textbox:

Name : thuộc tính quy định tên gọi của Textbox và có kiểu dữliệu là String (Chúng ta nên đặt tên lại cho Textbox : VD : TB1, TB2, TB3 …)

Text : thuộc tính cho phép chỉnh sửa dòng kí tựhiển thịtrên Textbox; Text có kiểu dữliệu là String. Đây là thuộc tính quan trọng nhất của Textbox. Mọi tương tác với textbox đều thông qua thuộc tính này

VD : this->TB1->Text = “Xin chao”; //Thay đổi dòng kí tự xuất hiện trên ô textbox có tên TB1.

Visible : thuộc tính cho phépẩn/hiện textbox trên Form; Visible có kiểu dữliệu là bool.

VD : this->TB1->Visible = false; // Làmẩn textbox TB1 trên Form.

TextAlign : thuộc tính cho phép căn chỉnh dòng chữhiển thịtrên textbox (trái,phải, giữa).

Multiline : thuộc tính có kiểu bool cho phép thay đổi kiểu nhập liệu trên textbox: false trong trường hợp nhập dữ liệu trên 1 dòng, true khi nhập nhiều dòng (cho phép nhấn Enter để xuống dòng).

VD : this->TB1->Multiline = true; //Thay đổi kiểu nhập liệu nhiều dòng.

PasswordChar : thuộc tính cho phép sửdụng textbox làm ô nhập password (ẩn password) và thay thếcác kí tựnhập vào bằng 1 kí tự do người lập trình quy định. PasswordChar có kiểu dữ liệu là Character.

VD : this->TB1->PasswordChar = ‘&’; //Dùng kí tự & đểthay thếkhi nhập pass.

UseSystemPasswordChar : thuộc tính kiểu bool cho phép lựa chọn kí tự ẩn của Windows (dấu chấm tròn) khi nhập password.

VD : this->TB1->UseSystemPasswordChar = true; //Dùng kí tự ● để thay thế khi nhập pass.

ReadOnly : thuộc tính có kiểu bool cho phép thay đổi việc nhập liệu: false: cho phép nhập liệu vào Textbox, true: không cho phép nhập vào textbox

VD : this->TB1->ReadOnly = true; //Không cho phép nhập liệu . Skin ca Textbox:

Về sựkiện của Textbox thì ta thấy rằng Textbox dùng đểnhập liệu nên chỉ cần quan tâm đến một vài sựkiện.

TextChanged : sựkiện xảy ra khi chuỗi kí tự hiển thịtrên TextBox bị thay đổi (VD như người dùng nhập thêm/xóa bớt đi 1 kí tự).

KeyPress : sự kiện xảy ra khi nhấn 1 phím trên bàn phím trong khi đang chọn TextBox (cũng giống như TextChanged nhưng rộng hơn).

dùng nhập liệu vào dạng password đồng thời hiển thị dòng kí tự đang được nhập lên tiêu đềcủa Form.

Đầu tiên chúng ta chọn đối tượng TextBox trong toolbox và thêm vào trong Form. Sau đó đặt tên cho đối tượng này là TB1 và thay đổi thuộc tính UseSystemPasswordChar của đối tượng thành true trong cửa sổ properties như hình dư ới.

Sau đó chọn event TextChanged và gọi ra Delegate tương ứng. Trong Delegate vừa được khởi tạo, chúng ta sẽviết thêm câu lệnh đểthực hiện yêu cầu của chương trình:

private: System::Void TB1_TextChanged(System::Object^ sender, System::EventArgs^ e) {

this->Text = this->TB1->Text;

}

Như vậy, khi ta nhập liệu vào TextBox thì trên textbox sẽ chỉ hiển thị kí tự thay thế còn tiêu đềcủa Form sẽhiển thị đúng giá trịchúng ta nhập vào.

c) CheckBox:

CheckBox là một control trong Lập trình windows Form – Chúng ta thường gặp trong các trường hợp lựa chọn các chức năng, giá trị cho chương trình. Xét về cấu tạo CheckBox gồm 2

CheckBox chỉ đơn thuần là thiết lập giá trịchọn hoặc bỏchọn. Trong một nhóm nhiều CheckBox ta có thể đưa ra nhiều lựa chọn khác nhau..

Cũng như các control khác, chúng ta kh ởi tạo Checkbox từhộp công cụToolboxbằng cách kéo thả; Bảngpropertiesđể thay đổi các thuộc tính và xác lập sựkiện (event) cho Checkbox.

Thuc tính ca Checkbox:

Name : thuộc tính quy định tên gọi của Checkbox và có kiểu dữ liệu là String (Chúng ta nên đặt tên lại cho Checkbox : VD : ChB1, ChB2, ChB3 …)

Text : thuộc tính cho phép chỉnh sửa dòng kí tựhiển thịbên cạnh Checkbox; Text có kiểu dữliệu là String.

VD : this->ChB1->Text = “Lua chon 1”; //Thay đổi dòng kí tựxuất hiện bên cạnh Checkbox có tên ChB1.

Visible : thuộc tính cho phépẩn/hiện Checkbox trên Form; Visible có kiểu dữliệu là bool.

VD : this->ChB1->Visible = false; // Làmẩn Checkbox ChB1 trên Form.

CheckAlign :Thông thường ta thấy trong CheckBox ô vuông điều khiển nằm bên trái còn phần Text miêu tả sẽ nằm bên phải; Và tất nhiên ta hoàn toàn có thể thay đổi vị trí của chúng thông qua thuộc tính CheckAlign.

VD : this->ChB1->CheckAlign = ContentAlignment::MiddleRight;

ThreeState : Thông thường ta thấy CheckBox chỉ có 2 trạng thái: chọn và không chọn;

Tuy nhiên ta có thể thay đổi thành 3 trạng thái: chọn, không chọn và trung gian thông qua thuộc tính ThreeState.

VD : this->ChB1->ThreeState = true;

Checked :Đây là thuộc tính quan trọng nhất của CheckBox cho biết trạng thái hiện tại của Checkbox (false có nghĩa là trạng thái của checkbox là không được chọn và true là được chọn).

Chúng ta cũng có thểdùng câu lệnh để thay đổi thạng thái của Checkbox VD : this->ChB1->Checked = true;

Skin ca Checkbox:

Hoạt động của CheckBox rất đơn giản nên ta chỉ cần quan tâm đến sự kiện CheckedChanged của Checkbox.

CheckedChanged : sựkiện xảy ra khi ta thay đổi trạng thái của CheckBox.

Bây giờchúng ta sẽviết một chương trình đơn giản:Chương trình chọn lựa món ăn và tính tiền.

Đầu tiên chúng ta chọn đối tượng CheckBox, TextBox, GroupBox và Button trong toolbox và thêm vào trong Form. Sau đó đặt tên cho đối tượng này là TB1 (TextBox) BT1(Button) và ChBx (cho các Checkbox)như hình dưới.

Sau đó chọn eventClick đối với Button và gọi ra Delegate tương ứng. Trong Delegate vừa được khởi tạo, chúng ta sẽviết thêm câu lệnh đểthực hiện yêu cầu của chương trình:

private: System::Void BT1_Click(System::Object^ sender, System::EventArgs^ e) { int tien;

if (ChB1->Checked) tien = tien + 100000;

if (ChB2->Checked) tien = tien + 120000;

if (ChB3->Checked) tien = tien + 200000;

this->TB1->Text = Convert::ToString(tien);

}

Như vậy, khi ta nhấn Button thì tùy theo trạng thái của từng checkbox mà trên textbox sẽ hiển thịsốtiền tương ứng.

d) RadioButton:

RadioButton là một control phổ biến, thường dùng trong Lập trình Windows Form.

RadioButton có biểu tưởng hình tròn với 2 trạng thái chọn hoặc không chọn. Nếu so sánh Radio Button với CheckBox thì chúng ta sẽ thấy được sự tương đồng, nhưng điểm khác biệt nằm ởchỗ trong 1 nhóm Radio Button thì chỉ có duy nhất 1 lựa chọn, chọn cái này cái kia sẽ mất. Còn đối với checkBox thì có thể cùng lúc đưa ra nhiều lựa chọn khác nhau.

Cũng như các control khác, chúng ta kh ởi tạo RadioButton từ hộp công cụ Toolbox bằng cách kéo thả; Bảngpropertiesđể thay đổi các thuộc tính và xác lập sựkiện (event).

Trong 1 nhóm bao gồm nhiều RadioButton thì chỉ có duy nhất 1 RadioButton được đánh dấu. Khi có cái mới được chọn thì cái cũ sẽ bị loại bỏ. Vậy những RadioButton nào được xem là cùng 1 nhóm?! Chung 1 group ở đây là tính những RadioButton cùng nằm trực tiếp trên cùng 1 control (vì dụ như nằm cùng trên Form hoặc nằm cùng trong 1 group box).

Thuc tính ca RadioButton:

Hầu hết các thuộc tính của RadioButton đều tương tự như của CheckBox

Name : thuộc tính quy định tên gọi của Radio Button và có kiểu dữliệu là String (Chúng ta nên đặt tên lại cho Radio Button: VD : RB1, RB2, RB3 …)

kiểu dữliệu là String.

VD : this->RB1->Text = “Lua chon 1”; //Thay đổi dòng kí tự xuất hiện bên cạnh Radio Button có tên RB1.

Visible : thuộc tính cho phép ẩn/hiện Radio Button trên Form; Visible có kiểu dữ liệu là bool.

VD : this->RB1->Visible = false; // Làmẩn Radio Button RB1 trên Form.

CheckAlign :Thông thường ta thấy trong Radio Button chấm trònđiều khiển nằm bên trái còn phần Text miêu tảsẽ nằm bên phải; Và tất nhiên ta hoàn toàn có thể thay đổi vị trí của chúng thông qua thuộc tính CheckAlign.

VD : this->RB1->CheckAlign = ContentAlignment::MiddleRight;

Checked :Đây là thuộc tính quan trọng nhất của Radio Button cho biết trạng thái hiện tại của Radio Button (false có nghĩa là trạng thái của Radio Button là không được chọn và true là được chọn). Chúng ta cũng có thể dùng câu lệnh để thay đổi thạng thái của Radio Button

VD : this->RB1->Checked = true;

Lưuý : Trong 1 nhóm bao gồm nhiều RadioButton thì chỉcó duy nhất 1 RadioButton được đánh dấu. Do đó khi ta thay đổi thuộc tính Checked của 1 RadioButton thành true thì Checked của các RadioButton khác trong nhóm sẽtự động thay đổi thành False.

Skin ca Checkbox:

Cũng giống như CheckBox ta chỉ cần quan tâm đến sự kiện CheckedChanged của RadioButton.

CheckedChanged : sựkiện xảy ra khi ta thay đổi trạng thái của RadioButton.

Bây giờchúng ta sẽviết một chương trìnhđơn gi ản:Chương trình chọn lựa chọn Setăn và tính tiền.

Đầu tiên chúng ta chọn đối tượng RadioButton, TextBox, GroupBox và Button trong toolbox và thêm vào trong Form. Sau đó đặt tên cho đối tượng này là TB1 (TextBox) BT1(Button) và RBx (cho các RadioButton)như hình dưới.

được khởi tạo, chúng ta sẽviết thêm câu lệnh đểthực hiện yêu cầu của chương trình:

private: System::Void BT1_Click(System::Object^ sender, System::EventArgs^ e) { int tien;

if (RB1->Checked) tien = 1000000;

if (RB2->Checked) tien = 1500000;

if (RB3->Checked) tien = 2000000;

this->TB1->Text = Convert::ToString(tien);

}

Như vậy, khi ta nhấn Button thì tùy theo trạng thái của từng RadioButton mà trên textbox sẽhiển thịsốtiền tương ứng.

e) ListBox:

ListBox hiểu đơn thuần là một hộp nhỏ(vùng/ khung dữliệu) chứa các danh sách dữliệu được sắp xếp liền kề nhau theo chiều thẳng đứng. Mỗi phần từ trong danh sách đó gọi là 1 item, mỗi item có chứa 1 biến duy nhất kiểu string, nghĩa là mọi dữ liệu để lưu trữ trong ListBox đều phải chuyển vềdạng String. Trong ListBox không thểchứa ListBox con khác.

Cũng như các control khác, chúng ta kh ởi tạo Listbox từhộp công cụ Toolbox bằng cách kéo thả; Bảngpropertiesđể thay đổi các thuộc tính và xác lập sựkiện (event).

Thuc tính ca ListBox:

Hầu hết các thuộc tính và phương thức của ComboBox đều tương tự như của ListBox.

Các thuộc tính và phương thức quan trọng của ComboBox.

Items : thuộc tính quan trọng nhất của ComboBox: quản lý các phần tửthuộc ComboBox.

Các tương tác với ComboBox hầu hết đều thông qua Items.

Items->Count: Trảvềsố lượng phần tửcó trong ComboBox.

Items[i] : truy xuất đến phần tửthứi của ComboBox.

Items->Add(): Thêm phần tửvào ComboBox.

Items->Remove(): Xóa phần tửkhỏi ComboBox.

Items->Clear(): Xóa toàn bộphần tửcủa ComboBox.

SelectedItem :Trả về giá trị của phần tử đang được chọn. VD : this->TB1->Text = this->CB1->SelectedItem;

SelectedIndex: Trả về chỉ số của phần tử đang được chọn trong ComboBox. Chỉ số phần từ là một số nguyên bắt đầu từ 0. Hoặc thiết lập để định vị phần tử được chọn thông qua chỉ số

VD : this->TB1->Text = Convert::ToString(this->CB1->SelectedIndex);

DataSource : Đổ dữ liệu vào ComboBox. Dữ liệu đưa vào phải có cấu trúc danh sách, mảng….

chỉ được chọn 1 phần tử)

Lưu ý : Trong thay đổi SelectionMode để cho phép chọn nhiều phần tử, khi chọn nhiều hơn 1 phần tử, thì thuộc tính quản lí giá trịcủa các phần tử được chọn và chỉ sốcủa các phần tử được chọn là SelectedItems và SelectedIndices.

Skin ca Listbox:

Cũng như các control khác trong thư vi ện DotNet, ListBox được hỗ trợ với nhiều Event khác nhau, đầy đủcho mọi trường hợp, mọi biến cố.Nhưng tất nhiên không phải khi nào cũng sử dụng hết các Event đó, một Event thiết nghĩ đư ợc dùng nhiều nhất đó làSelectedIndexChanged().

Event này sinh ra khi có sự thay đổi lựa chọn các phần tửtrên ListBox.

SelectedIndexChanged : sựkiện xảy ra khi tathay đổi lựa chọn các phần tửcủa Listbox.

Bây giờ chúng ta sẽ viết một chương trình đơn giản: Chương trình nhập/xóa dữ liệu của Listbox.

Để thêm, bớt phần tử cho ListBox ta sẽ làm việc qua thuộc tính Items. Để thêm phần ttử cho ListBox ta dùng phương thức Add(): ListBox1->Item->Add(“Nội dung cần thêm”) Phần tử mới thêm vào sẽ nằm dưới cùng của ListBox. Ngoài ra chúng ta cũng có th ể thêm phần cho listBox thông qua thuộc tính DataSource, dữ liệu đổ vào cho DataSource là một tập hợp danh sách, có thểlà List, ArrayList… Đểxóa một phần từkhỏi listBox ta dùng 1 trong 2 phương thức:

Remove() hoặc RemoveAt(). Trong đó: Phương thức Remove() nhận đối số là 1 chuỗi, chương trình sẽtìm và xóa item nào có giá trịbằng chuỗi đưa vào đó; Còn phương th ức RemoveAt() nhận đối sốlà chỉsố(sốthứtự) của item trong listBox. Sốthứtựsẽtính từ0.

Đầu tiên chúng ta chọn đối tượngtương ứngtrong toolbox và thêm vào trong Form. Sau đó đặt tên cho đối tượng này là TB1 (TextBox) L1(Listbox)như hình dư ới.

Sau đó chọn event Click đối với từng Button và gọi ra Delegate tương ứng. Trong Delegate vừa được khởi tạo, chúng ta sẽviết thêm câu lệnh đểthực hiện yêu cầu của chương trình:

Button Add: khi nhấn Add thì thêm vào phần tửbằng cách nhập vào TextBox

private: System::Void BT1_Click(System::Object^ sender, System::EventArgs^ e) { this->L1->Items->Add(this->TB1->Text);

Một phần của tài liệu Lập Trình C++ (Trang 60 - 72)

Tải bản đầy đủ (PDF)

(72 trang)