Возможно ли это? Например, Notepad ++ делает это, но просто попытка назначить его компонентам, таким как действия или элементы меню, не работает. Событие, назначенное ему просто не запускается.Используйте Ctrl +/как ярлык в программе Delphi
Итак, я взял свой вопрос в Google. Нада. Затем я попытался выполнить различные функции быстрого вызова, в этом случае TextToShortCut и ShortCutToText.
Первый из них, TextToShortCut, преобразует такие вещи, как 'Ctrl + A' (строка) к следующему значению 16bit:
(uint)A | (uint)Ctrl
Работает хорошо, в основном. Однако я заметил следующую странность:
// Try converting back and forward...
TextToShortCut('Ctrl+/') = 16495
// That's incorrect. It should be:
Ord('/') or scCtrl = 16431
// Incorrect too
ShortCutToText(16495) = 'Ctrl+/'
// This is the shortcut the first line actually creates (Ctrl+o)
Ord('o') or scCtrl = 16495 // wut?
// Which is invalid, cause only caps are used
ShortCutToText(16431) = ''
Что здесь происходит? На данный момент я считаю, что ошибка заключается в финальной части TextToShortCut: после обработки части перед знаком + (в этом случае «Ctrl») она попытается найти ярлык для оставшейся части («/»). Однако в его текущей форме часть после + также должна быть допустимой ярлыкой сама по себе.
for Key := $08 to $255 do { Copy range from table in ShortCutToText }
if AnsiCompareText(Text, ShortCutToText(Key)) = 0 then
begin
Result := Key or Shift;
Exit;
end;
Таким образом, потому что:
ShortCutToText('/') = 0 (failure)
MapVirtualKey('/',MAPVK_VK_TO_VSC) = 0 (failure)
... петля не удается обнаружить '/' в качестве действительного ярлыка.
Это какая-то ошибка VCL или я что-то упускаю?
Вот доказательство концепции (да, я беру скриншоты кода, но затирания это вместе с палитры компонентов будет быстрее, чем с помощью этого кода непосредственно):
Edit 1:
Edit 2:
Ручное назначение 16431 к пункту меню не работает.
Работы отлично здесь. Хотя только на клавише '/', который является частью numpad. Но вот что делает npp. Его восстановление ярлыка масштабирования отображается на 'Ctrl + Num /' –
Notepad ++ использует обычный (слева от Shift на US International) для перехода к началу слова в карете тоже. – Orwell