2017-10-13 19 views
5

델파이 10.1.2 베를린에서 Vcl.Dialogs.MessageDlg 함수에 DlgType 상수 mtInformationmtConfirmation은 동일한 대화 아이콘을 생성합니다. 예를 들면 :DlgType mtConfirmation 상수가 잘못된 MessageDlg 아이콘?

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

그러나 DlgType 일정 mtConfirmation 표시하려면 물음표 아이콘 (다른 DlgType 상수 mtWarningmtError 각을 작성해서는 안 다른 아이콘)?

나는 DlgType 일정 mtConfirmation물음표 아이콘을 얻을 수 있습니까?

+0

오늘 바로이 문제를 가지고 있었다를 .. 물어 주셔서 감사합니다, 감사를 톰에 대한 답변 –

답변

10

help에서 말한다 :

이 mtConfirmation 쇼 갖는 TMsgDlgType.mtConfirmation 유형의 물음표

대화 상자 정보 아이콘을 보여줍니다. 과거

, 그들은 대신에 물음표를 표시하는 데 사용하지만, 마이크로 소프트 는 VCL이 TMsgDlgType.mtConfirmation 대화 상자를 표시하기 위해 사용하는 하는 Windows API 함수에서 물음표 기호를 제거했습니다. Microsoft에서 인용 : "더 이상 의 특정 유형을 나타내지 않으며 물음표로 된 메시지의 표현이 어떤 메시지 유형에도 적용될 수 있으므로 물음표 메시지 아이콘은 더 이상 권장되지 않습니다. 또한 사용자 도움말 정보와 함께 기호 물음표를 혼동시킬 수 있습니다. " 이전 대화 상자 모양을 사용하려면 UseLatestCommonDialogs Vcl.Dialogs 변수를 False로 설정해야합니다.

그래서이 코드 :

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; 

이 결과를 생성합니다!

enter image description here

+0

에 대한 나는 정말로 마이크로 소프트의 논리를 따라갈 수 없다. 기호의 의미는 항상 그 문맥에 의해 정의됩니다. 즉, 내가 수행 할 수있는 컨트롤 (예 : 버튼)에 물음표 기호가 있으면 정보를 얻기 위해 사용할 수 있습니다. 그러나 대화 상자의 물음표는 작동 할 수 없으므로 대화에 BEING 정보의 의미를 부여합니다. – user1580348