Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обращение к динамическим компонентам [D7, WinXP]


.ruslan ©   (2006-11-30 13:45:00) 

Доброго дня всем вам!
У меня возник вопрос, с которым мне пришлось обратится за помощью к вам.

Нужно сделать чтобы компоненты Panel создавались динамически, но это не важно, с этим я разберусь, мне нужно сделать так, чтобы при наведении на каждую она меняла цвет, а при потери уходжи мышки за её пределы – возвращался исходный цвет этой панели. Но вот в чём задача, мне нужно сделать так, чтобы у панелий была эта функция одинаковая и не индивидуальная, а например panel[x].color и т.д. т.к. я уже говорил панелей будет много.

Если не затруднит пишите в ICQ для более быстрого решения вопроса.
Спасибо за внимание к моему вопросу. Если вопрос обсуждался – извиняйте, просто дайте ссылку на тему. Спасибо! Всем доброго дня!


.ruslan   (2006-11-30 15:33:00) [1]

ничего, вот узнаю у вас как и что ;)


novill   (2006-11-30 15:21:00) [2]

> [14] .ruslan ©   (30.11.06 15:15)

покажи хоть что написал :)


.ruslan   (2006-11-30 15:15:00) [3]


> novill ©   (30.11.06 15:02) [13]

спасибо! тему можно закрывать


novill   (2006-11-30 15:02:00) [4]

Писать не буду. Там слишком все просто.
Вам нужно просто написть реализацию этих трех методов.
подсказываю:
в процедурах по одной строчке (присваивания)
в конструкторе - три строчки: первая inherited Create(AOwner);  и два присваивания.

Всё.

Не напишите - идите в наборщики текста.


.ruslan   (2006-11-30 14:31:00) [5]


> novill ©   (30.11.06 14:28) [10]

Спасибо, но для меня сложновато, хотя сама задача вроде как не для профи. Сам не разберусь, мне бы подробнее... Извините если отвлекаю..


Юрий Зотов   (2006-11-30 14:29:00) [6]

> Krants   (30.11.06 14:18) [8]

У панелей есть обработка сообщений CM_MOUSEENTER и CM_MOUSELEAVE. Заключается она в том, что эти сообщения пересылаются паренту - то есть, форме. Значит, написав обработчики этих сообщений в САМОЙ форме, получим то, что нужно.


novill   (2006-11-30 14:28:00) [7]

> [0] .ruslan ©   (30.11.06 13:45)


Вот тебе интерфейсная часть

 type TMyPanel=class(TPanel)
 private
  _newcolor:TColor;
  _oldcolor:TColor;
 public
   procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
   procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
  constructor Create(AOwner: TComponent; newcolor:TColor);
 end;


Если дальше сам не напишешь, придется читать...


.ruslan   (2006-11-30 14:21:00) [8]


> Krants   (30.11.06 14:18) [8]

onmousemove вроде как при наведении, а при ухода курсора - вроде нет


.ruslan   (2006-11-30 14:18:00) [9]


> Юрий Зотов ©   (30.11.06 14:15) [6]

т.е. ?


Krants   (2006-11-30 14:18:00) [10]

у панелей нет таких событий (наведения и ухода курсора мыши).


Юрий Зотов   (2006-11-30 14:15:00) [11]

Зачем панели наделять событиями, которые у них уже и так есть?


Krants   (2006-11-30 14:12:00) [12]


> Юрий Зотов ©   (30.11.06 13:55) [4]


1. Наделить СОБЫТИЯМИ!
2. дин. ПАНЕЛИ!


Юрий Зотов   (2006-11-30 13:55:00) [13]

> Krants   (30.11.06 13:53) [3]

1. Сперва ЧЕГО?
2. Их - это КОГО?


Юрий Зотов   (2006-11-30 13:53:00) [14]

Дополнение

1. Если массив для работы не нужен, его можно не создавать.
2. В этом общем обработчике Sender - это та панель, которую нужно перекрасить.


Krants   (2006-11-30 13:53:00) [15]

только сперва надели их событиями OnMouseEnter, OnMouseLeave...


Desdechado   (2006-11-30 13:49:00) [16]

1. создаешь массив панелей
2. делаешь один обработчик на всех и присваиваешь всем

ЗЫ в асе решают личные вопросы, а не производственные


Наверх

Титульная страница Поиск, карта сайта Написать письмо