Thành tố điều khiển đồ họa

Trong giao diện người dùng bằng đồ hoạ (GUI), **thành tố điều khiển đồ họa** (tiếng Anhː **graphical widget**, viết gọn là **widget**, còn được gọi là **control**) là một thành phần dùng để tương tác, chẳng hạn như một nút bấm hay thanh cuộn. Thành tố điều khiển là các thành phần phần mềm mà một người dùng máy tính tương tác với nó thông qua sự thao tác trực tiếp.để đọc và sửa thông tin về một ứng dụng. Các thư viện giao diện đồ hoạ chẳng hạn như Windows Presentation Foundation, GTK và Cocoa đều chứa tập hợp các thành tố điều khiển và logic (luận lý) đẻ kết xuất chúng.

## Nguồn gốc Anh ngữ
Có người cho rằng chữ Anh ngữ , có thể là một tổ hợp ghép của hai chữ "" (cửa sổ) và chữ "" (thành phần). Nhưng điều này không chắc đúng. Chữ "widget" được biết sớm nhất là một hài kịch *[[Beggar on Horseback]]* (1924), của George S. Kaufman và Marc Connelly. Người hùng của câu truyện giữ vai trò một nhà soạn nhạc phải lựa chọn giữa hai con đường hoặc là tạo ra dòng nhạc để phấn khích tâm hồn anh ta (nhưng không nhận thù lao) hay nhận tiền để sống mà phải chấp nhận một cộng việc giết chết tâm hồn trong một xưởng chế tạo các "widget". Bản văn của tác phẩm nhấn mạnh điệp khúc bộc lộ ý nghĩa của chữ "widget" một cách rõ ràng là món hàng buôn bán đơn thuần không có tính nghệ thuật và giá trị tinh thần.

Ở Anh, chữ "widget" còn có thêm một nghĩa khác không thấy ở Hoa Kỳ. Một "widget" (trong ý nghĩa này) là một thiết bị nhỏ gắn kết vào các thùng bia trong suốt thời gian chúng được sản xuất (chi có trong một số hiệu bia). Những thiết bị này cho phép bia được bảo dưỡng trong nhiệt độ thấp và nó nằm trong chu kì dài mà không cần có sự làm lạnh.

## Đặc điểm
Có loại nhiều loại thành tố điều khiển chẳng hạn như:
* Chỉ nhận lệnh và thi hành như các nút điều khiển
* Nhận thông tin như các hộp văn bản
* Chỉ thi hành thao tác khi được lệnh của hệ thống như đồng hồ hẹn giờ (**)
* Tương tác và thông báo như các hộp thông báo (*message box*), hộp xác nhận (*confirm box*), và các gợi ý (*tool tip*)
Các thành tố điều khiển thực ra phải hiểu với đặc tính *ảo* nghĩa là chúng phân biệt với các bộ phận vật lý thông thường khác. Thí dụ: các nút điều khiển ảo chỉ có thể được nhấn bởi chuột, bàn phím hay bằng ngón tay trên màn hình cảm ứng (*touch screen*). Hình ảnh các thành phần điều khiển chỉ để so sánh như các nút bấm ở thế giới thực bên ngoài

Một số thành tố điều khiển có thể không thấy được trên giao diện đồ họa nhưng vẩn có tương tác với người dùng qua một hay vài chức năng xác định nào đó. Thí dụ với các phím nóng (*hot key control*) người ta không thể thấy hình dạng của các thành tố điều khiển này nhưng nó được cài đặt để giúp người dùng máy sử dụng bàn phím (thay vì phải nhấp các nút của chuột). Một thí dụ khác về ô điều khiển không thấy được là đồng hồ hẹn giờ (*timer*) rất thông dụng trong Visual Basic. Các đồng hồ hẹn giờ này có thể được cài đặt trong chương trình để tự động làm các thao tác theo đúng một khoảng thời gian mà người lập trình muốn.

Tùy theo hệ điều hành và chuẩn GUI mà các thành tố điều khiển và đặc điểm chức năng của chúng có thể khác nhau. Ngoài ra, các ngôn ngữ lập trình hỗ trợ cho việc tạo ra các chương trình có giao diện đồ họa cũng có thể cung cấp thêm các thành tố điều khiển riêng biệt. Trong hệ thống X Window thì các thành tố điều khiển thường được hỗ trợ chung trong một tập họp qua các bộ công cụ lập trình. Trong khi đó, các ngôn ngữ lập trình cho Windows thường cung cấp thêm các ô điều khiển bên cạnh những ô điều khiển sẵn có của hệ điều hành.

## Danh sách các thành tố điều khiển phổ biến

* Lựa chọn và hiển thị
** Nút bấm
***Nút chọn (*radio button*)
***Hộp chọn hay hộp kiểm (*check box*)
***Nút tách gồm một nút chính và một nút phụ. Nút phụ tạo ra một trình đơn thả xuống
***Nút chu kì
**Thanh trượt (*slider*)
**Hộp danh sách (*list box*)
**Hộp nhập số (*spinner*)
**Danh sách thả xuống hay trình đơn thả xuống (*drop-down list*)
**Trình đơn (*menu*)
***Trình đơn ngữ cảnh (*context menu*)
***Trình đơn bánh
**Thanh trình đơn (*menu bar*)
**Thanh công cụ (*tool bar*)
***Ruy băng là dạng kết hợp giữa trình đơn và thanh công cụ
**Hộp đa hợp (*combo box*)
**Biểu tượng
**Khung nhìn dạng cây (tree view)
**Khung nhìn dạng lưới hay lưới dữ liệu (grid view)
*Điều hướng
**Liên kết (link)
**Thẻ (tab)
**Thanh cuộn (scroll bar)
*Đầu vào (nhập)
**Hộp văn bản (*text box*)
**Hộp đa hợp (*combo box*)
*Đầu ra
**Nhãn (label)
**Hộp gợi ý (*tooltip*)
**Bong bóng trợ giúp (balloon help)
**Thanh trạng thái (status bar)
**Thanh tiến trình (p*rogress bar*)
**Thanh thông tin (infobar)
*Vật chứa
**Cửa sổ
***Cửa sổ tình thái hay cửa sổ bắt buộc (modal window)
***Hộp thoại (*dialog box*)
***Cửa sổ tiện ích (*utility window*)
***Khung
***Bức vẽ (canvas)
* Linh tinh
**Bộ hẹn giờ (*timer*)
**Danh mục hình (*image list*)
**Phím nóng (*hot key*)

## Tham khảo
*Richard Simon: *Common Controls & Messages API bible*; Book 2; Waite Group Press; 1996; ISBN 1571690107

## Xem thêm

*Bộ công cụ widget
*Diện mạo và cảm nhận