2017-09-14 4 views
0

Ich möchte den Text von YES und NO Schaltflächen in einem Meldungsfeld ändern.So ändern Sie den Text der TMsgDlgButtons Schaltflächen "Ja" und "Nein" in RAD Studio XE?

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

Statt YES möchte ich "Switch Mode" und für NO Ich möchte "Exit".

Ist dies in RAD Studio XE möglich?

+0

Was ist 'CModalWndManager :: ShowMessageBox()' intern Aufruf das Meldungsfeld tatsächlich angezeigt werden? Wenn 'Dialogs :: MessageDlg()', dann auf Vista + mit aktivierten Themes und 'UseLatestCommonDialogs = true 'ruft es [' TaskDialogIndirect() '] (https://msdn.microsoft.com/en-us/library/windows/ desktop/bb760544.aspx), so dass der Text basierend auf dem Gebietsschema des Benutzers vom Betriebssystem selbst stammt. Wenn Themen deaktiviert sind oder 'UseLatestCommonDialogs = false ', ruft sie' CreateMessageDialog() 'stattdessen auf, was eine benutzerdefinierte VCL' TForm' erzeugt. Sie können 'CreateMessageDialog()' direkt aufrufen und dann 'TForm' so anpassen, wie Sie wollen –

+0

Warum verwenden Sie' AnsiString' in XE? Sie sollten stattdessen 'UnicodeString' verwenden, insbesondere wenn' CModalWndManager :: ShowMessageBox() 'intern ein VCL-Dialogfeld verwendet. –

+0

@RemyLebeau Vielen Dank für Ihre Antwort ... Wirklich zu schätzen ... Ich habe CreateMessageDialog und modifizierte TForm-Eigenschaft nach Bedarf .. und es funktioniert .. Danke aus Indien. –

Antwort

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

Ich weiß, dass der Artikel das zeigt, aber die Verwendung von 'dynamic_cast' ist unnötig. Wenn Sie nach einem Ja-Knopf fragen, erhalten Sie einen, und 'FindComponent()' gibt NULL nicht zurück. Da Sie wissen, dass ein 'TButton' verwendet wird, können Sie stattdessen' static_cast' verwenden und die NULL-Prüfung auslassen. Gleiches mit den anderen Tasten –