|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.06.2008, 14:22 | #1 |
Новичок
Джуниор
Регистрация: 15.06.2008
Сообщений: 2
|
Drag and Dock
Здравствуйте!
В общем возник вопрос, на который пока я никак не могу найти ответа. Инет облазил насколько мог. В общем проблема вот в чем. В программе возникла необходимость перемещать Image с помощью мыши (естественно чтобы он не вылазил за пределы формы и т.д. - но это потом). Тщетные попытки использования Docking почти ни к чему не привели: через одно перемещение он превращается в отдельный тулбар, а наследующее опять липнет к форме. Я нашел исходники как сделать его без панельки заголовка, но все равно он только через раз липнет к форме и событие OnEndDock соответсвенно тоже через раз срабатывает. Помогите плиз. З.Ы. может можно сделать это как-то проще через Drag? |
15.06.2008, 16:20 | #2 |
Форумчанин Подтвердите свой е-майл
Регистрация: 27.04.2008
Сообщений: 179
|
А не пойдет через OnMouseUp, OnMouseMove, OnMouseDown?
Вот код. Попробуй. procedure TForm1.imageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin dow:=true; ox:=x; oy:=y; end; procedure TForm1.imageMouseMove(Sender: TObject; Shift: TShiftState; X Y: Integer); begin if dow=true then begin image.Top:=image.Top-(oy-y); image.Left:=image.Left-(ox-x); end; end; procedure TForm1.imageMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin dow:=true; end;
www.programmer.uaforums.net - Український форум програмістів.
www.satellite.ipsys.net - Український форум супутникового телебачення. |
16.06.2008, 12:59 | #3 |
Новичок
Джуниор
Регистрация: 15.06.2008
Сообщений: 2
|
работает...но есть недочет - картинка мелькает, когда ее перетаскиваешь...а это не есть хорошо, хотелось бы избавиться от этого
|
16.06.2008, 18:35 | #4 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
мерцание менее заметно визуально когда используют ДвойнойБуфер:
Код:
|
16.06.2008, 19:05 | #5 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
"мерцание менее заметно визуально когда используют ДвойнойБуфер:" когда сделано с головой оно вообще не заметно, и как вы искали если данный вопрос уже многократно обсуждался, чего только уже не двигали на этом форуме
|
17.11.2008, 18:04 | #6 |
Форумчанин
Регистрация: 24.03.2007
Сообщений: 314
|
Может и этот вопрос уже обсуждался, но в этой тебе как раз и процедуры прописаны - очень удобно.. А вопрос такой: у меня этих имеджей 17 штук и каждую надо двигать... Это надо для каждого по 3 процедуры эти прописывать или можно один раз для всех как-то?
|
17.11.2008, 18:39 | #7 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
1. Не обязательно три процедуры, достаточно одной MouseMove с обработкой параметра Shift (только не спрашивайте что это за параметр и как узнать его значения =)), ладно, немного подскажу: if ssLeft in Shift then ... это для левой кнопки.
2. Имиджи в массив, и общий обработчик. В инспекторе выберите каждому имиджу его или в коде ImageX.OnMouseMove:=ВашОбработчик; * узнать какой же имидж его вызвал можно из параметра Sender
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
17.11.2008, 20:48 | #8 |
Форумчанин
Регистрация: 24.03.2007
Сообщений: 314
|
Спасибо )))
|
18.11.2008, 06:35 | #9 |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
|
18.11.2008, 13:10 | #10 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Реализация интерфейса плавающих окон (Drag&Dock), не написав ни одной строчки кода:
Установите свойство docksite формы в true. А у имеджей установите свойство dragmode в dmautomatic, а свойство dragkind в dock. Вот и все. Запустите ваше приложение. При щелчке по какому-нибудь из имеджей у него появятся атрибуты плавающего окна и его спокойно можно будет перемещать по экрану. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Mac OS X - Dock for WinNT | BOBAH13 | Софт | 55 | 29.10.2008 15:29 |
Drag&Drop в ListBox'ах | MAKEDON | Общие вопросы Delphi | 3 | 21.08.2008 13:12 |
Drag&Drop | shtuceron | Общие вопросы Delphi | 3 | 09.04.2008 19:04 |
Drag and Drop | Xardas | Общие вопросы Delphi | 8 | 20.01.2008 23:09 |