Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.01.2012, 20:12
SuicideTree SuicideTree вне форума
Прохожий
 
Регистрация: 17.01.2012
Сообщения: 8
Репутация: 10
По умолчанию помогите пафиксить компонент (ProgressBar)

компонент не мой, да и старый (2004), автор неотзываетса, а я пока ненашол ничего похожего и бесплатного. я сам нуб, и даже через ближайшее пол года непойму код и ненайду где "баг"...

компонент сам ProgressBar типа и всё с ним хорошо кроме того что полоска прогресса недвигаетса на некоторых ниских значениях. например: если шкала от 0 до 100, то при позиции 0 - нету полости, пока нормально, при 1 - поевляетса, при 2 - столькоже, полоска недвигаетса, от 3 до 100 - нормально увеличеваетса пракчитески на каждем изминении Position. Шкала слишком маленькая, потому скажете это нормально? Возмём чтонебуть по больше, от 0 до 1000, сейчас, полоска от 1 до 8 стоит на месте, даже на такой шкале полоска двигаетса почти при каждем увеличении Position. Сам компонент разтянут на 1000 (Width) поетому чтото не так в расчёте тлинны полоски которую надо наресовать.

единственное что странно с этим компонентом это то что ему неможно поставить минимум шкалы, я предпологаю что он всегда 0, но малоли какие там кривые формулы.

Вот зип прямо с сайта автора: mapage.noos.fr/qnno/files/TQProgressBar.zip или http://www.torry.net/vcl/indicat/met...rogressBar.zip

Может ктонебуть умный кинуть глазом на исходный код?

Ну или просто предложите мне какойнебуть ровный ProgressBar компонент (который может поделить полосу на части X шириной и пробелами между частями Y шириной, итд)? В противоположном случае уж лудше использовать TGauge.

Последний раз редактировалось SuicideTree, 17.01.2012 в 23:16.
Ответить с цитированием
  #2  
Старый 17.01.2012, 21:55
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Разбираться с чужим кодом особого желания нет, помогу предложить порыться на torry.net
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 17.01.2012, 22:19
SuicideTree SuicideTree вне форума
Прохожий
 
Регистрация: 17.01.2012
Сообщения: 8
Репутация: 10
По умолчанию

да, я понемаю что читать и понемать чужой код на лету сложно, но мож тут кто головастый есть. мне самому разбератса самоубийство, так как я точно знаю, что даже прочетав весь код, я эго просто непойму... я даже толком немогу свой компонент какой нибуть создать пока, неговоря о "починке" чужого. ну, попытка непытка...

и этот компонент именно с torry.net и есть, прочекал я там уже всё поидее, если только в каком паке компонентов непорылса тщательно...

Последний раз редактировалось SuicideTree, 18.01.2012 в 04:34.
Ответить с цитированием
  #4  
Старый 17.01.2012, 22:28
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Головастый, не головастый, а за 5 минут в любом случае не разберёшься. Скажи на милость, чем стандартный не устроил, красивостей хочется?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 17.01.2012, 22:53
SuicideTree SuicideTree вне форума
Прохожий
 
Регистрация: 17.01.2012
Сообщения: 8
Репутация: 10
По умолчанию

если так тупо, то да, этот хоть и не идеальный, зато нормально выглядит. в делфи же всего лишь два прогресс бар компонента: TGauge - старый, чутьли не остаток от делфи1, а TProgressBar - берёт цвета от темы винды, а если поддержку тем выключить он остаёнетса ещё хуже выглядещий прогресс бар, который показывает прогрес только кусками и некакой точьности там. Цвета TProgressBar неудаетса поменять, да и хотелось чтобы у компонента по больше бозможностей было. Мне нравитса как TGauge выглядит, на много лудше от TProgressBar, но у него не чуть не больше возможностей (не только расцветки, но и как я уже писал поделения полоски на такие куски с пробелами какие ты хочеш, плюс кокие небуть мелочи)

и я нетребую ответа сею минуту, я понемаю что это даже не на день работы, но если ктото скажет что он попробует посмотреть, я подожду неделю или даже месяц
Ответить с цитированием
  #6  
Старый 17.01.2012, 23:02
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

собственно, а чем тебе этот баг сильно мешает? Ты реально увидишь разницу длинны полоски между 1 и 2 процентами? Да и не так это важно на самом деле.

ЗЫ. Хотел посмотреть код, но у меня с работы этот сайт закрыт...
Ответить с цитированием
  #7  
Старый 17.01.2012, 23:14
SuicideTree SuicideTree вне форума
Прохожий
 
Регистрация: 17.01.2012
Сообщения: 8
Репутация: 10
По умолчанию

использовать этот прогрес бар я хочу не по прямому назначению, поетому шкала будет больше, но даже с простой 0-100 шкалой заполняя её, увеличивая позицую на 1 каждую пол секунды, это видно, это не трагедия и не конец света, но всё-таки хотелось бы это исправить

вот линк с torry.net: http://www.torry.net/vcl/indicat/met...rogressBar.zip
Ответить с цитированием
  #8  
Старый 18.01.2012, 03:55
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Есть у меня подозрение, что дело не в работе компонента, а в его настройках. Вы пробовали изменять значения SpaceSize и BlockSize ?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 18.01.2012, 04:29
SuicideTree SuicideTree вне форума
Прохожий
 
Регистрация: 17.01.2012
Сообщения: 8
Репутация: 10
По умолчанию

Я протыкал там всё настойки вдоль и поперёк, к сожелению не в них проблема. Аргументы ниже.

Это происходит даже если они оба (SpaceSize и BlockSize) на 0, в таком случае полоса прогреса непрерывная и тоже прыгает сразу с нуля дальше чем надо. Тут важнее настройка ShowFullBlock, если true то рисован будет только целый блок (BlockSize ширеной) и только тогда когда Position будет уже за блоком (то есть блок должен быт полным, если меньше - он непрорисовываетса вообще), если false то полоса прогреса хоть и будет поделена на блоки (с BlockSize ширеной) и пробелы (с SpaceSize ширеной), но часть блока всёравно будет прорисована (четверть, половина, итд) полностью независимо от значений SpaceSize и BlockSize.

У меня ShowFullBlock везде false.

Если я вообще не валенок... то надо бы "следить" что происходит с fPosition, fMinVisPos, fUSefullDrawSpace и процедурами SetPosition (тут ест интересный коментарий который я до конца не понемаю) и Paint. Коментарий возле fMinVisPos тоже не очень ясен: Minimum position to send to Paint(), to see at least one bar. А так то неслушайте меня, я тут могу сильно тупить...

Последний раз редактировалось SuicideTree, 18.01.2012 в 04:33.
Ответить с цитированием
  #10  
Старый 18.01.2012, 07:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Блин, да проще просто руками отрисовать на PaintBox, например.
Ответить с цитированием
  #11  
Старый 18.01.2012, 15:34
SuicideTree SuicideTree вне форума
Прохожий
 
Регистрация: 17.01.2012
Сообщения: 8
Репутация: 10
По умолчанию

тогда научи меня пожалуйста, я ничего про Paint (или PaintBox) незнаю... ещё не гуглил и не вникал что где и как, но пока мне компоненты хоть и простые делать, это тёмный лес. с делфи я дружу тоько пару месяцов, а перед этим только в школе с паскалям писал фигню всякую. я бы с удовольтвием сам зделал чтото если бы умел, a если гдето есть гид или так какое небут чтиво которое будет мне полезно на прямую или как алтернативное решение проблемы, кинте ссылку, почитаю, научюсь и оставлю вас в покое
Ответить с цитированием
  #12  
Старый 18.01.2012, 16:26
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Придётся почитать как отрисовывать на канвасе.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #13  
Старый 19.01.2012, 16:11
SuicideTree SuicideTree вне форума
Прохожий
 
Регистрация: 17.01.2012
Сообщения: 8
Репутация: 10
По умолчанию

вкинул JEDI VCL и нашол идеальный компонент (TJvgProgress), а потом опечалилса, в нём можно делать всё ктоме изменения шкалы - она всегда 0..100 (там даже нету Min/Max/Progress никаких, только Percent) - что за бред, почему и зачем так тупо делать....

Тут может задача по проще? Как добавит Min/Max/Progress чтобы правельно рисовало?
Ответить с цитированием
  #14  
Старый 19.01.2012, 16:30
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

...percent := progress/max*100
Ответить с цитированием
  #15  
Старый 19.01.2012, 16:47
SuicideTree SuicideTree вне форума
Прохожий
 
Регистрация: 17.01.2012
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pyro
...percent := progress/max*100

а прорисовка? я % сам пощетать умею... допустим я разтяну компонент на 10000 (Width) с шкалой на 0..10000 и он будет прыгать по 100 на каждем шагу... тупо, это работалобы если % прогрес был в формате xx.xx % (99.99 %), но там integer. Надо лудше.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:07.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter