| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Окно которое перетаскивается не толькоза заголовок |
| Автор: Johnny_B 31.7.2007, 00:17 | ||
| Есть форма, на ней Image, speedbutton, panel. edit etc. Нужно что бы можно было окно таскать за всё кроме панелей и кнопок, а также других изображений, т.е. конкретно что бы окно можно было таскать за конкретный Image (он закрывает всю форму)... нашел вот это:
не подходит, так как невозможно нажимать кнопки, всю форму воспринимает как Каптион... как быть? |
| Автор: TForumUser 31.7.2007, 00:41 | ||
если решать просто влоб, может получиться следующий код:
ПЫСЫ. Возможно, можно проверять, нажата ли клавиша мыши другим способом, просто я его не знаю. В таком случае такой код будет выглядеть немного меньше) |
| Автор: Johnny_B 31.7.2007, 08:01 |
| TForumUser, Спасибо Единственное заметел, что перетаскивается с содержимым окна а не рамка, т.е. у меня в системе отключено перетаскивание с содержимым окна... думаю это из-а того что этот система работает только с Каптион. |
| Автор: THandle 31.7.2007, 19:41 | ||
Я всегда когда надо использую вот такой код:
|
| Автор: W1zArD 31.7.2007, 20:57 | ||
на бработчике события OnMouseDown
и таскай себе на здоровье |
| Автор: Johnny_B 1.8.2007, 16:12 |
| А как таскать форму за Bevel, ведь у него нет событий? Можно ли сделать что бы при клике на этот Бэвел, система думала что кликают на Форму или Имэйдж??? Спасибо за ответы |
| Автор: bems 1.8.2007, 16:23 |
| смотри сообщение WM_HCHITTEST |
| Автор: pseud 1.8.2007, 16:38 | ||
| на форме лежит 2 кнопки и 2 лабела в результате: - тягать можно за тело формы - шапка формы продолжает выполнять функции шапки - кнопка 1 и лабел 1 остаются кликабельны - кнопка 2 и лабел 2 - тягательны
Добавлено через 3 минуты и 10 секунд маленький недочет - кнопка 2 осталась кликабельна надо копать |
| Автор: bems 1.8.2007, 16:59 |
| pseud, а зачем PtInRect? мона ж унаследованній обработчик візвать и проверять его результат? |
| Автор: pseud 1.8.2007, 17:07 |
чтобы шапка формы оставалась шапкой попробуй сначала без этого кода - получишь: - нет доступа к кнопкам min, max, close - нет доступа к бордюрам |
| Автор: bems 2.8.2007, 16:58 |
ну я ж говорю например если унаследованый обработчик вернул HTCLIENT то заменить результат на HTCAPTION а в противном случае оставлять как есть. Тем более что ты в своем примере и так вызываешь унаследованый обработчик а значит определение принадлежности точки уже было сделано. А вызовом PtInRect ты делаешь двойную работу |
| Автор: pseud 3.8.2007, 14:26 | ||
| bems, наверно ты имеешь ввиду, что код должен быть такой:
|
| Автор: bems 3.8.2007, 15:39 | ||
я думаю что лучше так
Если нужен лейбл за который нельзя таскать то просто можно заменить его на статиктекст или положить на панель Добавлено через 2 минуты и 28 секунд претаскивания за границы и другие элементы можно добиться проверяя результат встроенной обработки на другие предопределенные значения HTXXXXXXXXXX. они есть в хелпе |