我正在尝试在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'
答案 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 ...