Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
14-38472
michael_b
2003-01-30 20:21
2003.02.13
Проблема с рекурсией


3-38011
Наташа
2003-01-24 20:08
2003.02.13
Ограничения на поля


1-38231
SergeyP_2000
2003-02-05 12:00
2003.02.13
COM


3-38065
Swamp
2003-01-26 14:48
2003.02.13
таймаут выполнения SP на MSSQL


3-38073
ij
2003-01-26 21:46
2003.02.13
связь нескольких БД





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