Главная страница
    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.47 MB
Время: 0.04 c
8-1170999683
Belkam
2007-02-09 08:41
2007.12.16
Слайд шоу


2-1195795328
Fraider
2007-11-23 08:22
2007.12.16
Можно ли писать в файл?


15-1195243254
tesseract
2007-11-16 23:00
2007.12.16
CMS vs Delphi for PHP


15-1195087762
СетьЕть
2007-11-15 03:49
2007.12.16
Как узнать русская у пользователя Виндос или нет?


4-1180497793
AndreyRU
2007-05-30 08:03
2007.12.16
Вне зоны доступа! WM_MOUSEMOVE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский