2013-07-22 3 views
1

Я использую следующее, чтобы показать сообщение, в котором я хотел бы, чтобы какая-либо информация была сгруппирована с использованием символа TAB. Это нормально работает в Windows XP, но не в Windows 7 (у меня нет Windows 8 для тестирования).Как вставить рабочий символ TAB в Windows 7?

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

Какие еще существуют варианты, если это невозможно исправить для работы с Windows 7?

Delphi XE3

+2

Я всегда предпочитаю настоящий Windows API 'MessageBox'' ShowMessage'. Подсказка: '# 9' опрят, чем' Chr (9) '. Используя '#', вы также можете опустить оператор '+' рядом с строковыми * литералами *. –

+1

Что вы ожидаете от персонажа табуляции? –

+0

@DavidHeffernan, вероятно, просто с консолью - добавьте пробелы до следующей позиции mod-8. Который в любом случае дал бы ему правильное выравнивание из-за того, что стандартные шрифты были пропорциональными. –

ответ

1

Другой вариант использования ShowMessageFmt или с помощью функции format явно перед вызовом ShowMessage.

Но из-за невыполнения шрифтов по умолчанию, а не фиксированной ширины, это все равно не приведет к точному выравниванию.

.

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 ]); 
+0

Мне придется отдать это завтра – OZ8HP

+1

@Arioch, это не поможет. Если вы находитесь в Windows 7, а переменная 'UseLatestCommonDialogs' - True, то функция' TaskDialogIndirect' внутренне называется. И эта функция, похоже, игнорирует TAB. – TLama

+0

@TLama 1), и если установить его перед вызовом? это может быть альтернативой, а также правильным ответом! 2) Где я использую TAB? –