Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > перетаскивание image


Автор: yogin 9.10.2009, 13:06
Приветствую.
есть панель, на ней Image. рядом на форме лежит другая панель, между панелями пространство, может быть форма а может какой-нить компонент.
необходимо: при нажатии мыши на Image начать отображение перетаскивания Image, чтобы картинка была под мышью, т.е. начала тащиться за мышью, а не оставалась на прежнем месте(как при использовании drag&drop).
т.е. по ссути, Image должна находиться поверх всех компонентов и тащиться за мышью. А ещё точнее - изображение, которое было в Image должно тащиться под мышью и быть поверх всего в пределах формы.
прийму любые советы и методы, не обязательно мучать Image. постоянно должно остаться одно - исходное состояние - это картинка в Image и панели, всё.
буду очень рад ответам.

Автор: Bitter 9.10.2009, 13:42
Можно сделать так:
1. при нажатии на имэйдже мышкой, делать его невидимым.
2. В это же время создать форму без заголовка, на этой форме создать таймер и Image.
3. В Image новой формы скопировать спрятаный, а в обработчике таймера (например с частотой 10 мс) написать следование за курсором мышки. Ну устанавливать Left и Top форме.
4. А дальше - обратный порядок. То есть копирование с динамической формы в image панели-приёмника, удаление формы, очистка первого имэйджа, сделать видимым второй bv'ql;

Надеюсь всё понятно описал

Автор: Alexeis 9.10.2009, 14:24
создать невидимую форму без заголовка размером с имагу, сделать ее парентом имаги, тащить форму за курсором во время движения, в момент отпускания узнать какой контрол под курсором и сделать этот контрол парентом для имаги, предварительно сделав временную форму невидимой.

Автор: yogin 9.10.2009, 14:45
идея не плохая, форму нужно делать MDI т.к. не хочется ещё одну форму в нижней панели... и ненадо никого делать парентами, нужные области отпускания картинки у меня просчитываются координатами на форме.
только вот не станет ли заминкой то, что форма на которой имага, уже MDIChield? Т.е. не перекроит ли эта форма маленькую форму?
вообщем надо пробовать... так уже не погадать.

Автор: Alexeis 9.10.2009, 14:52
Цитата(yogin @  9.10.2009,  13:45 Найти цитируемый пост)
форму нужно делать MDI т.к. не хочется ещё одну форму в нижней панели...

Это еще почему? Сколько окон у Delphi 7 ? А сколько кнопок на панели задач? 

Цитата(yogin @  9.10.2009,  13:45 Найти цитируемый пост)
и ненадо никого делать парентами, нужные области отпускания картинки у меня просчитываются координатами на форме.

  Хочешь просто рисовать изображение поверх формы? 

Автор: Bitter 9.10.2009, 16:54
Цитата(yogin @  9.10.2009,  14:45 Найти цитируемый пост)
форму нужно делать MDI т.к. не хочется ещё одну форму в нижней панели...

Что это за новость такая? Если ты имеешь в виду TaskBar, то там отображаются ПРИЛОЖЕНИЯ, а не ФОРМЫ одного приложения.

Цитата(yogin @  9.10.2009,  14:45 Найти цитируемый пост)
 и ненадо никого делать парентами, нужные области отпускания картинки у меня просчитываются координатами на форме

я не понял как это

Цитата(yogin @  9.10.2009,  14:45 Найти цитируемый пост)
Т.е. не перекроит ли эта форма маленькую форму?

для этого всегда можно указать форме свойсво FormStyle как fsStayOnTop

Автор: yogin 9.10.2009, 17:25
Цитата

Это еще почему? Сколько окон у Delphi 7 ? А сколько кнопок на панели задач? 

ты о чём вообще?
Цитата

Хочешь просто рисовать изображение поверх формы?

сразу думал об этом варианте... как лучше релиализовать?(чтобы иметь ввиду)
Цитата

Что это за новость такая? Если ты имеешь в виду TaskBar, то там отображаются ПРИЛОЖЕНИЯ, а не ФОРМЫ одного приложения.

а кто говорил про приложение типа application?
у меня всё в dll. иди попробуй создай 2-е формы в длл и посмотри на TaskBar.

Автор: AntonN 9.10.2009, 22:49
Цитата


сразу думал об этом варианте... как лучше релиализовать?(чтобы иметь ввиду)

я бы создал окно, и сделал бы его layered (смотри функцию updatelayeredwindow()), поместил выше всех окон

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)