Iniditor (Delhpi) №2 — Горячие клавиши

Автор: | 20.08.2018

На этот раз я покажу как реализовать в своей программе горячие клавиши и сохранять их значения.

Чтобы указать элементу меню его ShortCut, надо, как ни странно,  изменить свойство ShortCut.

Это можно сделать одной строчкой кода:


MainMenu1.mniTest.ShortCut := TextToShortCut('Ctrl+O');

Это свойство есть только у Main Menu и Popup Menu!

 

Также я добавил возможность менять стандартный ShortCut, с помощью компонента THotKey. Его свойство HotKey является сочетанием клавиш, и пользователь с лёгкостью может менять его. Чтобы задать ShortCut через HotKey, нужно написать следующее:


MainMenu1.mniTest.ShortCut := HotKey1.HotKey;

Сохраняю я эти настройки с помощью ини файлов. Так как сами по себе ини файлы не позволяют записывать и считывать ShortCut, я создал свои функции: WriteShortCut и ReadShortCut. Вот собственно и они:


procedure TMyIni.WriteShortCut(const Section, Ident: string; const Value: TShortCut);
var
res: string;
begin
res := ShortCutToText(Value); //Сначала переводим значение в string
WriteString(Section, Ident, res); //Вот теперь записываем его обычным способом
end;



function TMyIni.ReadShortCut(const Section, Ident: string; const Default: TShortCut): TShortCut;
var
def, res: string;
begin
def := ShortCutToText(Default); //Переводим значение по умолчанию в string
res := ReadString(Section, Ident, def); //Читаем значение в res
Result := TextToShortCut(res); //Переводим res в Результат
end;

 

Теперь, когда нужно сохранить настройки пишем:


MyIni.WriteShortCut('Section', 'Ident', HotKey1.HotKey);

Iniditor (Delhpi) №2 — Горячие клавиши: 1 комментарий

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.