Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как убрать курсор в Memo?

7.0K
07 января 2005 года
senser
24 / / 22.10.2004
Как убрать курсор в Memo?
10
08 января 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by senser
Как убрать курсор в Memo?


Вроде HideCaret(Memo1.Handle);

301
08 января 2005 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by senser
Как убрать курсор в Memo?

HideCaret(Memo1.Handle); - у меня не сработало.
Если ты хочешь убрать курсор мышки, то измени Memo1.Cursor=crNone; Если ты хочешь избавиться от курсора ввода текста - Memo1.Enabled=false; Только теперь пользователь не сможет редактировать / копировать содержимое Memo.

7.0K
08 января 2005 года
senser
24 / / 22.10.2004
Цитата:
Originally posted by lord Kelvin
Если ты хочешь избавиться от курсора ввода текста - Memo1.Enabled=false; Только теперь пользователь не сможет редактировать / копировать содержимое Memo.



HideCaret(Memo1.Handle); - у меня сработало.
Когда делаешь Memo1.Enabled=false; то цвет текста становиться серый . Можно ли поменять цвет текста?

301
08 января 2005 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by senser


HideCaret(Memo1.Handle); - у меня сработало.
Когда делаешь Memo1.Enabled=false; то цвет текста становиться серый . Можно ли поменять цвет текста?


Наверное, HideCaret рабоатет только в Дельфи.
Вариант в onEnter твоего Memo написать ActiveControl=Form1; То есть, когда мемо становиться активным - мы делаем активной нашу форму (или что угодно другое). Вот.

10
09 января 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by lord Kelvin
То есть, когда мемо становиться активным - мы делаем активной нашу форму (или что угодно другое). Вот.


Это уже саботаж против ничего не подозревающего пользователя. Вот.

А вообще, зачем такой изврат? Что вообще требуется сделать по первоначальной задаче?

621
09 января 2005 года
Бешеный кролик
151 / / 23.03.2004
Мне в свое время тоже нужно было убрать в Memo курсор. Раздражало. Т.е. Мемо сделано ReadOnly, а при клике на него курсор все равно мигает.
Сначала я попробовал HideCaret, при этом курсор исчезает, но при клике на мемо появляется снова.
Если вставить HideCaret в обработчик клика, курсор все равно успевает мигнуть. В конце-концов сделал я так (привожу в сишной нотации):

Я создал свой компонент, унаследовав его от TRichEdit (ты от мемо наследуй) и такой код написал:

__fastcall TMyFormulaEdit::TMyFormulaEdit(TComponent* Owner)
: TRichEdit(Owner)
{
WindowProc=WndProc1;
}
//---------------------------------------------------------------------------


void __fastcall TMyFormulaEdit::WndProc1(Messages::TMessage &Message)
{
if ((Message.Msg == WM_SETFOCUS)&&(ReadOnly)) return;
WndProc(Message);

}

В этом случае и с цветом текста проблема решается. Т.е. ты не делаешь Мемо.Enabled:=false, вместо этого Мемо.ReadOnly:=true (оно точно также не будет ни на что реагировать и курсора там не будет). А при Мемо.ReadOnly:=true вполне можно менять цвет.
621
09 января 2005 года
Бешеный кролик
151 / / 23.03.2004
Глюк убит.
7.0K
09 января 2005 года
senser
24 / / 22.10.2004
Цитата:
Originally posted by Бешеный кролик
Я создал свой компонент, унаследовав его от TRichEdit (ты от мемо наследуй) и такой код написал:

__fastcall TMyFormulaEdit::TMyFormulaEdit(TComponent* Owner)
: TRichEdit(Owner)
{
WindowProc=WndProc1;
}
//---------------------------------------------------------------------------


void __fastcall TMyFormulaEdit::WndProc1(Messages::TMessage &Message)
{
if ((Message.Msg == WM_SETFOCUS)&&(ReadOnly)) return;
WndProc(Message);

}


Можно как-нибудь по подробней, а то я ничего не понял??? Я ни разу не создавал свои компоненты, поэтому лучше с примерчиком который можно отправить [EMAIL=senser@elsite.ru]сюда[/EMAIL].

621
09 января 2005 года
Бешеный кролик
151 / / 23.03.2004
Цитата:
Originally posted by senser

Можно как-нибудь по подробней, а то я ничего не понял??? Я ни разу не создавал свои компоненты, поэтому лучше с примерчиком который можно отправить [EMAIL=senser@elsite.ru]сюда[/EMAIL].



Как делаются компоненты читай в книжке. Если я пришлю тебе исходник, он ничего не проиллюстрирует.
Тем более он у меня для Билдера, а в Delphi я их не создавал.
В принципе, это очень просто, компонент делается в два-три клика. Тебе нужно сделать компонент-наследник TMemo.
Далее ты просто подменяешь процедуру WindowProc, т.е. процедуру, которая обрабатывает все поступившие в твой компонент оконные собщения.

Вот новая процедура:

void __fastcall TMyFormulaEdit::WndProc1(Messages::TMessage &Message)
{
if ((Message.Msg == WM_SETFOCUS)&&(ReadOnly)) return;
WndProc(Message);
}

В ней условие - если поступило сообщение WM_SETFOCUS, т.е. если фокус передается в твой компонент и в то же время установлено свойстов ReadOnly=true, то происходит выход из функции без дальнейшей обработки сообщения. Во всех других случаях это сообщение обрабатывается как обычно. Вот и все. Используешь свой компонент наряду со стандартными в своей программе.
Потрать полчаса на изучение компонентов - тебе откроются новые горизонты.

77K
23 ноября 2011 года
Apple_green
1 / / 23.11.2011
Можно просто HideCaret(Memo1.Handle); прописать на Таймер и интервал поставить 1
14
23 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
Цитата: Apple_green
Можно просто HideCaret(Memo1.Handle); прописать на Таймер и интервал поставить 1


Не надо таймер, не надо HideCaret, не надо поднимать темы 6-летней давности.
Надо не давать фокуса Memo и все.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог