Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.068 c
8-1170672615
bobus
2007-02-05 13:50
2007.12.16
Картинки для панели инструментов


15-1195265678
Riply
2007-11-17 05:14
2007.12.16
IExplorer 7. Добавление текста в отображаемую страницу.


3-1187063232
Ulugbek
2007-08-14 07:47
2007.12.16
Как динамический создать агрегатные поля TClientdataset


2-1195635463
Kolan
2007-11-21 11:57
2007.12.16
Как опредилить версию делфи для усл компиляции?


2-1195814196
Свой
2007-11-23 13:36
2007.12.16
TIdHTTPServer, ответ для клиента при закачке файла





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский