Hộp thoại

**Hộp thoại** là một thành tố điều khiển đồ hoạ dưới dạng cửa sổ nhỏ để giao tiếp thông tin giữa người dùng và máy tính và nhắc họ phản hồi để thực hiện chức năng của chương trình, hệ điều hành.

Hộp thoại được phân loại thành hộp thoại "trạng thái" và "không trạng thái", tùy thuộc vào việc hộp thoại đó có chặn sự tương tác của người dùng với chương trình tạo ra nó không. Kiểu của hộp thoại hiển thị phụ thuộc vào tương tác mong muốn với người dùng.

Loại hộp thoại đơn giản nhất là hộp cảnh báo, hiển thị một thông báo và có thể yêu cầu một sự khẳng định rằng thông điệp đã được đọc, thường là bằng cách nháy vào "OK", hoặc quyết định xem liệu có tiếp tục một hoạt động không bằng cách nháy vào "OK" hoặc "Huỷ". Hộp cảnh báo cũng được sử dụng để hiển thị một "thông báo chấm dứt", đôi khi là yêu cầu người dùng xác nhận rằng họ đã đọc thông báo, trong trường hợp ứng dụng hay hệ điều hành bị lỗi có chủ ý hoặc không có chủ ý (sự cố). (Ví dụ, "Gedit đã gặp phải một lỗi và phải dừng chương trình.") Mặc dù hộp thoại trạng thái là một mẫu tương tác thường xuyên được sử dụng, nó cũng bị các chuyên gia về tính khả dụng chỉ trích là không hiệu quả cho mục đích sử dụng chính – bảo vệ trước các lỗi gây ra bởi các hoạt động có tính phá huỷ, và vì thế các lựa chọn thay thế tốt hơn tồn tại.

## Loại không trạng thái
Hộp thoại không trạng thái được sử dụng khi các thông tin yêu cầu không nhất thiết phải có để tiếp tục, do đó, các cửa sổ có thể được để sau trong khi tiếp tục làm việc ở nơi khác. Ví dụ về hộp thoại không trạng thái là một thanh công cụ, tách biệt khỏi ứng dụng chính, hoặc có thể được tách ra từ ứng dụng chính, và các mục trong thanh công cụ có thể được dùng để chọn các tính năng hoặc chức năng của ứng dụng.

Nhìn chung, thiết kế phần mềm tốt yêu cầu các hộp thoại thuộc vào loại này nếu có thể, vì chúng không buộc người dùng vào một chế độ hoạt động cụ thể nào cả. Chẳng hạn như một hộp thoại thiết đặt của tài liệu hiện tại, ví dụ màu chữ và màu nền. Người dùng có thể tiếp tục thêm văn bản vào cửa sổ chính dù có màu gì đi chăng nữa, nhưng có thể thay đổi nó bất cứ khi nào thông qua hộp thoại.

## Loại trạng thái hệ thống
Hộp thoại trạng thái hệ thống ngăn cản sự tương tác với những cửa sổ khác trên màn hình và ngăn người dùng chuyển sang ứng dụng khác hoặc thực hiện bất kỳ hành động nào khác cho đến vấn đề mà hộp thoại đưa ra được giải quyết. Hộp thoại trạng thái hệ thống được sử dụng nhiều hơn trong các hệ thống đơn nhiệm trước đây, khi mà chỉ một ứng dụng có thể chạy vào bất cứ thời điểm nào. Một ví dụ hiện tại về hộp thoại loại này là màn hình tắt máy của các phiên bản Windows hiện tại.

## Loại trạng thái ứng dụng
Mẫu hộp thoại tạm dừng chương trình: người dùng không thể tiếp tục mà không đóng hộp thoại; chương trình có thể yêu cầu một số thông tin bổ sung trước khi nó có thể tiếp tục, hoặc có thể chỉ cần xác nhận rằng người dùng muốn tiến hành một mục tiêu có khả năng nguy hiểm của hành động (hộp thoại xác nhận). Người dùng với khả năng sử dụng thông thường coi các hộp thoại mẫu là thiết kế giải pháp xấu, vì chúng có khuynh hướng xuất lỗi. Hành động nguy hiểm nên không thể nén bất cứ nơi nào có thể; một hộp thoại cảnh báo rằng phương thức xuất hiện bất ngờ hoặc được miễn nhiệm tự động (vì người sử dụng đã phát triển một thói quen) sẽ không bảo vệ được từ các hành động nguy hiểm. Hộp thoại mẫu ngắt chính quy trình làm việc. Hiệu ứng này đã có thể được tìm thấy bởi các nhà nghiên cứu vì nó tập trung vào việc hoàn thành các nhiệm vụ bị từ chối thay vì nó ngăn chặn người dùng thay đổi nhiệm vụ khác nhau khi cần thiết.

## Loại trạng thái tài liệu
Khái niệm về một tài liệu phương thức thoại gần đây đã được sử dụng, đáng chú ý nhất trong OS X và trình duyệt Opera. Trong trường hợp đầu tiên, chúng được thể hiện như tấm gắn vào một cửa sổ gốc. Những đoạn hội thoại chỉ hiện cửa sổ cho đến khi người sử dụng gạt bỏ hộp thoại, cho phép làm việc trong các cửa sổ khác để tiếp tục, thậm chí trong cùng một ứng dụng.

Trong OS X, hộp thoại xuất hiện phát ra từ một khe trong cửa sổ gốc của họ, và được thể hiện với một hình ảnh động. Điều này giúp cho người dùng hiểu rằng hộp thoại được gắn liền với cửa sổ gốc, không chỉ thể hiện ở phía trước của nó. Không có công việc nào có thể được thực hiện trong các tài liệu cơ bản của chính nó trong khi hộp thoại được hiển thị, nhưng các cửa sổ gốc vẫn có thể được di chuyển, thay đổi kích thước, giảm thiểu, và các cửa sổ khác có thể được đưa ra phía trước để người dùng có thể làm việc.

Cùng loại của các hộp thoại có thể được so sánh với "tiêu chuẩn" hộp thoại mẫu được sử dụng trong Windows và các hệ điều hành khác.

Các điểm tương đồng bao gồm:

* Cửa sổ gốc ngăn cản khi hộp thoại mở ra, và người dùng không thể tiếp tục làm việc với các tài liệu cơ bản trong cửa sổ đó.
* Không có công việc nào có thể thực hiện được với các tài liệu cơ bản trong cửa sổ đó.

Sự khác biệt bao gồm:

* Hộp thoại có thể mở bất cứ nơi nào trong cửa sổ gốc.
* Tùy thuộc vào nơi cửa sổ gốc nằm, hộp thoại có thể mở hầu như bất cứ nơi nào trên màn hình.
* Hộp thoại có thể được di chuyển (trong hầu hết các trường hợp), trong một số trường hợp có thể thay đổi kích thước, nhưng thường sẽ không được giảm thiểu.
* Có thể không cần thay đổi các cửa sổ gốc (không thể thay đổi kích thước, di chuyển hoặc thu nhỏ) trong khi các hộp thoại đang mở.

Cả hai cơ chế có thiếu sót:

* Hộp thoại Windows khóa cửa sổ gốc mà có thể ẩn các cửa sổ khác người dùng có thể cần phải tham khảo trong khi tương tác với hộp thoại, mặc dù điều này có thể được giảm nhẹ từ cửa sổ khác có sẵn thông qua các thanh tác vụ.
* Các khối hộp thoại OS X cửa sổ gốc, ngăn người sử dụng từ đề cập đến nó trong khi tương tác với hộp thoại. Điều này có thể yêu cầu người dùng đóng hộp thoại để truy cập các thông tin cần thiết, sau đó mở lại hộp thoại để tiếp tục.

## Tham khảo