MessageDlg在Delphi 10.3中无法识别'tab'字符(#9)

时间:2019-07-08 10:35:52

标签: string delphi tabs messagedialog

我正在尝试在MessageDlg中显示带有制表符的字符串。字符串内的选项卡无法识别并正确显示。我可以肯定它与MessageDlg有关,而不是与字符串本身有关,因为它可以正确显示在TRichEdit组件内部。

我尚未尝试在其他版本的Delphi中复制结果,这是到目前为止我发现的唯一相关文章:https://forums.embarcadero.com/message.jspa?messageID=710405

sInfo := #13 +  'Name:' + #9 + sName + #13 +
                 'Surname:' + #9 + sSurname + #13 +
                 'Address:' + #9 + sAddress + #13 +
                 'E-mail:' + #9 + sEmail + #13 +
                 'Phone:' + #9 + sCell;

iConfirm := MessageDlg('Add the following member info: ' + sInfo,
     mtConfirmation, mbYesNo, 0);

我希望该字符串显示在MessageDlg的2列中,但显示如下:'Name:Janrich'

2 个答案:

答案 0 :(得分:0)

您可以在设置UseLatestCommonDialogs := False;时使它正常工作-至少部分可以。看来您无法控制制表符的大小,这使结果有点不可靠。

答案 1 :(得分:-1)

可能的Tab characters no longer work in Delphi XE2 message dialogs - alternatives?副本

我个人将为此创建一个表单,其中包含一个只读的Memo控件。表单将使用ShowModal显示。这具有用户可以复制粘贴文本的优点。使用具有ModalResult属性的按钮,您还可以返回是/否结果。

sInfo := #13 +  'Name:' + #9 + sName + #13 +
                 'Surname:' + #9 + sSurname + #13 +
                 'Address:' + #9 + sAddress + #13 +
                 'E-mail:' + #9 + sEmail + #13 +
                 'Phone:' + #9 + sCell;

memoMessageBox := TMemoMessageBoxForm.Create;
try
  memoMessageBox.Memo1.Text := sInfo;
  dlgRes := memoMessageBox.ShowModal; // ModalResult
finally
  FreeAndNil(memoMessageBox);
end;

if dlgRes = mrYes then ...