2017-10-13 20 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に言われている:TMsgDlgType.mtConfirmationタイプの

mtConfirmationショーを持つ

疑問符

ダイアログボックスの情報 アイコンが表示されます。過去には

、彼らは代わりに疑問符を表示するために使用されるが、マイクロソフト は、VCLがTMsgDlgType.mtConfirmationダイアログボックスを表示するために使用 のWindows API関数から疑問符を削除しました。 Microsoftを引用する:「特定の種類の メッセージが明確に表示されていないため、疑問符のメッセージアイコンがもう表示されなくなりました。また、メッセージのフレーズが質問として メッセージタイプに適用される可能性があります。ヘルプ情報で シンボルの疑問符を混同することがあります。以前の ダイアログボックスの外観を使用するには、Vcl.DialogsユニットのUseLatestCommonDialogs 変数を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

!私は本当にMicrosoftのロジックに従うことができません。記号の意味は常にその文脈によって定義される。つまり、私が行動できるコントロール(たとえばボタン)に疑問符の記号がある場合、それを使って情報を得ることができます。しかし、ダイアログの疑問符は動かすことができないので、ダイアログにBEING情報の意味を与えます。 – user1580348

関連する問題