Форум: "Потрепаться";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
ВнизНужны злые люди. Для критики. Найти похожие ветки
← →
Stager (2003-01-25 00:46) [0]Написал на D6 первый в жизни визуальный компонент. По сути - прогрессбар, только с некоторыми наворотами. В частности - в одном прогрессбаре может быть несколько недависимых "термометров", заполняющихся независимо друг от друга (Вспомните архивирование в WinRar). А еще он трехмерный и претендующий на прозрачность.
Делюсь со всеми и при случае выложу в "Кладовку". Только версия еще сырая, мордой в грязь ударить не хочется. Мастера, покритикуйте! Желательно - в стиле:
A-плохо, потому что B, поэтому лучше сделать C.
Заранее спасибо. Исходники и демки кидаю на мыло без лишних вопросов.
← →
Anatoly Podgoretsky (2003-01-25 08:06) [1]Нужны не злые, а справедливые.
Как сказал герой - бить буду аккуратно, но сильно.
← →
Думкин (2003-01-25 09:46) [2]мыло есть - кинь. Я больно не делаю.
← →
Думкин (2003-01-25 11:35) [3]Получилось что самые злые -
Anatoly Podgoretsky © ну и я собсно. Неужели так?!
← →
Stager (2003-01-25 16:54) [4]2 Anatoly Podgoretsky
Ну хорошо, я то и не против. А куда кидать? Ваш адрес в профайле не светится. Видать, так и останусь я непобитым...
2 Думкин
Уже кинул. Жду критики. А злые еще найдутся, я уверен. :)
С уважением, Алексей.
← →
Anatoly Podgoretsky (2003-01-25 17:19) [5]Кто захочет, тот сам к тебе обратится по электронной почте.
← →
Stager (2003-01-25 17:23) [6]2 Anatoly Podgoretsky
> Кто захочет, тот сам к тебе обратится по электронной почте
Принято.
С уважением, Алексей.
← →
Сатир (2003-01-25 17:26) [7]Внимание, злые люди!
Записывайтесь в эту ветку%)
1. Anatoly Podgoretsky ©
2. Думкин ©
3. Я не в счёт. Я - до-о-о-брый:)
← →
Stager (2003-01-25 17:42) [8]2 Сатир
Добрые, на самом деле, тоже очень нужны. А то толпа обругает, так я и заброшу все... :)
Очень хочется, чтобы компонент красивый и удобный получился.
С уважением, Алексей.
← →
Сатир (2003-01-25 19:03) [9]2Stager © (25.01.03 17:42)
я так понимаю, Вы решили создать флейм в лучших традициях форума "Потрепаться"? Может всё-таки стоит показать свой бессценный код прямо в этой ветке или хотя бы объявить на него линк в районе "Кладовка" или Вы считаете, что все сейчас всё бросят и кинутся Вам замыливать письма с просьбой показать бессценный код?
Смешно%)...
← →
Stager (2003-01-25 19:22) [10]2 Сатир.
> я так понимаю, Вы решили создать флейм в лучших традициях
> форума "Потрепаться"?
К сожалению, традиций этого, равно как и любого другого форума я не знаю, так как зарегистрировался только позавчера. Мне интуитивно казалось, что не слишком красиво выкладывать сырой продукт в "кладовку", поэтому я и создал ветку. Если что не так - прошу меня извинить.
С уважением, Алексей.
← →
Сатир (2003-01-25 19:45) [11]2Stager © (25.01.03 19:22)
там в "кладовке" почти всё сырое.
Главное, чтоб троянов не было в экзешниках, и сорцы желательно было бы выложить, если не хотите, чтоб твой код так и остался сырым%)
← →
Stager (2003-01-25 19:56) [12]2 Сатир
Спасибо за совет, выкладываю.
С уважением, Алексей.
← →
Stager (2003-01-25 20:38) [13]Лежит в "Кладовке". Называется TstProgressBar v1.0b. Всем спасибо.
С уважением, Алексей.
← →
Сатир (2003-01-25 21:23) [14]2Stager © (25.01.03 20:38)
ты прямой линк давайте
← →
Сатир (2003-01-25 22:49) [15]вообщем, пока сильно не вникал, но сразу сходу бросаются в глаза две функции:Мин и Макс. Они определены в модуле Math
← →
Checist [root] (2003-01-26 01:22) [16]Кстати, Стажер ты еще здесь? Кинь и мне на Checist_real@mail.ru или FullZlo@yandex.ru. Очень интересно посмотреть и эксплотнуть!
← →
MrBeer (2003-01-26 12:15) [17]1) ne osvobozdhaesh resursi - u tebja tam sploshnie konstruktori a osvobozdhenia net ne v 1 klasse. V rezultate utechkek mnogo.
2) imho - proceduri vlozhennie v proceduri eto plohoi stil" t.k. uhudshaet chitaemost" koda i skorosti ne dobavlaet. Kak rezultat nekrasivie funkcii tipa TstProgressBar.GradientFillSides;
3) pochemu ti ne izpolzuesh Min() i Max() kotorie est" v delphi uzhe, a izobretaesh svoi?
4) Ne vizivaesh konstruktor klassa ot kotorogo unasledoval TstStyle, TstSpacings. V dannom sluchae eto nekritchno t.k. konstruktor ot TObject no vse-taki.
5) Rabota s cvetami - vozmozhno stoit realizovat" bolee effektivno.
vse vishe skazannoe moe imho :)
"zloy" MrBeer ;)
← →
Ketmar (2003-01-26 12:21) [18]>Сатир © (25.01.03 22:49)
а ты в курсе, что Math отсутствует в personal edition, например?
>MrBeer © (26.01.03 12:15)
вложенные процедуры - вполне удобная вещь. если не переусердствовать. в частности, помогает реализовывать одну из базовых концепций программирования - сокрытие частных данных.
про min/max см. ответ Сатиру.
Satanas Nobiscum! 26-Jan-XXXVIII A.S.
← →
MrBeer (2003-01-26 12:23) [19]Ketmar - nu ya skazal imho :) Po teme koncepcii tut esho mozhno sporit" no v ljubom sluchae mne lichno takoi izvrat protiven.
← →
Zhenka (2003-01-26 12:36) [20]Ой как интересно, а можно мне тоже???
Zhenka@hotmail.ru
← →
Сатир (2003-01-26 16:42) [21]2Stager © (25.01.03 00:46)
кстати, ещё один баг в реализации подсчёта процентного отношения частей. Вот например задаю MaxValue:=50 и создаю две секции, пусть 40 и 25, то есть их сумма больше максимального значения, а в результате получаю удвоенные значения секций. Дальше, когда изменяется для каждой секции значение ShowPercent, визуально ничего не происходит. а для того, чтоб произошло, нужно переприсвоить числовое значение для секции
← →
Сатир (2003-01-26 17:06) [22]TstProgressBar = class(TWinControl)
private
...
function R(C: TColor): byte;
function G(C: TColor): byte;
function B(C: TColor): byte;
- эти ф-ции уже реализованы в модуле Windows. Называются getRValue, getGValue, getBValue
TstSpacings = class(TPersistent)
published
...
constructor Create(ProgressBar: TstProgressBar);
зачем публиковать конструктор? может достаточно объявить его как public?
дальше интересная реализация у этого конструктора:
constructor TstSpacings.Create(ProgressBar: TstProgressBar);
begin
FProgressBar := ProgressBar;
end;
то же касается и TstStyle.
Насколько я понимаю, это сделано для того, чтоб можно было вызвать метод FProgressBar.Invalidate;
Но такое нюансы обычно решаются немножко по-другому:
...
private
...
FOnChange: TNotifyEvent;
public
procedure Assign(Value: TstStyle);
procedure Changed;
...
published
...
property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;
...
procedure TstStyle.Changed;
begin
if Assigned(FOnChange) then FOnChange(Self);
end;
а дальше вызываешь вместо FProgressBar.Invalidate Changed;
вообщем, если я где ошибся или чего недорассказал, пусть меня мастера поправят.
буду очень признателен%)
С Уважением.
← →
Stager (2003-01-26 18:43) [23]2 Сатир
Большое спасибо за развернутый комментарий, в особенности, за соблюдение формы вопроса. То есть - что не так, почему и как сделать лучше.
> Вот например задаю MaxValue:=50 и создаю две секции, пусть
> 40 и 25, то есть их сумма больше максимального значения
Здесь не согласен. Это не баг, так задумано. Каждая секция начинается с "нуля", но рисуется только та ее часть, которая не накрыта предыдущей. И вот почему. Предположим, есть два "термометра". Один заполнен на 100%, другой - на 70%. Как их отрисовать? Конечно, можно в области перекрытия смешать цвета. Но что тогда получится? Если первый - красного цвета, другой - синего, то визуально будут отображены две секции - красная и фиолетовая.
И еще: я не зря упоминал о прогрессбаре в WinRar - там то же самое. Две секции - объем в архиве и объем общий. При отрисовке, секция архивированного объема файлов показывается полностью, а для общего объема видна только та часть, которая не накрыта первой секцией.
Что касается остального - согласен полностью.
С уважением, Алексей.
← →
Игорь Шевченко (2003-01-27 10:37) [24]Всем любителям научиться правильно писать советую почаще изучать исходные тексты VCL. Они достаточно "правильно" написаны.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.011 c