Имитировать F1 kepress на активном управлении, чтобы загрузить справочную систему - Delphi - PullRequest
0 голосов
/ 07 февраля 2012

Мы добавляем кнопку справки на панель инструментов нашего приложения.

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

Например, если они находятся в адресной строке формы контактов, мне нужно загрузить справочную систему для этого, используя ее контекстный идентификатор

. Я думал о попытке имитировать нажатие клавиши F1, которое затем позаботится оэлемент context id вещей и загрузка файла справки

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

Есть ли способ сделать это?По сути, мне нужно отправить нажатие клавиши F1 от ранее активного элемента управления (при условии, что текущим активным элементом управления является кнопка панели инструментов)

Мы используем Delphi 2010

Приветствия

Пол

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Что-то не так с вашей панелью инструментов.Системная панель инструментов обычно не фокусируется - она ​​никогда не является активным элементом управления.Если вы используете настоящие TToolBar и TToolButton, у вас не будет этой проблемы.Даже TSpeedButton не будет иметь этой проблемы.Используйте правильный элемент управления для задания.

Кроме того, не пытайтесь «симулировать» событие клавиатуры.Просто позвоните Application.HelpContext напрямую.

2 голосов
/ 07 февраля 2012

Я думаю, вам нужен обработчик кнопки OnClick, который может быть таким простым:

procedure TMyForm.ToolButton1Click(Sender: TObject);
begin
  if Assigned(ActiveControl) then begin
    Application.HelpContext(ActiveControl.HelpContext);
  end;
end;

То, что делает эту работу, заключается в том, что элементы управления на панели инструментов никогда не становятся активнымиуправление.

...