Приведение TObject к TMenuItem и получение заголовка добавляет & к строке - PullRequest
0 голосов
/ 22 октября 2019

Итак, у меня есть очень простой код ниже. Я использую эту функцию в нескольких событиях onclick для передачи заголовка TMenuItems.

procedure TForm1.BtnClick(Sender: TObject);
begin
 TestFrm.MyVar:= TMenuItem(Sender).Caption;
 InteractiveSchedulerFrm.ShowModal;
end;

Однако результатом этого является то, что поле TestFrm.MyVar в конечном итоге включает в себя амперсанд, которого изначально не было, и всегда в кажущемся случайным месте.

Я временно исправил проблему, заменив все амперсанды в строке, но мне больше всего любопытно, что вызывает размещение амперсанда в строке.

Пример:

TMenuItem (Отправитель) .Caption = 'TEST';

TestFrm.MyVar = 'TE & ST' или '& TEST' и т. Д.

Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Амперсанд добавляется автоматически, потому что вы, вероятно, установили для свойства AutoHotKeys меню значение true (которое, я думаю, даже по умолчанию).

У вас есть две опции:

  1. Установите AutoHotkeys на false - или -
  2. Вызовите StripHotkey (из меню модуля), чтобы удалить его перед обработкой заголовка

Я бы, вероятно, пошел на 2, потому что вы никогда не знаете, есликто-то (в будущем вы) может не установить AutoHotkeys обратно в true.

0 голосов
/ 22 октября 2019

Амперсанды в заголовках TMenuItem используются для обозначения сочетаний клавиш для пунктов меню. Амперсанд появляется перед символом ярлыка и в некоторых случаях подчеркивает его, чтобы пользователь знал о ярлыке. Этот тип символов называется символом ускорения .

Например, TMenuItem с заголовком &TEST может быть вызван нажатием клавиши ALT + T, а TMenuItem с заголовкомTE&ST может быть вызвано нажатием клавиши ALT + S.

Если вы хотите, чтобы в заголовке пункта меню появлялся амперсанд, вам нужно будет экранировать его другим амперсандом (например, Bacon && Eggs). Вот ссылка на первый источник, который я нашел об этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...