【问题标题】:How to insert working TAB char on Windows 7?如何在 Windows 7 上插入工作 TAB 字符?
【发布时间】:2013-07-22 11:05:39
【问题描述】:

我使用以下内容显示一个消息框,我希望在其中使用 TAB 字符对齐一些信息。 这在 Windows XP 上运行良好,但在 Windows 7 上运行不正常(我没有要测试的 Windows 8)。

      ShowMessage(lSearch + sLineBreak +
                  'Breddegrad:  ' + Chr(9) + HAMInfo.Latitude + sLineBreak +
                  'Længdegrad:  ' + Chr(9) + HAMInfo.Longitude + sLineBreak +
                  'QRA locator: ' + Chr(9) + HAMInfo.Qra);

如果无法修复此问题以在 Windows 7 上运行,还有哪些其他选择?

德尔福 XE3

【问题讨论】:

  • 我总是更喜欢真正的 Windows API MessageBox 而不是 ShowMessage。提示:#9Chr(9) 更整洁。使用#,您还可以省略字符串literals 旁边的+ 运算符。
  • 你希望制表符做什么?
  • 就像 Andreas 建议的那样,you may use 原生 MessageBox 函数。
  • 我希望在制表符处对齐纬度、经度和 Qra 看起来会更好 我认为我认为奇怪的是,在 Windows XP 上,TAB 在那里,但在 Windows 7 上他们不是。
  • 这是因为内部调用了 TaskDialogIndirect 函数,它似乎并不关心 TAB。

标签: delphi tabs messagebox delphi-xe3


【解决方案1】:

另一种变体是在调用ShowMessage之前显式使用ShowMessageFmt或使用format函数。

但由于默认字体是成比例的而不是固定宽度的,它仍然不会导致精细的等对齐。

.

 ShowMessageFmt('%s'#13#10 + 
   '%-16s%s'#13#10 + '%-16s%s'#13#10 + '%-16s%s',
   [ lSearch , 'Breddegrad:', HAMInfo.Latitude, 
               'Længdegrad:', HAMInfo.Longitude,
               'QRA locator:', HAMInfo.Qra ] );

【讨论】:

  • 我明天必须试一试
  • @Arioch,这没有帮助。如果您在 Windows 7 上并且 UseLatestCommonDialogs 变量为 True,则内部调用 TaskDialogIndirect 函数。而且这个函数似乎忽略了 TAB。
  • @TLama 1) 以及是否在调用之前将其设置为 false ?这可能是另一种选择,也是正确的答案! 2) 我在哪里使用 TAB?
  • @TLama,我的小错字,如果我理解你的话。真的,你应该换个答案!
  • 为什么要@TLama 写一个答案?你的意思是为了有资格评论一个答案,你也应该写一个答案?
猜你喜欢
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 2011-09-11
  • 2012-07-04
相关资源
最近更新 更多