![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ScrollBar ошибка !!!! [Delphi, Windows]
Robt © (2007-09-22 15:42:00)размер бегунка получается меньше чем установлено в SBPageSize
например если в ВКЛ и КОЛ сделать одинаковые горизонтальные скролбары длинной 300, высотой 20, Max 1000 и PageSize 200
то КОЛовский будет где-то на 1\5 короче
соответственно и ошибки при скролинге
Dimaxx (2007-10-03 10:28:00) [21]
> это как раз не правильный взгляд
По-твоему правильно, что, к примеру, портновский метр будет не 1 м, а 793 мм??
homm (2007-10-03 09:56:00) [22]> [7] Robt (03.10.07 09:19)
> MaxScrollPos = MaxRangeValue - (PageSize - 1)
да, и почему Position можно таки выставить в 1000, удерживая кнопку «вправо», если MaxScrollPos по форуме должен быть равен 801 ?
homm (2007-10-03 09:49:00) [23]> [7] Robt (03.10.07 09:19)
> MaxScrollPos = MaxRangeValue - (PageSize - 1)
А откуда цифра 793? (см. мой пост выше)
Robt (2007-10-03 09:19:00) [24]
> Это не ошибка. Это просто другой взгляд на вещи. Полагаю,
> более правильный
это как раз не правильный взгляд
теряется смысл существования PageSize как токового, веть при любом его размере - результат SBPosition один и тот же !!! а размер PageSize не больше половины SBMax
кроме того это не прихоть VCL ибо сказано в MSDN :
In version 4.0 or later, the maximum value that a scroll bar can report (that is, the maximum scrolling position) depends on the page size. If the scroll bar has a page size greater than one, the maximum scrolling position is less than the maximum range value. You can use the following formula to calculate the maximum scrolling position:
MaxScrollPos = MaxRangeValue - (PageSize - 1)
так что для своего взгляда делайте условные символы а для народа все должно быть стандартным ...
homm (2007-10-02 21:35:00) [25]> [5] Vladimir Kladov © (02.10.07 21:04)
> А VCL - не пришей рукав какое-то значение без смысла и цели.
Действительно, какая-то тупость. По (бредовой) идее там должно быть 1000-200=800, но там 793, причем если нажать на кнопку «впаво», по значение постепенно доползет до 1000, при этом бегунок, ясно дело, не сдвинется.
Vladimir Kladov (2007-10-02 21:04:00) [26]Это не ошибка. Это просто другой взгляд на вещи. Полагаю, более правильный. Здесь тест, в точном соответствии с вашими цифрами:
http://kolmk.net/test/Scrollbar.rar
Я просто добавил обработку события OnScroll / OnSBScroll с отображением значения Position / SBPosition (варианты VCL / KOL). Так вот в варианте KOL максимальное значение позиции, когда бегунок сдвинут максимально вправо, равно 1000. А VCL - не пришей рукав какое-то значение без смысла и цели.
Дмитрий К (2007-10-02 16:37:00) [27]Не знаю правильно это или нет, но если закомментировать
SI.nMax := SI.nMax - Integer(SI.nPage) + Value;в TControl.SetSBPageSize, то ползунок становится таким же как в VCL.
Robt (2007-10-02 15:18:00) [28]ну этош не значит что надо на него забить , тем более он в составе кола а не отдельно...
а дельфи 2 ктонить вобще пользуется ? однакош в последнем обновлении 2.81 для него чтото исправили ... а на такой МЕГАкосяк забили :(
Dimaxx (2007-10-02 10:03:00) [29]Просто скроллбаром в чистом виде очень редко пользуются...
Robt (2007-10-02 09:28:00) [30]что опять тока у меня глюки ?