IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача на объекты
сообщение
Сообщение #1


Гость






С помощью объектов на Паскале нужно решить следующую задачу:
"Создать объект "Progressbar", имеющий следующие свойства: отображающий прогресс какого-либо процесса в виде постепенно закрашиваемой линии. Окно должно иметь изменяемые размер, координаты верхнего левого угла, цвет. От этого объекта создать дочерний объект, в котором кроме закрашиваемой линии присутствует число, отображающее количество процентов от выполненной работы".
Пожалуйста, кто знает как это сделать, то помогите.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Создай объект вот такого типа:

(выдрано из одной очень старой моей поделки, у меня TPercentBar унаследован от общего для всех объектов предка, для удобства обработки... Можешь сделать так же, можешь оставить без наследования, если это тебе не нужно, дело твое...)
Type
PTPercentBar = ^TPercentBar;
TPercentBar =
Object(TSquare)
curr : Integer;
Fresh : Byte;

Procedure ShowBar( i : Integer );
Constructor Init( pxSt, pySt, pxFn, pyFn : Word;
x : Integer );
Destructor Done; Virtual;

Procedure Clear; Virtual;
Procedure Show; Virtual;

End;

...

Constructor TPercentBar.Init( pxSt, pySt, pxFn, pyFn : Word;
x : Integer );
Begin
TSquare.Init( pxSt, pySt, pxFn, pyFn, White, Black );
Fresh := 2; curr := x
End;
Destructor TPercentBar.Done;
Begin
TSquare.Done
End;

Procedure TPercentBar.Clear;
Begin
SetFillStyle( SolidFill, Black );
Bar( xSt + Fresh, ySt + Fresh, xFn - Fresh, yFn - Fresh )
End;

Procedure TPercentBar.ShowBar( i : Integer );
Var ix, w, xf, xs : Word;
Begin
curr := i;

w := (OwnWidth - 2 * Fresh) * i Div 100;
xs := xSt + Fresh; xf := xs + w;

Clear;
SetTextJustify( CenterText, CenterText );
OutTextXY( xSt + OwnWidth Div 2, ySt + OwnHeight Div 2,
IntToStr( curr ) + '%' );

SetWriteMode( XorPut );
For ix := xs To Pred(xf) Do
Line( ix, ySt + Fresh, ix, yFn - Fresh );
SetWriteMode( CopyPut )
End;

Procedure TPercentBar.Show;
var new_value: integer;
Begin
TSquare.Show;

{ !!! Обновить curr !!! }
new_value := ...

ShowBar( new_value );
End;


И в Show получай как-то новое отображаемое значение в процентах (если ты напишешь, откуда будешь его получать, я скажу, как именно это будет выглядеть полностью)...
rolleyes.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.09.2025 20:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name