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

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

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

> Задача на объекты
Саирис123
сообщение 18.11.2006 15:59
Сообщение #1


Гость






С помощью объектов на Паскале нужно решить следующую задачу:
"Создать объект "Progressbar", имеющий следующие свойства: отображающий прогресс какого-либо процесса в виде постепенно закрашиваемой линии. Окно должно иметь изменяемые размер, координаты верхнего левого угла, цвет. От этого объекта создать дочерний объект, в котором кроме закрашиваемой линии присутствует число, отображающее количество процентов от выполненной работы".
Пожалуйста, кто знает как это сделать, то помогите.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 18.11.2006 16:51
Сообщение #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

 



- Текстовая версия 24.06.2025 17:04
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"