Советы по Delphi

         

Прерывание клавиши Tab


Единственное место в программе, где можно перехватить нажатие клавиши tab - в обработчике Application.OnMessages. Пример ниже:

unit Hndltabu;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
typeTForm1 = class(TForm)Edit1: TEdit;Edit2: TEdit;Label1: TLabel;procedure FormCreate(Sender: TObject);private { Private-Deklarationen }procedure AppMessage(var Msg: TMsg; var Handled: Boolean);public { Public-Deklarationen }end;
varForm1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);constshiftPressed: boolean = false;beginif Msg.Message = WM_KEYDOWN thenif not shiftPressed and (Msg.wParam = VK_SHIFT) thenbeginshiftPressed := true;Exit;endelsebeginif Msg.wParam = VK_TAB thenif ActiveControl = Edit1 then beginif shiftPressed thenLabel1.Caption := 'BACKTAB!'elseLabel1.Caption := 'TAB!';
Handled := trueendelseLabel1.Caption := '';
shiftPressed := false;end;end;
procedure TForm1.FormCreate(Sender: TObject);beginApplication.OnMessage := AppMessage;end;
end.

- Ralph Friedman [000956]



Содержание раздела