Содержание материала

В приведенном ниже коде показана реализация такого компонента. Наследник 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.

 

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

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить