![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| Гость_Nik |
|
|||
|
Unregistered |
Нашел такой вот совет:
"Возьмите форму, бросьте на нее панель, на onMouseDown панели прицепите код: procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; Panel1.Perform(WM_SYSCOMMAND, $F012, 0); end; Теперь в run-time панель можно таскать как в дизайне... " Сделал. И действительно - панельку можно тягать мышкой без проблем. А тот же самый код, но с TShape не работает. Ни в какую. Помогите чайнику!? Мне нужно перемещать по мышкой разные геометрические фигуры. Хотя бы для начала простые(круг, квадрат и т.д.).Во время перемещения фигуры должны полностью прорисовываться. Можно ли для этого использовать какие-нибудь готовые компоненты? И какие если они есть? С TShape у меня это не получается! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Зачем изобретать велосипед?
У Shape выставляешь свойство DragMode в автоматическое, затем пишешь 2 события:
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
Если пользовать готовым Drag'ом, то при перемещении просто курсор сменится... Если же надо, чтобы при перетаскивании таскался и сам компонент, то либо нужно в OnDragOver поставить перемещение Source (+ еще небольшие доработки), либо же два других способа:
1) Самое простое - поместить TShape в TPanel, у TPanel убрать Caption и сделать плоским, тогда Perform делай не у TShape, а у TPanel... Этот способ плох тем, что TPanel непрозрачный... Зато самый простой 2) Немного другой способ - это обрабатывать событие OnMouseMove у TShape. Отличие в том, что мышь не будет ограничена в своём перемещении... Если что, то можно сделать проверку выхода TShape за границы формы...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| SteelHat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.1.2005 Репутация: нет Всего: нет |
Спасибо за ответы. Сейчас буду разбираться.
|
|||
|
||||
| SteelHat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.1.2005 Репутация: нет Всего: нет |
Протяни человеку руку помощи он её по локоть и откусит
Сделал как советовали. Получилось. Но При перемещении фигура прорисовывается с "помехами". По ней пробегают заметные полосы. А это совсем плохо. Объясню, что я хочу сделать: Мне нужна программа для тренировки зрения. На черном фоне помещаются набор фигур. Красного и синего цвета. Одеваются очки с красным и синим стеклами. Из этих фигур необходимо собрать заданный рисунок. Это программа для тренировки бинокулярного зрения. Ключевая проблема для меня это то самое перемещения фигурю. Всю остальную "обвязку" (менюшки, набор рисунков, проверки на совмещения фигур, обработка и выдача результатов) я сделаю. Нужен совет! |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
Попробуй поставить свойство DoubleBuffered := true у того контрола, по которому перемещается фигурка (напр. Form1.DoubleBuffered := true;)...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| SteelHat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.1.2005 Репутация: нет Всего: нет |
Ура! Заработало! Спасибо за помощь!
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |