Question:
How can I make an accelerator character work for a Tabsheet?
I put accelerator characters in the captions for each Tabsheet of a
PageControl, but when I try to tab the pages using accelerator key,
it beeps and does nothing.
Answer:
The following example demonstrates trapping the CM_DIALOGCHAR
message to surface the accelerator messages for the tab sheets of
a PageControl.
Example:
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;