Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение компонента RichEdit 
V
    Опции темы
Uch3nik
  Дата 26.5.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 30.11.2006
Где: Москва

Репутация: нет
Всего: нет



Подскажите, как при работе с RichEdit создать для него события: OnMouseLeave и OnMouseEnter!? пробовал под RichEdit сунуть Label, где такое событие обрабатывавется, но не выходит =). Может можно как то сам компонент изменить??? Если можно... скажите как это сделать!?
PM MAIL   Вверх
Klin
Дата 26.5.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Цитата(Uch3nik @  26.5.2007,  18:04 Найти цитируемый пост)
 OnMouseLeave и OnMouseEnter!?

Uch3nik, имхо таких событий нет есть OnMouseMove - движение мыши на объекте, OnMouseDown - нажатие мыши и OnMouseUp - кнопка мыши отпущена. 

Цитата(Uch3nik @  26.5.2007,  18:04 Найти цитируемый пост)
ь Label, где такое событие обрабатывавется, но не выходит =)

Да откуда это событие вы взяли?


Цитата(Uch3nik @  26.5.2007,  18:04 Найти цитируемый пост)
Может можно как то сам компонент изменить??? Если можно... скажите как это сделать!?

А может сам компилятор переделаем?


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Uch3nik
  Дата 27.5.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 30.11.2006
Где: Москва

Репутация: нет
Всего: нет



Klin,  OnMouseLeave и OnMouseEnter - это события Label! Хочу сделать то же самое для RichEdit! 
Цитата
А может сам компилятор переделаем?
 - =)))) идея конечно не плохая... как тогда реализовать  событие, когда мыша находится над RichEdit!? Ну ведь как то это ж должно реализовываться?  smile 
PM MAIL   Вверх
Klin
Дата 27.5.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Че-то я ступил smile Ну OnMouseEnter - имхо аналог OnMouseMove, ну а второй можно эмулировать расположим действие OnMouseMove - на компоненте окружаещем RichEdit.

p.s. еще можно поискать компонент - с этими действиями (похожим на RIchEdit), но я такого не знаю :( Переделка компонента дела радикальное. Ну а идея про Label - посмотрим, что можно сделать smile


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Uch3nik
Дата 27.5.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 30.11.2006
Где: Москва

Репутация: нет
Всего: нет



бывает!  smile  Кстати, прошу обращаться на ты, а то слишком официально! Не, Label не реагирует, когда на нём ещё и RichEdit )) а всё ж, как изменить встроеный компонент Builder`а =), так для расширения кругозора...
PM MAIL   Вверх
Klin
Дата 27.5.2007, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Цитата(Uch3nik @  27.5.2007,  12:38 Найти цитируемый пост)
Кстати, прошу обращаться на ты, 

Многол экзаменов, входит в привычку smile 


Цитата(Uch3nik @  27.5.2007,  12:38 Найти цитируемый пост)
встроеный компонент Builder`а =), так для расширения кругозора...

Имхо легче свой создать.

p.s. а еще легче работать с функцией GetCursorPos(TPoint*)

Код

 TPoint mouse;
 GetCursorPos (&mouse);



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Uch3nik
Дата 27.5.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 30.11.2006
Где: Москва

Репутация: нет
Всего: нет



Цитата(Klin @  27.5.2007,  11:59 Найти цитируемый пост)
p.s. а еще легче работать с функцией GetCursorPos(TPoint*)

 
это ты по поводу OnMouseMove?

ты прав OnMouseMove - практически идентично OnMouseEnter, осталось тока немного доработать код, спасибо! я как то это пропустил)))

PM MAIL   Вверх
Klin
Дата 27.5.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Вот, что у меня пока получилось:

Дополнение к RichEdit
Код

class TRichEditPlus: public TRichEdit
{
public:
       //Событие OnMouseEnter
       virtual void __fastcall OnMouseEnter(TMessage &msg){
               Text = "1";
       }
       //Событие OnMouseLeave
       virtual void __fastcall OnMouseLeave(TMessage &msg){
                Text = "2";
       }
      _fastcall TRichEditPlus::TRichEditPlus(TRichEdit *rParent, TComponent*Owner):TRichEdit(Owner){
               Left = rParent->Left;
               Top = rParent->Top;
               OnMouseDown = rParent->OnMouseDown;
               OnMouseUp = rParent->OnMouseUp;
               Text = rParent->Text;
      }
BEGIN_MESSAGE_MAP
       VCL_MESSAGE_HANDLER(CM_MOUSEENTER,TMessage,OnMouseEnter);
       VCL_MESSAGE_HANDLER(CM_MOUSELEAVE,TMessage,OnMouseLeave);
END_MESSAGE_MAP(TRichEdit)
};


Вызов (к примеру на FormCreate
Код

 TRichEditPlus *my = new TRichEditPlus(RichEdit1,this);
 my->Parent = this;


Минус в том, что действия статистические. Но еще подумаю smile


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Uch3nik
Дата 27.5.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 30.11.2006
Где: Москва

Репутация: нет
Всего: нет



вот спасибо! мне ещё знаний не хватает такое писать...=) но о нечто таком я думал!
PM MAIL   Вверх
Klin
Дата 27.5.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Динамики, пока не получилось, но немного упростил операции.

Для добавления действий, "входа и выхода" курсора мыши, на определенный объект используйте код

Создаем новый класс
Код

class TMouseEx: public TRichEdit
{
  void __fastcall OnMouseEnter(TMessage &msg) {
   // действие над объектом при наведении мыши на объект
  };
  void __fastcall OnMouseExit(TMessage &msg) {
   // действие над объектом при выводе мыши с объект
  };
 public:
  __fastcall TMouseEx::TMouseEx(TComponent*Owner):TRichEdit(Owner) {
  };
BEGIN_MESSAGE_MAP
 VCL_MESSAGE_HANDLER(CM_MOUSEENTER,TMessage,OnMouseEnter);
 VCL_MESSAGE_HANDLER(CM_MOUSELEAVE,TMessage,OnMouseExit);
END_MESSAGE_MAP(TRichEdit)
};


Используем в программе
Код

 TMouseEx *my = new TMouseEx(this);
 my->Parent = this;
 // далее указываем по своему желанию и остальные свойства (Left, Top и т.п.)


* для использования дополнительных действий мыши для любого компонента, замените TRichEdit на класс вашего компонента (в код #1) 


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Uch3nik
Дата 27.5.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 30.11.2006
Где: Москва

Репутация: нет
Всего: нет



спасибо! буду разбираться  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0789 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.