![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как убрать курсор в TMemo [D6, Win95/98, Win2k, WinXP]
saNat © (2004-10-14 02:12:00)Доброго времени суток...
Свойство ReadOnly выключает только редактирование. Подскажите, пожалуйста, как убрать курсор из TMemo.
С уважением...
1008 (2004-10-14 10:41:00) [1]Вот компонент, фактически TMemo, но при включении ReadOnly убирает курсор:
unit WCMemo;
interface
uses
Windows,
Messages,
SysUtils,
Classes,
Controls,
StdCtrls;
type
TWCMemo = class(TMemo)
private
{ Private declarations }
FReadOnly:boolean;
procedure SetRead(const value:boolean);
procedure WMPaint(var Msg: TMessage); message WM_Paint;
procedure WMSetFocus(var Msg: TMessage); message WM_SetFocus;
procedure WMNCHitTest(var Msg: TMessage); message WM_NCHitTest;
procedure WMKEYDOWN(VAR Message: TMessage); message WM_KEYDOWN;
procedure CreateParams(var Params: TCreateParams); override;
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
property ReadOnly:boolean read FReadOnly write SetRead;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TWCMemo]);
end;
{ TWCMemo }
procedure TWCMemo.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WindowClass.hCursor := LoadCursor(0, IDC_ARROW);
end;
procedure TWCMemo.WMKEYDOWN(var Message: TMessage);
var
Key:Integer;
begin
Key:= Message.WParamLo;
case Key of
vk_Up:
begin
Perform(EM_SCROLL, SB_LINEUP, 0);
Key:= 0;
end;
vk_Down:
begin
Perform(EM_SCROLL, SB_LINEDOWN, 0);
Key:= 0;
end;
end;
inherited;
if ReadOnly then HideCaret(Handle) else ShowCaret(Handle);
end;
procedure TWCMemo.WMNCHitTest(var Msg: TMessage);
begin
inherited;
if ReadOnly then HideCaret(Handle) else ShowCaret(Handle);
end;
procedure TWCMemo.WMPaint(var Msg: TMessage);
begin
inherited;
if ReadOnly then HideCaret(Handle) else ShowCaret(Handle);
end;
procedure TWCMemo.WMSetFocus(var Msg: TMessage);
begin
inherited;
if ReadOnly then HideCaret(Handle) else ShowCaret(Handle);
end;
procedure TWCMemo.SetRead(const value:boolean);
begin
TMemo(self).ReadOnly:=value;
FReadOnly:=value;
end;
end.
GanibalLector (2004-10-14 02:24:00) [2]Самый простой способ это :
procedure TForm1.Memo1Enter(Sender: TObject);
begin
Имя компонента(визуального...например Panel) .Setfocus;
end;