Phân loại controls trong Symbian

Một phần của tài liệu Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động (Trang 72 - 73)

6.3.2.1 Window-owning controls và non-window-owning controls

Window-owning controls là các control có cùng kích thước, vị trí với cửa sổ hiển thị. Các control này có thể chồng lên nhau và có thể di chuyển vị trí trong cửa sổ cha. Hộp thoại (dialog), trình đơn (menu), toolbar là các Window-owning controls.

Hình 6.4 Control

Tuy nhiên phần lớn các control là non-window-owning controls. Một non- window-owning controls có phạm vi (extent) là một phần của cửa sổ trên màn hình hiển thị: thông thường là một trong nhiều control của một control kết hợp (gọi là

container) trong ứng dụng. Cụ thể một ứng dụng tra cứu danh bạđơn giản có thể có một container (dạng control kết hợp) chứa một listbox các sốđiện thoại đã lưu vào máy và một textbox để nhập sốđiện thoại cần tìm(non-window-owning controls).

Trong ứng dụng, một non-window-owning control phải nằm trong một window-owning control.

6.3.2.2 Simple controls và compound controls

Control đơn là control không chứa các control khác, vi dụ như nút lệnh, textbox… Một control đơn có thể là window-owning hay non-window-owning. Tuy nhiên trong thực tế hầu hết các control đơn là non-window-owning control.

Ngược lại, control kết hợp là control chứa một hoặc nhiều control khác. Control kết hợp còn gọi là container controls và có thể là là window-owning hay non- window-owning control.

Các control chứa trong control kết hợp thông thường là non-window-owning control và được gọi là các control thành phần (component control).

Một control kết hợp muốn hoạt động phải viết đè hai hàm: “TInt

CCoeControl::CountComponentControls()” trả về số control thành phần và “CCoeControl* CCoeControl::ComponentControl()” trả về con trỏ của từng control thành phần. UI Control Framework sử dụng hai hàm này đểđiều khiển hoạt động của các control. Tùy theo như cầu, lập trình viên có thể sử dụng mảng động để lưu các control thành phần hoặc sử dụng mã nguồn “cứng” để thực thi các hàm trên. Nếu không có ý định mở rộng các control khi ứng dụng đang hoạt động, thông thường lập trình viên trả về trực tiếp số control thành phần trong control kết hợp (CountComponentControls()) và dùng câu lệnh switch (bắt đầu bằng case 0:) để trả về con trỏ các cont rol thành phần (ComponentControl()).

Control kết hợp có trách nhiệm nhận và chuyển các sự kiện phím (key event) cho các control thành phần. Việc xử lý sự kiện của mỗi control thành phần có thể thực hiện ngay trong control kết hợp, nếu lớp control kết hợp thực thi giao diện Observer ứng với control thành phần đó. Ngoài ra việc xử lý sự kiện có thể thực hiện trong lớp control thành phần nếu lớp control thành phần do lập trình viên tạo ra (kế thừa từ các control do hệ điều hành cung cấp) thực thi giao diện Observer của loại control đó.

Các control kết hợp có thể là control thành phần của một control kết hợp khác. Không có giới hạn cho việc kết hợp này lồng nhau này.

Một phần của tài liệu Nghiên cứu và xây dựng ứng dụng từ điển trên điện thoại di động (Trang 72 - 73)