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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






В общем, должно быть так, чтобы при подстановки в какой-либо процесс проценты отображались. То бишь отображаемое значение может быть любым.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Заранее большущее спасибо за помощь. Завтра с утра встану и постараюсь разобраться в этой программе.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
То бишь отображаемое значение может быть любым.
Ну, допустим, любым оно быть не может...

Отображаемое значение должно быть целым числом в интервале 0 .. 100 (меньше 0 и больше 100 процентов - глупость), но суть не в этом. Меня интересует, например, при сортировке массива, ОТКУДА ты знаешь, сколько процентов уже закончилось?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ну да, про проценты-то я понял.
Знаешь, меня это теперь тоже интересует. В моём условии нет чёткого ответа на этот вопрос. Просто задано, что должны отображаться проценты в этом дочернем объекте. Тогда я постараюсь уточнить это на следующей неделе.
А то, что ты мне написал работает без этого? Или там обязательно надо знать откуда берётся значение?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
А то, что ты мне написал работает без этого? Или там обязательно надо знать откуда берётся значение?
Там, откуда я выдрал этот код, он использовался для индикации громкости/уровня сигнала, т.е. всегда было известно максимальное значение, а текущее (в процентах от MAX) отображалось в каждый момент времени...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Понятно. В общем на неделе я постараюсь узнать поподробнее про задание и тогда напишу здесь.
Спасибо уже за то, что помог мне. smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






В общем, я спросил, но так чёткого ответа мне и не сказали.
Короче, программа должна сама то ли постраиваться под любой процесс, то ли состыкововаться. Должно задаваться число от 1 до 100 и видимо с помощью этого как-то всё должно работать. Извини, я конечно понимаю, что мало что понятно, но я надеюсь, что мне кто-нибудь поможет с решением этой задачи.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






У меня тут проблемка с задачей.
При компиляции в строке
TPercentBar =
Object(TSquare)
пишет что Error 3:Unknown identifier.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Правильно пишет... Объект-предок я не выкладывал. ЗА ТЕБЯ решать задачу тоже не буду... Нужно - разберешься по коду, который я привел.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Понятно тогда. Я просто подумал, что тут полное решение. Ну теперь понятно хоть, как дальше делать. Спасибо за идею задачи, ты мне очень помог. smile.gif
 К началу страницы 
+ Ответить 

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

 





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