В приведенном ниже коде показана реализация такого компонента. Наследник TPageControl осуществляет захват и обработку сообщения CM_DIALOGCHAR. Это позволяет перехватывать комбинации клавиш, которые могут быть акселератороми для данной формы. Обработчик со бытия CMDialogChar использует функцию IsAccel, которая позволяет определить, имеет ли отношение перехваченный код клавиш к акселератору одной из страниц TPageControl. В этом случае делаем страницу активной и передаем ей фокус.
Code: |
unit tapage;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls;
type
TAPageControl = class(TPageControl) private procedure CMDialogChar(var Msg: TCMDialogChar); message CM_DIALOGCHAR; end;
procedure Register;
implementation
procedure TAPageControl.CMDialogChar(var Msg: TCMDialogChar); var i: Integer; S: string; begin if Enabled then for I := 0 to PageCount - 1 do if IsAccel(Msg.CharCode, Pages[i].Caption) and Pages[I].TabVisible then begin Msg.Result := 1; ActivePage := Pages[I]; Change; Exit; // выход из цикла. end; inherited; end;
procedure Register; begin RegisterComponents('Test', [TAPageControl]); end;
end. |
- << Назад
- Вперёд
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!