Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.07;
Скачать: CL | DM;

Вниз

Наследник TMemo   Найти похожие ветки 

 
BlackSun ©   (2003-06-23 15:07) [0]

Вопрос по наследованию. Есть TMemo. Задача - сделать так, чтобы при наведении
на Memo не менялся курсор, нельзя было бы вообще ничего выделять и не было бы
видно мигающего курсора.
Enabled:=false не подходит, потому что текст становится серым.
Помогите, как надо провести наследование...
Не надо говорить, чтобы использовать другой компонент и т.п. Задача
интересна в плане обучения.


 
Семен Сорокин ©   (2003-06-23 15:30) [1]

для начала переписать CreateParams


 
BlackSun ©   (2003-06-24 08:42) [2]

В CreateParams я смог изменить только курсор. Но как сделать, чтобы когда Enabled:=false, то цвет выводимого текста был черным, а не серым? Неужели никто не знает?


 
Song ©   (2003-06-24 09:07) [3]

Перекрывай его отрисовку. Вообще, если ты спрашиваешь, как такое сделать, то скорей всего, пока рано тебе это делать.


 
Sha ©   (2003-06-24 12:43) [4]

BlackSun © (23.06.03 15:07)
Положи TMemo на TPanel, у которой Enabled=false.


 
BlackSun ©   (2003-06-24 15:21) [5]

Ну пробовал я перекрывать его отрисовку, и чего? Мне придется самому все рисовать, учитывая, что есть всякие Scrollbar"ы...
Мне всего-лишь надо цвет поменять, а рисует он пусть сам...
Идеальным вариантом было бы, чтобы он не реагировал на нажатия мыши, пробовал писать событие для мыши, но все равно компонент реагировал и на мое событие и на другое.
И вообще, я прошу советов, но не в плане "тебе еще рано". Извините, а у кого же тогда учиться, если каждый будет говорить "думай сам"... это же форум, если я не ошибаюсь? По-моему тут помогать должны... а не отшивать.
2Sha:
Фишка с TMemo+TPanel - конечно классно... но есть одно "но"... хотелось бы, чтобы можно было листать текст вверх-вниз...


 
Семен Сорокин ©   (2003-06-24 15:26) [6]

BlackSun © (24.06.03 15:21)
Убери Color из published и задавай его хоть зеленым


 
Ru ©   (2003-06-24 15:35) [7]

Пpи установке ReadOnly у TMemo остается куpсоp, хотелось бы и его убpать.
Создаём наследника:
unit UnReL;

interface

uses comctrls, Windows, Messages, SysUtils, Classes, Controls, Forms, ShellAPI, stdctrls;

type

TLRichEdit = class(TMemo)
private
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;

end;

implementation

procedure TLRichEdit.WMPaint;
begin
inherited;
HideCaret(Handle);
end;

procedure TLRichEdit.WMSetFocus;
begin
inherited;
HideCaret(Handle);
end;

procedure TLRichEdit.WMNCHitTest;
begin
inherited;
HideCaret(Handle);
end;

PROCEDURE TLRichEdit.WMKEYDOWN(VAR Message: TMessage);
VAR Key: Integer;
begin
Key:= Message.WParamLo;

if Key = vk_Up then
begin
Perform(EM_SCROLL, SB_LINEUP, 0);
Key:= 0;
end;
if Key = vk_Down then
begin
Perform(EM_SCROLL, SB_LINEDOWN, 0);
Key:= 0;
end;
inherited;
HideCaret(Handle);
end;

end.

Видимо хочется мемо как в листере Тотала? :)


 
BlackSun ©   (2003-06-24 17:22) [8]

Спасибо всем за советы, особенно Ru
Вот как выглядит именно то, что я хотел...

unit NewMemo;

interface

uses comctrls, Windows, Messages, SysUtils, Classes, Controls, Forms, ShellAPI, stdctrls;

type

TLRichEdit = class(TMemo)
private
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;//добавил
end;

procedure Register;

implementation


procedure Register;
begin
RegisterComponents("Standard", [TLRichEdit]);
end;

procedure TLRichEdit.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WindowClass.hCursor := LoadCursor(0, IDC_ARROW);
end;

procedure TLRichEdit.WMPaint;
begin
inherited;
HideCaret(Handle);
end;

procedure TLRichEdit.WMSetFocus;
begin
// inherited; //изменил
HideCaret(Handle);
end;

procedure TLRichEdit.WMNCHitTest;
begin
inherited;
HideCaret(Handle);
end;

PROCEDURE TLRichEdit.WMKEYDOWN(VAR Message: TMessage);
VAR Key: Integer;
begin
Key:= Message.WParamLo;

if Key = vk_Up then
begin
Perform(EM_SCROLL, SB_LINEUP, 0);
Key:= 0;
end;
if Key = vk_Down then
begin
Perform(EM_SCROLL, SB_LINEDOWN, 0);
Key:= 0;
end;
inherited;
HideCaret(Handle);
end;

end.


 
Ru ©   (2003-06-24 17:33) [9]

>BlackSun © (24.06.03 17:22)

не за что, это я подсмотрел ;)



Страницы: 1 вся ветка

Текущий архив: 2003.07.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
14-20282
СержикБеленький
2003-06-20 12:57
2003.07.07
Ребата, помогите расчитать стоимость проекта.


14-20198
Тумар
2003-06-21 13:28
2003.07.07
Smartdrive - ускоряет ли он работу под WIN?


1-20132
picaroon
2003-06-25 08:07
2003.07.07
Palladin напиши пример на мой вопрос плз!


14-20221
EgorKA
2003-06-22 19:08
2003.07.07
Код клавиши - вверх...


11-20028
Alexander
2002-10-29 19:41
2003.07.07
После обновления до 1.56 не могу кинуть на форму KOLMHXP