![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перехват конекстной F1
Алексей Петухов © (2005-05-04 06:22:00)Здравствуйте, уважаемые мастера.
Необходима помошь или совет.
Есть необходимость в перехвате события 'нажатие <F1>'. Т.е. получения значения 'HelpContext' контрола на котором была нажата 'F1'. И затем, при каких-то условиях, 'не пустить' сообщение дальше (что-бы Хелп по умолчанию не вылезал), или оставить как есть (что-бы вылез).
Заранее благодарю за помощь.
Eraser (2005-05-08 12:37:00) [1]Алексей Петухов
Очень советую следующий набор компонентов
http://www.ec-software.com/index.html
Алексей Петухов (2005-05-08 09:34:00) [2]Спасибо. Супер!
Толчек хороший :-)
Будем мысль разввать.
КиТаЯц (2005-05-04 15:59:00) [3]Вот чего-то тут навоял...
procedure TForm1.ApplicationEventsShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
if (Msg.CharCode = VK_F1) then DoHelpNow(Self, 0, 2);
end;
procedure TForm1.DoHelpNow(Sender: TObject; ContextFrom: integer = 0; ContextTo: integer = 1);
var HCon: Integer;
CurControl: TWinControl;
NowFormActive: tForm;
i: Integer;
begin
NowFormActive:= Application.MainForm;
for I:= 0 to Application.ComponentCount-1 do begin
//showmessage (Application.Components[i].Name);
if (Application.Components[i] is TForm)
then begin
if tForm(Application.Components[i]).Active
then begin
NowFormActive:= tForm(Application.Components[i]);
//showmessage(NowFormActive.Caption);
break;
end;
end;
end;
CurControl := NowFormActive.ActiveControl;
HCon:= CurControl.HelpContext;
//showmessage(inttostr(CurControl.HelpContext)+' | '+CurControl.Name);
if (HCon in [ContextFrom..ContextTo])
then begin
Application.HelpFile:='Standart.hlp';
showmessage('Типа вызвали стандартную справку');
end
else begin
Application.HelpFile:= '';
showmessage('Типа вызвали админскую справку');
//...
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnShortCut:= ApplicationEventsShortCut;
end;
На гениальность не претендую, да и доделывать еще надо. Может на "правильные" мысли натолкнет...
Алексей Петухов (2005-05-04 13:28:00) [4]Цель такова:
есть в БД табличка с текстами "горячей" справки, которую заполняет администратор. И если пользователь жмет в клиенской части на f1 и "горячая" справка имеется, то от видит ее, иначе вызывается стандартный файл справки для текущего контекста.
Cobalt (2005-05-04 13:08:00) [5]2 Алексей Петухов
А какова цель данной манипуляции?
Алексей Петухов (2005-05-04 12:42:00) [6]Мне надо для всего приложения.
КиТаЯц (2005-05-04 10:07:00) [7]Честно говоря не пойму зачем это надо... Горячих клавиш не хватает? ;)
Соображения:
У Application, как и у tForm есть событие OnHelp. "Какими-то условиями" переопредели обработчик собития.
Алексей Петухов (2005-05-04 09:05:00) [8]Соображения имеются?