Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.239.87.20] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Хочу использовать ваш компонент (уж больно мне понравилось то, что я увидел в демке), однако есть проблемка. Начну с начала.
Я пишу программу, подобную на графический редактор. Подобную, потому что она для узких целей - с ней можно рисовать схемы оригами. Вобщем появилась у меня идея реализовать инструмент "Рука", как во многих редакторах. Обрабатывал события мыши у Image, размещённым в ScrollBox. Привожу часть кода, т.к. кода много. procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftstate; X, Y: integer); begin last_x := x; last_y := y; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftstate; X, Y: integer); begin ScrollBox1.ScrollBy(X-Last_x,Y-Last_y); end; Однако это приводит к тому, что изображение можно переместить как угодно, мне же нужно, чтобы оно "закреплялось" на границах, чтобы его нельзя было дальше перемещать. Пробовал добавлять в обработчик MouseMove: if ((Image1.Left>=0) and (X>Last_X)) then begin Image1.Left := 0; Last_X := X; exit; end; if ((Image1.Top>=0) and (Y>Last_Y)) then begin Image1.Top := 0; Last_Y := Y; exit; end; Проблема решилась (слева и сверху, снизу и справа похожее сделал), но при перемещении, если достигнуты края, изображение стало "подрагивать". Нашёл эту тему как решение. Установил компонент, но теперь другая проблема: изображение не перемещается после установки ImageDrag в true (по умолчанию отключено, т.к. я рисую на изображении и перемещение мне без выбранного инструмента ни к чему). Компоненту Box.Image присваиваю события мыши (Down, Move, Up). При создании формы устанавливаю значения box.Image.Width, box.Image.Height, box.Image.Picture.Bitmap.Width, box.Image.Picture.Bitmap.Height, и произвожу заливку. В принципе больше ничего такого страшного не произвожу, как мне кажется. Но после выбора инструмента перемещения само перемещение не происходит. Даже курсор не изменяется. Помогите мне, пожалуйста, как сладить с этой проблемой. Или может быть, получится обойтись без компонента? Быть может вы подскажете мне, неопытному, что следует писать в MouseDown, Move и Up, чтобы получилось так, как у вас, без "передрагиваний", так чтобы изображение чётко останавливалось при достижении границ? Пытался искать на форуме решение этой проблемы, и нашёл только эту тему, как более актуальную. Прошу прощение за поднятие старой темы. Буду признателен даже за совет или намёк... |