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

Вниз

Компонент TKOLQProgressBar   Найти похожие ветки 

 
danger ©   (2007-07-12 06:13) [0]

Компонент, предназначенный для создания разнообразных ProgressBar"ов (с MCK зеркалом).


 
MTsv DN ©   (2007-07-12 12:59) [1]

Danger, присоединяюсь к homm"у и SergeR"y (http://delphimaster.net/view/11-1184171451/), респект за контрол... Однако сразу вопрос. Как отслеживать изменение позиции? Через PBM_SETPOS у меня не прокатило. Никакого доп свойства, как в GRush, тоже не нашел...


 
MTsv DN ©   (2007-07-12 13:25) [2]

Ну в общем, чтобы оставить совместимость с ProgressBar"ами, предлагаю такой код. Процедура procedure TQProgressBar.SetPosition( Value: Integer ):
 try
   if ( Value <= 0 ) then
   begin
     D.fPosition := 0;
     SendMessage(Self.Handle, PBM_SETPOS, Value, 0);
     Exit;
 end
 else if ( Value > D.fMaxPos ) then Value := D.fMaxPos;
 SendMessage(Self.Handle, PBM_SETPOS, Value, 0);


 
Danger ©   (2007-07-12 18:07) [3]


> MTsv DN ©   (12.07.07 13:25) [2]
> Ну в общем, чтобы оставить совместимость с ProgressBar"ами,
>  предлагаю такой код. Процедура procedure TQProgressBar.
> ...

Принято, внесу изменения в следующей версии. Вообще надо бы ввести OnProgressChange, так будет нагляднее.


 
Danger ©   (2007-07-12 22:30) [4]

[+] Добавлено событие OnProgressChange.

[+] Добавлена обработка стандартных сообщений ProgressBar"a - PBM_GETPOS, PBM_SETPOS, PBM_GETRANGE, PBM_SETRANGE, PBM_SETRANGE32.

[ * ] Незначительно изменена процедура SetMaxPos.


Отправил изменения MTsv DN.


 
MTsv DN ©   (2007-07-13 09:04) [5]

> Отправил изменения MTsv DN.
Обновление на http://www.kolnmck.ru/


 
MTsv DN ©   (2007-07-13 09:58) [6]

> [+] Добавлена обработка стандартных сообщений ProgressBar"a - PBM_GETPOS, PBM_SETPOS, PBM_GETRANGE, PBM_SETRANGE, PBM_SETRANGE32.
"Не арбайтн" 8( Вернее не так... "Обработка" добавлена, а вот "Генерация" нет... Если программер отправляет, например PBM_SETPOS контролу, то естесссна сработает, а вот если надо отследить изменение. Я чего пристал-то. Сейчас ты ввел OnProgressChange...хорошо. Но у меня все обработчики настроены на OnMessage->PBM_SETPOS, а он щас не работает, т.к. в procedure TQProgressBar.SetPosition( Value: Integer ); ты добавил:
 if Assigned( D.fOnProgChange ) then
  D.fOnProgChange( @Self );
, но убрал, то что я предлагал в [2]. Конечно, можно перекинуть код из OnMessage в OnProgressChange...

Это не ошибка, просто реализация такая, а с моей стороны рассуждения вслух...

З.Ы. Спасибо за контрол 8)


 
Danger ©   (2007-07-13 19:36) [7]


> MTsv DN ©   (13.07.07 09:58) [6]
> > [+] Добавлена обработка стандартных сообщений ProgressBar"a
> - PBM_GETPOS, PBM_SETPOS, PBM_GETRANGE, PBM_SETRANGE, PBM_SETRANGE32.
> "Не арбайтн" 8( Вернее не так... "Обработка" добавлена,
> а вот "Генерация" нет... Если программер отправляет, например
> PBM_SETPOS контролу, то естесссна сработает, а вот если
> надо отследить изменение.

Поправил код, теперь контрол работает подобно обычному ProgressBar"у - обрабатывает сообщения и генерирует при необходимости. При этом переименовано свойство Position в Progress для большей ясности. Так что учтены сразу и мои правки по OnProgressChange, и предложения MTsv DN по отправке сообщений.

> Конечно, можно перекинуть код из OnMessage в OnProgressChange...

Не нужно ничего перекидывать, если удобно работать в OnMessage. Сейчас должен работать OnProgressChange совместно с OnMessage (в допустимых пределах).

Я отправил изменения почтой, протестируй на своем проекте. Если будут какие-нибудь шероховатости - будем смотреть дальше, иначе это будет финальный релиз.


 
MTsv DN ©   (2007-07-13 19:48) [8]

> При этом переименовано свойство Position в Progress для большей ясности.
Во. Вот это рулез. Еще бы Maximum в MaxProgress, было бы ваааще сказка :) Ща гляну...


 
Danger ©   (2007-07-13 20:02) [9]


> MTsv DN ©   (13.07.07 19:48) [8]
>  Еще бы Maximum в MaxProgress, было бы ваааще сказка :)

Названия свойств остались в наследство от родительского vcl-компонента, лучше изменить конечно.

Подождем, может еще какие-нибудь идеи возникнут, все изменения тогда и внесу разом ...


 
MTsv DN ©   (2007-07-13 20:05) [10]

Danger, ну-у-у, пока вроде все в порядке :)


 
Danger ©   (2007-07-13 20:23) [11]

MTsv DN, на днях интегрирую справку для XHelpGen, переименую Maximum в MaxProgress и вышлю окончательный вариант. Вообще вот, зеркало написано не идеально (я уже писал раньше, при переключении parentFont в дизайн-тайме контрол автоматически не перерисовывается).


 
Dy1 ©   (2007-07-18 23:14) [12]

> переименовано свойство Position в Progress

И какой лучше использовать?


 
=BuckLr=   (2007-07-19 13:17) [13]


> Danger

Респект! Красивый контрол! Сегодня заменил им стандартный в своей программе-чистилке памяти - выглядит вааще супер! Кореша с тапок падают :)


 
Danger ©   (2007-07-19 20:17) [14]


> Dy1 ©   (18.07.07 23:14) [12]
> > переименовано свойство Position в Progress
>И какой лучше использовать?

Очевидно, Progress.

Кстати, к выходным появится очередная версия со всеми изменениями, предложенными на данный момент (проблема, как всегда, в нехватке свободного времени). В следующей версии все будет очевидно: Position исчезает окончательно, Maximum переименовывается, улучшенная эмуляция стандартного progressbar"a и работать должно немножко быстрее (имхо). Сейчас делаю справку для XHelpGen.


 
MTsv DN ©   (2007-07-23 10:10) [15]

Обновление на http://www.kolnmck.ru/


 
Dy1 ©   (2007-08-22 20:20) [16]

Только сейчас понадобился компонент :)  Утечка в 76 байт.

 Часть лога:
40D8FD [KOLQProgBar.pas][TQProgressBar.GetGradientAr2][707]
40D6AD [KOLQProgBar.pas][TQProgressBar.InitPixArray][661]
40D3A2 [KOLQProgBar.pas][TQProgressBar.InitBlockArray][582]
Блок в настоящее время используется для объекта класса: Unknown

D7, MCK 2.73, WinXP SP2


 
danger ©   (2007-08-24 06:27) [17]


> Dy1 ©   (22.08.07 20:20) [16]
> Только сейчас понадобился компонент :)  Утечка в 76 байт.

Дома посмотрю, как только выдастся возможность.


 
Danger ©   (2007-08-24 17:25) [18]


> > Dy1 ©   (22.08.07 20:20) [16]> Только сейчас понадобился
> компонент :)  Утечка в 76 байт. Дома посмотрю, как только
> выдастся возможность.

Я не смог моделировать ситуацию, чтобы было видно эту утечку. Вышли проект, на котором видно. И подробнее про условия, когда возникает.


 
Dy1 ©   (2007-08-25 11:51) [19]

забыл что делал для исправления этой проблемы. Поэтому:
Удалил MHXP. Появилась утечка 76 Бт (лог "01.txt")
Ставлю Windowed:=False для любого контрола на форме - утечка 124 Бт дополнительно (это к кому?), присутствуют USE_GRAPHCTLS, GRAPHCTL_XPSTYLES и GRAPHCTL_HOTTRACK. Лог 02.txt
 В архиве отсутствуют модули FastMM4 и его dll; менеджер D7 заменён FastMM4-ным, KOLnMCK 2.73
www.dy.cdrrhq.ru/WinUPack_Dy_src.rar


 
danger ©   (2007-08-25 13:40) [20]


> Dy1 ©   (25.08.07 11:51) [19]
> MHXP. Появилась утечка 76 Бт (лог "01.txt")

Я вообще критично отношусь к компонентам МН*. Довольно шероховатые компоненты (имхо). Да и какое отношение имеет компонент к MHXP, если проблемы появляются после его добавления/удаления? Попробуй протестить у себя с пустым КОЛ-проектом, как там насчет утечек?

>Ставлю Windowed:
> =False для любого контрола на форме - утечка 124 Бт дополнительно
> (это к кому?), присутствуют USE_GRAPHCTLS, GRAPHCTL_XPSTYLES
> и GRAPHCTL_HOTTRACK. Лог 02.txt  В архиве отсутствуют модули
> FastMM4 и его dll; менеджер D7 заменён FastMM4-ным, KOLnMCK

С USE_GRAPHCTLS, GRAPHCTL_XPSTYLES и GRAPHCTL_HOTTRACK не тестировал (да и не хочу). Если утечка возникает только при использовании этих директив - смотрите сам KOL; если и без них - будем посмотреть еще.

www.dy.cdrrhq.ru/WinUPack_Dy_src.rar

Проект посмотрю сегодня.


 
Danger ©   (2007-08-26 13:53) [21]


> Dy1 ©   (25.08.07 11:51) [19]
Блок памяти был выделен и не освобожден. Размер: 76

402815 [System][@ReallocMem]
404448 [System][DynArraySetLength]
40451E [System][@DynArraySetLength]
40E846 [KOLQProgBar.pas][KOLQProgBar][TQProgressBar.GetGradientAr2][707]
408E29 [KOL][HelpGetBoundsRect]
40E5CC [KOLQProgBar.pas][KOLQProgBar][TQProgressBar.InitPixArray][661]
40451E [System][@DynArraySetLength]
40FB40 [KOLQProgBar.pas][KOLQProgBar][TQProgressBar.Resize][1059]
40DD99 [KOLQProgBar.pas][KOLQProgBar][QProgBar_WndProc][446]

Блок в настоящее время используется для объекта класса: Unknown

Вроде он и не должен освобождаться. Вызывается процедура инициализации, выделяется память под динамический массив. После выполнения нужных нам действий память не освобождается (скорее всего, это и выглядит для MemProof-a утечкой), просто при следующем запуске инициализации, если нужно, длина массива устанавливается в новое значение. Вот там неявно и происходит высвобождение памяти через DynArraySetLength. Дополнительно, при разрушении объекта длина всех динамических массивов устанавливается в ноль.



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.043 c
11-1187883874
Vladimir Kladov
2007-08-23 19:44
2008.04.20
Объявление: новый модуль DecimalCalculations


15-1204604949
Slider007
2008-03-04 07:29
2008.04.20
С днем рождения ! 4 марта 2008 вторник


15-1204924214
Kostafey
2008-03-08 00:10
2008.04.20
С днем рождения ! 8 марта


15-1204883635
xayam
2008-03-07 12:53
2008.04.20
Фокус


3-1196068794
Paradise
2007-11-26 12:19
2008.04.20
Перекрытие временных периодов





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