На форме я имею группу радиокнопок. Я хотел бы вызывать
контекстно-зависимую подсказку, если пользователь нажал F1. Для данной
конкретной группы радиокнопок я установил HelpContext равным 22, но при любом
вызове ActiveControl.HelpContext это возвращает (0). Все другие элементы
управления работают как положено. Что я делаю неправильно?
Нет. Проблема в том, что ActiveControl - RadioButton, а не RadioButtonGroup.
Поместите следующий код в обработчик события формы OnShow, он должен решить вашу
проблему:
procedure TForm1.FormShow(Sender: TObject);
var
c: integer;
beginwith RadioGroup1 dobeginfor c := 0 to ControlCount - 1 do
TRadioButton(Controls[c]).HelpContext := HelpContext;
end;
end;
Here's the translation:
Классическая ошибка!
Проблема в том, что ActiveControl возвращает текуще активное управление, а в вашем случае это радио-кнопка, а не группа радиокнопок (RadioGroup). Поэтому, когда вы вызываете ActiveControl.HelpContext, она пытается получить контекст справки для одиночной радиокнопки, а не для всей группы.
Чтобы исправить это, вам нужно проходить через управления внутри RadioGroup и устанавливать индивидуальные свойства HelpContext для каждого из них. Это именно то, что делает предоставленный код:
procedure TForm1.FormShow(Sender: TObject);
var
c: integer;
begin
with RadioGroup1 do
begin
for c := 0 to ControlCount - 1 do
TRadioButton(Controls[c]).HelpContext := HelpContext;
end;
end;
Вот, что код делает:
Он проходит через все управления (ControlCount) внутри RadioGroup.
Для каждого управления он кастит его в TRadioButton (поскольку это часть группы).
Он устанавливает свойство HelpContext для этой индивидуальной радиокнопки.
Таким образом, вы обеспечиваете, что каждая радиокнопка в группе имеет установленное свойство HelpContext.
Поместите этот код в обработчик события OnShow вашей формы, и вы должны сможете вызывать контекстно-зависимые подсказки при нажатии клавиши F1, когда пользователь фокусируется на одной из радиокнопок в группе.
Группа радиокнопок и ActiveControl: в статье рассмотрен способ вызова контекстно-зависимой подсказки для группы радиокнопок, установив HelpContext для каждого отдельного radio-кнопки.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS