Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.13;
Скачать: CL | DM;

Вниз

Нужны злые люди. Для критики.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.012 c
1-38221
dimich1978
2003-02-05 08:56
2003.02.13
Поверх всех окон, даже если неактивен, как АСЬКА


3-38051
Vladimir
2003-01-29 13:15
2003.02.13
как програмно изменить DBGrid.Options ?


14-38536
asafr
2003-01-29 10:58
2003.02.13
Будь здоров, товарищ Программист....!!!!!!


3-38101
InokSilver
2003-01-27 06:10
2003.02.13
Как отсортировать по переменному полю?


1-38263
Strech
2003-02-05 16:09
2003.02.13
Каталоги