Jak nie chcesz tworzyć swojego rozszerzenia komponentu TMemo to Subclassing czyli coś takiego:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
pOldMemoProc: Pointer;
pNewMemoProc: Pointer;
procedure MemoWndProc(var Msg: TMessage);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.MemoWndProc(var Msg: TMessage);
begin
if (Msg.Msg = WM_KEYDOWN) or (Msg.Msg = WM_LBUTTONDOWN) then
Msg.Result:= 0
else
Msg.Result:= CallWindowProc(pOldMemoProc, Memo1.Handle, Msg.Msg,
Msg.wParam, Msg.lParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
pNewMemoProc:= MakeObjectInstance(MemoWndProc);
pOldMemoProc:= Pointer(SetWindowLong(Memo1.Handle, GWL_WNDPROC, Integer(pNewMemoProc)));
end;
end.
EDIT//To zablokuje przewijanie myszką i klawiaturą