2017-09-14 4 views
0

メッセージボックスのYESNOボタンのテキストを変更します。TMsgDlgButtonsのテキストを変更する方法RAD Studio XEの "はい"と "いいえ"ボタンはありますか?

CModalWndManager::ShowMessageBox(AnsiString::LoadStr(IDS_NOT_SUPPORTED).c_str(), mtWarning, TMsgDlgButtons() << mbYes << mbNo, mbOK == mrYes); 

代わりのYES、私は"Switch Mode"をしたい、とNOのために私は"Exit"をしたいです。

これはRAD Studio XEで可能ですか?

+0

何が 'CModalWndManager :: ShowMessageBox()'実際にメッセージボックスを表示するために内部的に呼び出していますか? 'Dialogs :: MessageDlg()'があれば、Vista +でテーマを有効にし、 'UseLatestCommonDialogs = true'を呼び出すと[' TaskDialogIndirect() '](https://msdn.microsoft.com/en-us/library/windows/) desktop/bb760544.aspx)、テキストはユーザーのロケールに基づいてOS自体から取得されます。テーマが無効か 'UseLatestCommonDialogs = false'の場合、代わりに' CreateMessageDialog() 'が呼び出され、カスタムVCL' TForm'が作成されます。あなたは 'CreateMessageDialog()'を直接呼び出して、 'TForm'をカスタマイズすることができます。 –

+0

XEで' AnsiString'を使っているのはなぜですか? 'CModalWndManager :: ShowMessageBox()'がVCLダイアログボックスを内部的に使用している場合は、特に 'UnicodeString'を使うべきです。 –

+0

@RemyLebeau非常にあなたの答えをありがとう...本当にappriciate ...私はCreateMessageDialogを使用し、必要に応じてTFormプロパティを変更しました..それは働く..インドからのThanx。 –

答えて

1

http://bcbjournal.org/articles/vol4/0003/Making_marvelous_message_dialogs.htm

TForm* Dlg = CreateMessageDialog(
    "Purge Warp Core?", mtConfirmation, 
    TMsgDlgButtons() << mbYes << mbNo); 
    TButton* yb = dynamic_cast<TButton *> 
    (Dlg->FindComponent("Yes")); 
    if (yb) 
    yb->Caption = "Affirmative"; 
    TButton* nb = dynamic_cast<TButton *> 
    (Dlg->FindComponent("No")); 
    if (nb) 
    nb->Caption = "Negative"; 
    int Rslt = Dlg->ShowModal(); 
    switch (Rslt) { 
    case mrYes: ;// do "Yes" stuff 
    case mrNo: ;// do "No" stuff 
+0

私は記事でこれを示していますが、 'dynamic_cast'を使用することは不要です。 Yesボタンを尋ねると、それを取得し、 'FindComponent()'はNULLを返しません。 'TButton'が使用されていることを知っているので、代わりに' static_cast'を使用し、NULLチェックを省略することができます。他のボタンと同じ –

関連する問題