Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 224
от 14.10.2006, 20:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 210, Экспертов: 56
В номере:Вопросов: 1, Ответов: 1


Вопрос № 58247: Здравствуйте, уважаемые эксперты! от бессоницы ночью у меня появилась мысль вспомнить паскаль (BP 7.0). стал изучать объектно-ориентированное программирование (именно в паскале, а не в делфи - хочу так!). суть следующая - создаются какие-либо объ...

Вопрос № 58.247
Здравствуйте, уважаемые эксперты! от бессоницы ночью у меня появилась мысль вспомнить паскаль (BP 7.0). стал изучать объектно-ориентированное программирование (именно в паскале, а не в делфи - хочу так!).
суть следующая - создаются какие-либо объекты, при этом они должны отображатся на экране в графическом режиме. при этом возникает ситуация - при удалении объект с экрана также нужно удалить. вариант, зарисовать его на том же месте только черным цветом, отпадает, потому как пи этом остальные объекты которые находятся на одном месте с ним "портятся". как вариант - при сздании объекта добавлять его в некий список. потом при вызове draw запускать у каждого объекта через этот список его метод отображения.
вопрос - как создать этот список, чтобы через него можно было обратиться к нужному объекту и его методу?
Отправлен: 09.10.2006, 12:34
Вопрос задал: Kito (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Kito!
Честно говоря, непонятны Ваши затруднения. Чтобы нарисовать ту-же графическую фигуру на экране фоновым цветом, надо провести те же операции по ее нарисовке, только сменить цвет на фоновый:
FgColor:=GetBkColor; {Так получаем фоновый цвет}
SetColor(FgColor); {Устанавливаем его в качестве цвета рисования}
Bar(...); {Теперь рисуем фигуру}
При этом ничто другое нарисованное на экране не изменяется совершенно, только не забудьте потом цвет рисования вернуть как было. :)
В качестве списка объектов можно предложить (для TP7) TCollection, который позволяет хранить список ссылок на что угодно. Если же у Вас будет строго определенное количество объектов, то в качестве списка удобнее будет использовать массив ссылок:
MyObject: array[0..9] of Pointer;
При этом каждая ячейка массива - это ссылка на объект, а к любому свойству объекта можно обратится так:
Type
TMyObject = object(TObject)
Field1: Integer;
Field2: String;
Constructor Init;
Procedure Proc1;
Function Func1;
End;
PMyObject = ^TMyObject;
Var
MyObjects: array[0..9] of PMyObject;
Begin
...
{Создаем объект}
New(MyObjects[0], Init);
{Теперь обращаемся к полю объекта}
MyObjects[0]^.Field1:=10;
MyObjects[0]^.Field2:='Какое-нибудь гадкое сообщение';
...
End.
************************
Информация к размышлению. Хоть Ваши объекты в списке, хоть не в списке, все равно, при вызове метода Draw для рисования фигуры на экране, Вы будете использовать те же самые графические процедуры и функции, так что Ваша запарка вовсе не в способе хранения объектов.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 09.10.2006, 13:16


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное