Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как бы мне попасть линией от начала до текущей позиции TrackBar [D7]


AV ©   (2012-07-18 15:57:00) 

переопределил так

procedure TMyTB.Paint;
var
 pw: integer;
 pc: Integer;
begin
 inherited;
 pw := Canvas.Pen.Width;
 pc := Canvas.Pen.Color;

 Canvas.Pen.Width := 5;
 Canvas.Pen.Color := clRed;
 Canvas.MoveTo(10 , 0 );
 Canvas.LineTo(Value * 4 , 0);
 Canvas.Pen.Color := clGreen;
 Canvas.MoveTo(10 , 5 );
 Canvas.LineTo(Value * 3 , 5);

 Canvas.Pen.Color := pc;
 Canvas.Pen.Width := pw;
end;

картинка такая
http://ge.tt/4w82kfK


AV   (2012-07-19 11:17:00) [1]

ага, точнее получается.
Все, сдаю как есть.
Спасибо, д.Юра!


Юрий Зотов   (2012-07-19 09:57:00) [2]

Можно попробовать уменьшить ошибку.

var D: Double;

Canvas.MoveTo(ЛП , 0 );
D := (Width - ЛП - ПП) * (Position - Min)  / (Max - Min);
Canvas.LineTo(ЛП + Round(D));


AV   (2012-07-19 09:42:00) [3]

да, примерно, правильно. А дальше и не надо.
Спасибо.


Юрий Зотов   (2012-07-19 03:59:00) [4]

И посмотри сообщение TBM_GETCHANNELRECT.


Юрий Зотов   (2012-07-19 03:35:00) [5]

Точнее, так:

Canvas.MoveTo(ЛП , 0 );
Canvas.LineTo(ЛП + MulDiv(Width - ЛП - ПП,  Position - Min, Max - Min));


Юрий Зотов   (2012-07-19 03:28:00) [6]

ЛП и ПП - ширина левого и правого полей трэкбара.  

Canvas.MoveTo(ЛП , 0 );
Canvas.LineTo(ЛП + MulDiv(Width - ЛП - ПП,  Value, 100));


AV   (2012-07-18 16:25:00) [7]

не соображу, какая
а если еще длина формы поменяется(трэкбары динамически создаются, под размеры формы) - то опять не то.

если так
 Canvas.Pen.Color := clRed;
 Canvas.MoveTo(10 , 0 );
 Canvas.LineTo( Round( Width/100 * Value) , 0);

то так
http://ge.tt/1UennfK/v/0


Юрий Зотов   (2012-07-18 16:11:00) [8]

> правило, по которому вычислять

Дык... Пропорция? Шкала же линейная.


AV   (2012-07-18 16:01:00) [9]

Value - это Position
4, 3 - "коэффициенты"

как видно, 4(красным) - многовато
а 3 - почти, но тоже не то

а как правильно будет?
(не столько подгон до нужного интересует, сколько правило, по которому вычислять)


Наверх

Титульная страница Поиск, карта сайта Написать письмо