如题,对评比某一个TEdit的剪切、复制、粘贴功能谢谢!中秋快乐

解决方案 »

  1.   

    原理很简单,Edit控件是收到系统发给它的WM_CUT,WM_PASTE,WM_COPY三个消息之后,才做相应的剪切板操作的。只要截获这三个消息,不让Edit控件处理它就可以禁止这三个操作了,参考下面代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
        FOldWndProc: TWndMethod;
      public
        { Public declarations }
        procedure NewWndProc(var Message: TMessage);
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.NewWndProc(var Message: TMessage);
    begin
      if (Message.Msg <> WM_CUT) and (Message.Msg <> WM_COPY) and
        (Message.Msg <> WM_PASTE) then
        FOldWndProc(Message);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      FOldWndProc := Edit1.WindowProc;
      Edit1.WindowProc := NewWndProc;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      Edit1.WindowProc := FOldWndProc;
    end;end.
      

  2.   

    我的做法是,使用popupmen,然后什么都不做!这样能限制右键的使用。但是不能限制Ctrl+C,Ctrl+V等组合键的使用!楼上的能限制组合键的使用吗?
      

  3.   

    无论是组合键还是菜单命令都禁止了。
    不过如果要阻止菜单的弹出,则要处理OnContextMenu事件,设Handled为True即可。