2017-10-13 21 views
5

Trong Delphi 10.1.2 Berlin, trong một hàm Vcl.Dialogs.MessageDlg, các hằng số DlgTypemtInformationmtConfirmation tạo cùng một biểu tượng hộp thoại. Ví dụ:Biểu tượng MessageDlg sai với hằng số xác nhận mtl xác nhận DlgType?

if Vcl.Dialogs.MessageDlg('Do you really want to remove the selected item?', mtConfirmation, mbOKCancel, 0) = mrOk then 
begin 
    RemoveTheSelectedItem; 
end; 

enter image description here

if Vcl.Dialogs.MessageDlg('Do you really want to remove the selected item?', mtInformation, mbOKCancel, 0) = mrOk then 
begin 
    RemoveTheSelectedItem; 
end; 

enter image description here

Nhưng nên không phải là DlgType liên tục mtConfirmation hiển thị một dấu chấm hỏi biểu tượng, (tùy theo từng DlgType hằng khác mtWarningmtError tạo ra từng một biểu tượng khác)?

Làm cách nào để nhận được dấu hỏi dấu hỏi với hằng số DlgTypemtConfirmation?

+0

tôi đã chính xác vấn đề này ngày hôm nay .. cảm ơn cho hỏi, và nhờ Tom cho câu trả lời –

Trả lời

10

Người ta nói trong help:

Có mtConfirmation Hiện câu hỏi Đánh

hộp Dialog loại TMsgDlgType.mtConfirmation hiển thị một thông tin biểu tượng.

Trước đây, họ đã sử dụng để hiển thị một dấu hỏi, nhưng Microsoft đã xóa biểu tượng dấu chấm hỏi khỏi chức năng API của Windows VCL sử dụng để hiển thị hộp thoại TMsgDlgType.mtConfirmation. Trích dẫn Microsoft: "Biểu tượng tin nhắn dấu chấm hỏi không còn là được đề xuất vì nó không đại diện rõ ràng loại thông báo cụ thể và vì cách đặt câu hỏi dưới dạng câu hỏi có thể áp dụng cho bất kỳ loại thư nào. có thể gây nhầm lẫn cho thông báo dấu chấm hỏi biểu tượng với thông tin Trợ giúp. " Để sử dụng hộp thoại trước đó, bạn phải đặt biến UseLatestCommonDialogs của đơn vị Vcl.Dialogs thành False.

Vì vậy, mã này:

Vcl.Dialogs.UseLatestCommonDialogs := False; 
    if Vcl.Dialogs.MessageDlg('Do you really want to remove the selected item?', mtConfirmation, mbOKCancel, 0) = mrOk then 
    begin 
    RemoveTheSelectedItem; 
    end; 

sản xuất kết quả này:

enter image description here

+0

Tôi thực sự không thể theo logic của Microsoft. Ý nghĩa của một biểu tượng luôn luôn được xác định bởi ngữ cảnh của nó. Điều này có nghĩa là: Khi một điều khiển mà tôi có thể hành động (ví dụ: một nút) có biểu tượng dấu chấm hỏi thì tôi có thể sử dụng nó để lấy thông tin. Nhưng dấu chấm hỏi trong hộp thoại không thể được thực hiện và do đó nó mang lại cho hộp thoại ý nghĩa của thông tin BEING. – user1580348

Các vấn đề liên quan