Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Вниз

Наследник 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
1-20036
Seldon
2003-06-25 00:36
2003.07.07
Как сообщить о DblClick


6-20179
LOX
2003-05-01 14:09
2003.07.07
Как сделать команду поиск по текущей странице для компонента TWeb


1-20108
BlackSun
2003-06-23 15:07
2003.07.07
Наследник TMemo


3-19999
tramp
2003-06-11 17:22
2003.07.07
Заполнение таблицы(TADOTable) информацие из потока(TADOQuery)


14-20244
Sergey128
2003-06-19 17:16
2003.07.07
dll-ки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский