Консультация № 52031
13.08.2006, 21:04
0.00 руб.
0 2 2
Здравствуйте, уважаемые эксперты! Скажите, что обычно описывается в разделе Protected и зачем вообще этот раздел нужен? И если процедура объявлена в этом разделе например так (см. приложение).
Процедура WMPaint предназначена для перерисовки формы. Как я понимаю, эта процедура обрабатывает событие wm_Paint. В программе это событие вызывается только один раз. А как мне вызвать процедуру обработки этого события еще раз и что написать в качестве параметра? Можно ли где-нибудь посмотреть, что из себя представляет тип TWMPaint?

Приложение:
protected procedure WMPaint(var Msg: TWMPaint); message WM_PAINT;

Обсуждение

Неизвестный
13.08.2006, 21:24
общий
это ответ
Здравствуйте, KInika!
Это основы ООП. Все что объявлено в секции protected доступно только членам и типам-наследникам класса.
давно
Мастер-Эксперт
425
4118
14.08.2006, 06:51
общий
это ответ
Здравствуйте, KInika!
То, что описывается в разделе класса <b>Protected</b> может быть доступно только внутри методов того же класса или внутри методов класса-наследника.
В данном случае идет обработка <b>сообщения</b> Windows, направленое данному окну, чтобы оно само собой берерисовалось посли каких-то операций, влияющих на внешний вид окна.
В подобном типе процедур (т.е. где после процедуры указано служебное слово <b>message</b> - обработчик сообщений) всегда присутствует параметр типа сообщения, в данном случае это TWMPaint. Вот его структура:
TWMPaint = packed record
Msg: Cardinal;
DC: HDC;
Unused: Longint;
Result: Longint;
end;
В Msg записывается код сообщения,
В DC - это контекст устройства, в данном случае формы, который будет собственно перерисовываться,
Unused - ну это и так понятно
В Result - записывается результат выполнения операции, т.е. перерисовки.
Вы эту процедуру можете вызывать в любом месте внутри каких либо методов Вашего класса. После вызова этой процедуры, форма перерисуется.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа