请教各位高手 怎样屏蔽掉Memo控件的键盘事件

解决方案 »

  1.   

    procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
    begin
       key:=#0;
    end;
      

  2.   

    那何不如用STRINGLIST+N个LABEL,或者用STRINGLIST管理,用PAINTBOX之类的来显示算了.
    还可以把字符画的很精彩,是不?呵呵.反正没键盘时间,没输入.
      

  3.   

    Memo1.ReadOnly := true;
    or
    Memo1.Enabled := false;
      

  4.   

    procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
    begin
    key:=chr(0);
    end;
      

  5.   

    屏蔽键盘事件?那鼠标事件呢?呵呵
    如果是只读,则设置ReadOnly,如果要禁用,则Enabled := False;
      

  6.   

    procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
    begin
      key:=#0;
    end;
      

  7.   

    还不满意啊?????那就是你说的清楚了。。
    我看这个样子吧
    TMyMemo=class(TMemo)
     
      protected
        procedure WndProc(Var Msg:TMessage);override;
    ........
    TMyMemo.WndProc(var Msg:Tmessage);
    begin
     if Msg.Message=WM_KEYXXXXX
     //在这里判断所有的键盘消息,,不做任何动作。你看行不行?????
    end;
      

  8.   

    其实也不一定要自己写控件,省事一些:TForm1=class(TForm)
    protected
      OldMemoWndProc : TWndMethod;
      procedure NewMemoWndProc(Var Msg:TMessage);override;
    public
      constructor Create(AOwner : TComponent); override;//用OnCreate事件也行
    ........
    end;constructor Create(...);
    begin
      inherited;
      OldMemoWndProc := Memo1.WindowProc;
      Memo1.WindowProc := NewMemoWndProc;
    end;TForm1.NewMemoWndProc(var Msg:Tmessage);
    begin
      if Msg.Message=WM_KEYXXXXX then ...
      else OldMemoWndProc(Msg);
    end;