Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.16;
Скачать: CL | DM;

Вниз

TProgressBar - соотнести клик мышкой и свойство Position   Найти похожие ветки 

 
DDDeN   (2007-11-15 13:32) [0]

Есть прогресс бар, свойство Max может принимать различные значения. Как, имея координаты тыка мышки, связать их с свойством Position? Чтобы можно было устанавливать текущую позицию кликом мышки.

Получить координаты тыка просто:


procedure TForm1.ProgressBar1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ShowMessage("X = " + IntToStr(X) + ", " + "Y = " + IntToStr(Y));
end;


 
Kolan ©   (2007-11-15 13:38) [1]

Есть такой контрол TTrackBar на вкладке Win32 — он не сгодится? Он так умеет.


 
Anatoly Podgoretsky ©   (2007-11-15 13:54) [2]

А самому посчитать, это же задача из начальной школы, нахождение пропорций.


 
DDDeN   (2007-11-15 14:26) [3]


> Kolan ©   (15.11.07 13:38) [1]

Он, к сожалению не годится...


> Anatoly Podgoretsky ©   (15.11.07 13:54) [2]

Извините... Просто мозг уже не очень соображает :)


 
Vice____   (2007-11-15 14:27) [4]

ProgressBar1.Position:=  (((x)/(ProgressBar1.Width/100))*(ProgressBar1.Max/100);


 
Anatoly Podgoretsky ©   (2007-11-15 14:31) [5]

> DDDeN  (15.11.2007 14:26:03)  [3]

Вообще или сейчас?


 
DDDeN   (2007-11-15 14:35) [6]


> Вообще или сейчас?

Сейчас...
Сказывается конец рабочего дня


 
DDDeN   (2007-11-15 14:35) [7]


> Vice____   (15.11.07 14:27) [4]

Спасибо, но у данного метода есть погрешность при увеличении Х увеличивается и погрешность.


 
Германн ©   (2007-11-15 15:14) [8]


> Спасибо, но у данного метода есть погрешность при увеличении
> Х увеличивается и погрешность.

А справку почитать по событию OnMouseDown? И понять что есть Х в этом событии?


 
Anatoly Podgoretsky ©   (2007-11-15 15:40) [9]


> Спасибо, но у данного метода есть погрешность при увеличении
> Х увеличивается и погрешность.


> Сейчас...
> Сказывается конец рабочего дня

Тогда пройдет после отдыха.

> Спасибо, но у данного метода есть погрешность при увеличении
> Х увеличивается и погрешность.

Надо делать поправку, видимо 0 не равно началу шкалы, она чуть левее. Тоже по поводу конца шкалы, но это требует проверки.


 
DDDeN   (2007-11-16 04:30) [10]


> Германн ©   (15.11.07 15:14) [8]
А справку почитать по событию OnMouseDown? И понять что есть Х в этом событии?

В справке сказано: "X and Y are the pixel coordinates of the mouse pointer in the client area of the Sender." - Х и У - это координаты в пикселях указателя мыши в клиентской части компонента.


> Anatoly Podgoretsky ©   (15.11.07 15:40) [9]
Надо делать поправку, видимо 0 не равно началу шкалы, она чуть левее. Тоже по поводу конца шкалы, но это требует проверки.

Шкала начинается с нуля, я проверил опытным путем, а вот заканчивается не тем числов, которому равна ширина компонента, а на 3 пикселя меньше (при разных ширинах компонента).


 
Германн ©   (2007-11-16 04:34) [11]


> DDDeN   (16.11.07 04:30) [10]
>
>
> > Германн ©   (15.11.07 15:14) [8]
> А справку почитать по событию OnMouseDown? И понять что
> есть Х в этом событии?
>
> В справке сказано: "X and Y are the pixel coordinates of
> the mouse pointer in the client area of the Sender." - Х
> и У - это координаты в пикселях указателя мыши в клиентской
> части компонента.
>
>

Ага. Прочитал таки. И какие твои мысли по поводу "клиентской части компонента"?

А всё прочее от "округления".


 
DDDeN   (2007-11-16 08:55) [12]


> Германн ©   (16.11.07 04:34) [11]

ProgressBar1.ClientWidth


 
DDDeN   (2007-11-16 09:19) [13]

Решение найдено!!!

ProgressBar1.Position := (X * ProgressBar1.Max) div ProgressBar1.ClientWidth;


 
ht9   (2007-11-20 03:12) [14]

position:=round(X*(max-min)/width);



Страницы: 1 вся ветка

Текущий архив: 2007.12.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1195568994
Neket
2007-11-20 17:29
2007.12.16
Точка вместо запятой


2-1195666514
sydenis
2007-11-21 20:35
2007.12.16
TApplication.ProcessMessages в консоли ?


2-1195344069
ЗДЕСЬ_ПОМОЩИ_НЕТ
2007-11-18 03:01
2007.12.16
И НЕ ИЩИ ЕЁ ЗДЕСЬ!!!!!


2-1195846522
greengeneral
2007-11-23 22:35
2007.12.16
копировать из StringGrid


15-1195104247
Alex_C
2007-11-15 08:24
2007.12.16
Проблема с мультимедиа таймером.