![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение к динамическим компонентам [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. делаешь один обработчик на всех и присваиваешь всем
ЗЫ в асе решают личные вопросы, а не производственные