Preventing the user from selecting text in a Memo control
Copyright © 2000 Ernesto De Spirito
![]() |
The easiest way would be to set the Enabled property of
the Memo (or Edit) control to False so
that the control cannot receive events. This drawback to this method is the
user won't be able to scroll the text and the disabled text looks bad.
If we want to prevent the user from writing in the memo, we set
its ReadOnly property to True.
To prevent the user from selecting text with the mouse, we generate the
handler of the OnMouseMove event of the control and write the
following code:
procedure TForm1.Memo1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then
Memo1.SelLength := 0;
end;
In order to prevent the user from performing a selection using the
keyboard, we generate the handlers of
the KeyDown and KeyUp events, assigning
the OnKeyDown and OnKeyUp properties to the
same procedure:
procedure TForm1.Memo1KeyDownUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (ssShift in Shift) and (Key in [VK_LEFT, VK_RIGHT, VK_UP,
VK_DOWN, VK_PRIOR, VK_NEXT, VK_HOME, VK_END]) then
Key := 0;
end;
![]() |



