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

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

Обработка onClick при DragMode:=dmAutomatic [D5, WinXP]


TechnoDreamer ©   (2004-10-19 01:22:00) 

Есть несколько компонентов TImage, которы хотелось бы перетасивать друг на друга (drag'n'drop). Но возникла проблема, перестали происходить события onClick и onDblClick, а без них никак, и drag'n'drop позарез нужен. Подскажите как выйти из ситуации.


KilkennyCat   (2004-10-21 01:40:00) [1]

тогда сделать все наоборот. Драг всегда вырубать, врубать только при проверке "мышь-нажата-и-перемещается-над-объектов".


TechnoDreamer   (2004-10-21 01:27:00) [2]

Ну в моем понимании тоже, клик, это когда юзер быстро нажал и отпустил кнопку не двигая курсор. Я говорю не во время драга, а вообще, при включенной его обработке. Т.е. onClick ВООБЩЕ не возникает (и дблклик тоже), получается, что драг обрабатывается раньше. Когда я ставлю DragMode:=dmAutomatic, событие onClick уже не происходит, ВООБЩЕ. Надеюсь понятно объяснил. И видимо простых путей решения тут нет.
Но я не знаю как реализовать обработку двойного клика, если драг буду делать полностью сам.


KilkennyCat   (2004-10-21 00:15:00) [3]

а как при драге могут возникать клики? вроде как клик - это даун и ап мышей над объектом, его не двигая.


TechnoDreamer   (2004-10-20 22:15:00) [4]

Тут не онклик мешает драгу, при драге не происходит ни OnClick, ни OnDblClick. И я не предсталяю как реализовать через моусдаун и маусап, даблклик.


KilkennyCat   (2004-10-20 02:17:00) [5]


> TechnoDreamer   (20.10.04 01:03) [5]


я так понимаю, что можно перетащить и неактивный, в этом случае активация по онклику мешает. Не знаю, что мешает даблклику, но в первом варианте решение проблемы я уже ответил. могу разжевать: реализуем онклик руками:
1) отлавливаем онмаусдаун
2) отлавливаем онмаусап
3) проверяем, произошел ли драг. если драга не было - считаем, что был онклик и активируем.


TechnoDreamer   (2004-10-20 01:03:00) [6]

2 Германн
//"На пальцах" - нет, не могу. Но не нравится мне сама идея, когда "lightweight control" используется в режиме Drag'n'Drop. :(

Чуствую себя полным ламом (что не далеко от истины), но я совершенно не пойму о чем вы, и что такое "lightweight control"?

В любом случае, как я понял вы решили что мне надо двигать сами TImage'ы. У меня на форме их восем штук, и если тянуть и бросать их друг на друга, то их изображения меняются местами, сами контролы физически не перемещаются. На onClick у меня выберается активный контрол, есть еще и обработка onDblClick, вот и не получается у меня связать клик с драг-н-дропом :-(


Германн   (2004-10-19 02:19:00) [7]

2 TechnoDreamer   (19.10.04 02:11) [3]
"На пальцах" - нет, не могу. Но не нравится мне сама идея, когда "lightweight control" используется в режиме Drag'n'Drop. :(

Может быть я и не прав.


TechnoDreamer   (2004-10-19 02:11:00) [8]

Германн, вы о чём? Можно пояснить?


Германн   (2004-10-19 01:50:00) [9]

Очень мне не нравится ситуация, когда один наследник TGraphicControl перекрывает другого такго же. :((


KilkennyCat   (2004-10-19 01:24:00) [10]

onMouseUpDown или реализация драг-энд-дропа своими силами.


Наверх

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