Текущий архив: 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.47 MB
Время: 0.04 c