Следующий пример демонстрирует перехват сообщения CM_DIALOGCHAR на уровне формы. Это даст нам возможность реагировать на диалоговые комбинации клавишь только, если нажата клавиша Alt, не давая тем самым отработать стандартному обработчику.
Code: |
type TForm1 = class(TForm) Button1: TButton; StringGrid1: TStringGrid; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); begin Button1.Caption := 'E&xit'; end;
procedure TForm1.Button1Click(Sender: TObject); begin Application.Terminate; end;
procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin ShowMessage('Grid keypress = ' + Char(Key)); Key := 0; end;
procedure TForm1.CMDialogChar(var Message: TCMDialogChar); begin if ssAlt in KeyDataToShiftState(Message.KeyData) then inherited; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!