Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DRAG & DROP & MOUSEDOWN & UP 
:(
    Опции темы
Artemon
Дата 10.8.2005, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20





Такое впечатление, что Builder глючит, привожу код:


void __fastcall MouseDown(TObject* Sender,..................................)
{
if(Button == mbLeft)
((TImage*)Sender)->BeginDrag(false,10);
}

void __fastcall MouseUp(TObject* Sender,..................................)
{
ShowMessage("OK");
}

Внимание глюк:

При нажатии левой кнопки мыши как и положено происходит событие MouseDown, но далее не отпуская мыши проиходит событие MouseUp.

Если кто знает в чем дело, подскажите.

Спасибо.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Mal Hack
Дата 10.8.2005, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



Проверил. Все нормально.
Я думаю, что BeginDrag как бы эмитирует Up или вызывает.
PM ICQ   Вверх
Поручик
Дата 14.8.2005, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 29.7.2005

Репутация: нет
Всего: нет



А как обойти вызов или MouseUp при BeginDrag'e??????
PM MAIL   Вверх
p0s0l
Дата 14.8.2005, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: нет
Всего: 112



В BeginDrag идёт вызов Perform( WM_LBUTTONUP, ... )
Чтобы не срабатывал MouseUp сделай так:
Код

void __fastcall MouseDown(TObject* Sender,..................................)
{
if(Button == mbLeft)
{
SomeFlag = true
((TImage*)Sender)->BeginDrag(false,10);
SomeFlag = false;
}
}

void __fastcall MouseUp(TObject* Sender,..................................)
{
if (!SomeFlag) ShowMessage("OK");
}

Но опять же, если тебе нужно отловить отпускание кнопки, то надо бы обрабатывать событие OnEndDrag...

А вообще, к чему это ? Может проще выставить у Image'ов свойство DragMode в dmAutomatic, а в событии OnCreate у формы написать:
Код
  Mouse->DragImmediate = False;
  Mouse->DragThreshold = 10;



--------------------
С уважением, г-н Посол.
PM   Вверх
Artemon
Дата 18.8.2005, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Почему-то ничего не помогает, может еще как-нибудь можно решить эту проблеу?


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Artemon
Дата 19.8.2005, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Я подозреваю, что вопрос не понят до конца.

Вопрос:

Над Image's нужно сделать следующие действия:

1) Перетаскивать Image.
2) Обрабтывать отпускание кнопки мыши.


Когда я пытаюсь это сделать, у меня роисходит следующее:
Я нажимаю на Image (но не тащу его) и сразуже происходит событие OnMouseUp.

Как же сделать так, что бы все шло своим чередом?


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Mal Hack
Дата 19.8.2005, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



Как вариант - повесить обработчик не на OnMouseUp, а на события окончания Drag&Drop, OnEndDrag.
PM ICQ   Вверх
Artemon
Дата 26.8.2005, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Что ничего не вяжется друг с другом.

Если использовать OnEndDrag, то все работает нормально,
но в моей программе имеется возможность отключить DRAG&DROP. Ролучается что если я отключаю DRAG&DROP, то автоматически отключается OnMouseUp.

Как мне действовать в этой ситуации?


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1037 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.