Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 537

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Помогит c функцей, в которой изображение событием MouseMove, можно перемещать от определенного минимального значения до определенного максимального(как например слайдер(TrackBar))

Alexeu Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Alexeu (статус: Посетитель)
Вопрос отправлен: 26 августа 2010, 20:29
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 27 августа 2010, 12:45; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 26 августа 2010, 21:37 [#1]:

А в чём проблема? Чем помочь-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Alexeu

Alexeu (статус: Посетитель), 27 августа 2010, 11:31 [#2]:

нужно создать регулятор громкости...
Слайдер - изображение, и нужно его передвигать, чтобы он не выходил за границы минимального и максимального значений(т.е. слева допустим х=200, справа х=300, и можно было бы перемещать отлько от 200 до 300, ни больше ни меньше
Вадим К

Вадим К (статус: Академик), 27 августа 2010, 11:36 [#3]:

ну и в чем проблема? нужны обработчики событий mousedown, mousemove, mouseup.
Просто нужно в событии mousemove написать пару ограничений.
так как размер нашего "ползунка", мы знаем, то контролируем только то, что левая часть не вылазит за левую часть контейнера, а правая за правую. два if:)
Галочка "подтверждения прочтения" - вселенское зло.
Alexeu

Alexeu (статус: Посетитель), 27 августа 2010, 12:08 [#4]:

Да я это понял, но у меня если вылазит за одну из границ , то вообще перестает двигаться...а нужно это обойти, если влево нельзя, то вправо...как это выполнить я не въеду
Вадим К

Вадим К (статус: Академик), 27 августа 2010, 12:15 [#5]:

так, это интересней.
Обходить не нужно, нужно писать как положено.

а вот интересно,

Цитата:

если влево нельзя, то вправо...как это выполнить я не въеду
я тоже не знаю это, как мышкой это делать. Для начала нужно понять, как это будет выглядеть, только потом делать.

А что бы не вылазило за границы, нужно не пускать.

В общем - код в студию.
Галочка "подтверждения прочтения" - вселенское зло.
Alexeu

Alexeu (статус: Посетитель), 27 августа 2010, 12:25 [#6]:

if Slider2.Left>=Sub_slide.Left+6 then
Slider2.Left:=Slider2.Left-(_old_x-x)
else Slider2.Left:=Sub_slide.Left+7;
if Slider2.Left<=Sub_slide.Left+Sub_slide.Width-6 then
Slider2.Left:=Slider2.Left-(_old_x-x)
else Slider2.Left:=Sub_slide.Left+Sub_slide.Width -7;

Slider2 - Это сам слайдер
Sub_slide - это изображение относительно которого он перемещаеться
Вадим К

Вадим К (статус: Академик), 27 августа 2010, 12:44 [#7]:

присмотримся внимательней. первое и второе условие двигают ползунок и оба обычно выполняются.

Логично припустить, что левую границу нужно проверять тогда, когда тянут влево и правую, когда в право.
Узнать куда тянут, можно сравнив координаты old_x и x
Галочка "подтверждения прочтения" - вселенское зло.
Вадим К

Вадим К (статус: Академик), 27 августа 2010, 12:45 [#8]:

а можно по другому. вначале рассчитываем новые координаты, а потом смотрим, попадают ли они в нужный интервал. Если да - присваиваем их,нет - ничего не делаем.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:57
Выполнено за 0.02 сек.