TPageControl, расположенный на закладке Win95 палитры компонентов, в настоящий момент не может работать с акселераторами. Тем не менее, в наших силах создать потомок TPageControl, поддерживающий вышеназванную характеристику.
В приведенном ниже коде показана реализация такого компонента. Наследник TPageControl осуществляет захват и обработку сообщения CM_DIALOGCHAR. Это позволяет перехватывать комбинации клавиш, которые могут быть акселератороми для данной формы. Обработчик со
бытия CMDialogChar использует функцию IsAccel, которая позволяет определить, имеет ли отношение перехваченный код клавиш к акселератору одной из страниц TPageControl. В этом случае делаем страницу активной и передаем ей фокус.
unit tapage;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, ComCtrls;
type
TAPageControl = class(TPageControl)
privateprocedure CMDialogChar(var Msg: TCMDialogChar); message CM_DIALOGCHAR;
end;
procedureRegister;
implementationprocedure TAPageControl.CMDialogChar(var Msg: TCMDialogChar);
var
i: Integer;
S: string;
beginif Enabled thenfor I := 0 to PageCount - 1 doif IsAccel(Msg.CharCode, Pages[i].Caption) and
Pages[I].TabVisible thenbegin
Msg.Result := 1;
ActivePage := Pages[I];
Change;
Exit; // выход из цикла.end;
inherited;
end;
procedureRegister;
begin
RegisterComponents("Test", [TAPageControl]);
end;
end.
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Клавиши-акселераторы для TPageControl", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!