Tabキーの動作をインターセプトする場合は、CM_DIALOGKEY
メッセージをキャッチする必要があります。あなたがTrueにYouWantToInterceptTab
ブール値を設定する場合は、この例では、TAB
キーが食べれます。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
private
YouWantToInterceptTab: Boolean;
procedure CMDialogKey(var AMessage: TCMDialogKey); message CM_DIALOGKEY;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.CMDialogKey(var AMessage: TCMDialogKey);
begin
if AMessage.CharCode = VK_TAB then
begin
ShowMessage('TAB key has been pressed in ' + ActiveControl.Name);
if YouWantToInterceptTab then
begin
ShowMessage('TAB key will be eaten');
AMessage.Result := 1;
end
else
inherited;
end
else
inherited;
end;
end.
'TAB'keyが次のコントロールにフォーカスを移動し、キーであることを意図しているので、彼らが解雇されていませんしたがって、特別な取り扱いがあります。 – TLama
TLamaに感謝します。その動作を説明します。だからあなたは脱出ルートがあると思いますか? – Jako
http://delphi.about.com/cs/adptips2002/a/bltip0702_5.htm –