Delphi 截取TAB键并抑制它
我需要截取TEDIT上的制表键笔划,并以编程方式抑制它们。 在某些情况下,我不希望焦点更改为下一个控件 我尝试在TEdit级别和TForm上使用KeyPreview=true来处理KeyPress和KeyDown。 我从以下几方面得到了一些建议:Delphi 截取TAB键并抑制它,delphi,keyboard,delphi-7,Delphi,Keyboard,Delphi 7,我需要截取TEDIT上的制表键笔划,并以编程方式抑制它们。 在某些情况下,我不希望焦点更改为下一个控件 我尝试在TEdit级别和TForm上使用KeyPreview=true来处理KeyPress和KeyDown。 我从以下几方面得到了一些建议: 但它不起作用。 这些事件是针对Enter键而不是TAB键触发的 我用的是Delphi7。 谢谢您的帮助。如果您想拦截TAB键行为,您应该捕获CM\u DIALOGKEY消息。在本例中,如果将YouWantToInterceptTab布尔值设置为
谢谢您的帮助。如果您想拦截TAB键行为,您应该捕获
CM\u DIALOGKEY
消息。在本例中,如果将YouWantToInterceptTab
布尔值设置为True,则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.
它们不会被触发,因为
选项卡
键是用来将焦点移动到下一个控件的键,因此它有一个特殊的处理。谢谢你。对这种行为进行了解释。那么你认为,有逃生路线吗?亲爱的特拉玛,这真是太好了。有史以来最佳剪切和粘贴;)