Андрей А. |
Отправлено: 19.10.2005, 06:32 |
|
Не зарегистрирован
|
Добрый день, подскажите пожалуйста каким образом можно организовать перетаскивание в окне приложения программно созданных меток, при условии что ни одной метки до этого на форме не было. Вообще как писать обработчики событий для программно созданных компонентов? |
|
Valdemar |
Отправлено: 19.10.2005, 07:52 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Перетаскивать можно так:
- в обработчике события OnMouseDown запоминаем начальные координаты (x0, y0) и устанавливаем флаг перетаскивния;
- в обработчике события OnMouseMove если флаг установлен, то изменяем позицию левого и верхнего края
Label->Left=Label->Left+X-x0;
Label->Top=Label->Top+Y-y0;
- в обработчике события OnMouseUp сбрасываем флаг.
Чтобы назначить обработчик события компоненте надо сначала написать функцию, которая будет обрабатывать событие. Ее прототип должен совпадать с прототипом обработчика этого события. Затем назначаете эту функцию в качестве обработчика события:
mycomp->OnMouseUp=MyMouseUp;
|
|
Gal |
Отправлено: 20.10.2005, 10:51 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 124
|
Организация обработки событий дин. соз. компонента.
Например кнопка.
создаешь кнопку и обработку события этой кнопки , например OnClick
Затем удаляешь эту кнопку.
в программе дин. создаешь кнопку например Button1 и по созданию пишешь
Button->OnClick = OnClick;
После этого дин. созданная кнопка будет иметь событие OnClick/ |
|
Gal |
Отправлено: 20.10.2005, 10:53 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 124
|
Button1->OnClick = OnClick; |
|
Doga |
Отправлено: 20.10.2005, 16:31 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
А разве события типа OnDrag..., OnDock... это не то что нужно?
|
|
Андрей А. |
Отправлено: 21.10.2005, 09:23 |
|
Не зарегистрирован
|
Спасибо за ответы, затруднение вызывало именно то каким образом ь обработчик присваивать событию динамически созданного компонента. |
|