Как использовать клавишу-акселератор в TTabsheets? Я добавляю клавишу-акселератор в заголовок каждого Tabsheet моего PageControl, но при попытке переключать страницы этой клавишей программа пикает и ничего не происходит.

 

Можно перехватить сообщение CM_DIALOGCHAR.

Code:

type

TForm1 = class(TForm)

   PageControl1: TPageControl;

   TabSheet1: TTabSheet;

   TabSheet2: TTabSheet;

   TabSheet3: TTabSheet;

private

{Private declarations}

   procedure CMDialogChar(var Msg: TCMDialogChar);

     message CM_DIALOGCHAR;

public

{Public declarations}

end;

 

var

Form1: TForm1;

 

implementation

{$R *.DFM}

 

procedure TForm1.CMDialogChar(var Msg: TCMDialogChar);

var

i: integer;

begin

with PageControl1 do

   begin

     if Enabled then

       for i := 0 to PageControl1.PageCount - 1 do

         if ((IsAccel(Msg.CharCode, Pages[i].Caption)) and

           (Pages[i].TabVisible)) then

           begin

             Msg.Result := 1;

             ActivePage := Pages[i];

             exit;

           end;

   end;

inherited;

end;

©Drkb::01160

Взято из

DELPHI VCL FAQ Перевод с английского  

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

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

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

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


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