delphi 禁止用键盘左右箭头,去切换PageControl页签


本文整理自网络,侵删。

 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure EditWndProc(var Message: TMessage);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  EditHandle: THandle;
  EditPointer:Pointer;
  

implementation

{$R *.dfm}

procedure TForm1.EditWndProc(var Message: TMessage);
begin
  case Message.Msg of
      WM_KEYDOWN  :                          //如果是按键消息
      begin
        if Message.WParam in [37,39] then   //如果是左右箭头
          Exit;
      end;
   end;
   Message.Result:=CallWindowProc(EditPointer, EditHandle, Message.Msg, Message.WParam, Message.LParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
Var P:Pointer;
begin
  EditHandle:=PageControl1.Handle;
  if EditHandle<>0 then
  begin
    EditPointer := Pointer(GetWindowLong(EditHandle, GWL_WNDPROC));
    P := Classes.MakeObjectInstance(EditWndProc);
    SetWindowLong(EditHandle, GWL_WNDPROC, Longint(P));
  end;
end;


end.

相关阅读 >>

Delphi 消息实现窗口最小化,最大化,关闭(Delphi)

Delphi tstrings 随机打乱

Delphi sender 的用法举例

Delphi append 追加内容到文件中

Delphi dbnavigator1 模拟点击

winapi 字符及字符串函数(8): ischarupper - 是否是个大写字母

Delphi 延时的4种方法

Delphi 如何按下esc键退出程序

Delphi 脉搏波9808血压计读取测试程序

Delphi high 返回数组下标的最大值

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...