diff --git a/lcl/buttons.pp b/lcl/buttons.pp index 6a2515d01e..a3b7745796 100644 --- a/lcl/buttons.pp +++ b/lcl/buttons.pp @@ -303,6 +303,7 @@ type FState: TButtonState; function GetNumGlyphs: Integer; procedure GlyphChanged(Sender: TObject); + function DialogChar(var Message: TLMKey): boolean; override; procedure MouseEnter; override; procedure MouseLeave; override; procedure MouseDown(Button: TMouseButton; Shift: TShiftState; diff --git a/lcl/include/speedbutton.inc b/lcl/include/speedbutton.inc index d319ca7498..45d5ec38c4 100644 --- a/lcl/include/speedbutton.inc +++ b/lcl/include/speedbutton.inc @@ -402,6 +402,22 @@ Begin Invalidate; end; +function TCustomSpeedButton.DialogChar(var Message: TLMKey): boolean; +begin + Result := false; + + Assert(Message.Msg = LM_SYSCHAR, '*** Warning: non LM_SYSCHAR passed to TCustomSpeedButton.DialogChar ! ***'); + + if not FShowAccelChar then exit; + + if IsAccel(Message.CharCode, Caption) then + begin + Result := true; + Self.Click; + end else + Result := inherited DialogChar(Message); +end; + {------------------------------------------------------------------------------ Method: TCustomSpeedButton.Paint Params: none