Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 107

Для изменения значения свойства во время выполнения программы, вам просто нужно выполнить соответствующее присваивание. При этом VCL авто­матически вызывает метод доступа для данного свойства. Для изменения значения свойства Left во время работы программы можно использовать примерно следующий код:

MainForm->Left = 200;

В случае свойства Left (а также Top) VCL сдвигает и перерисовывает форму. (Те, кто работал с API Windows, могут сообразить, что в конечном итоге это сводится к вызову функций SetWindowPosQ и InvalidateRectQ.)

I

Спецификаторы доступа связывают со свойством методы (функции) чте­ния и записи. Когда значение свойства считывается или изменяется, авто­матически вызывается функция, связанная с этим свойством. Во время при­сваивания в предыдущем примере вы обращались к спецификатору записи. При этом VCL проверяла наличие метода доступа для спецификатора записи. Если метод существует, он вызывается, в противном случае VCL просто при­сваивает значение соответствующему члену класса.

Когда вы ссылаетесь на свойство (используете свойство справа от опера­тора присваивания), вы обращаетесь к спецификатору чтения:

int x = MainForm->Left;

В этом случае VCL вызывает спецификатор чтения для получения зна­чения свойства Left. Во многих случаях спецификатор чтения не делает почти ничего, кроме возврата текущего значения свойства.

Свойства свойств (извините, я не могу написать иначе) определяются разработчиком компонента. Свойство может быть доступно только для чтения (read-only), и в этом случае вы можете получить значение свойства, но не можете его изменить. В редких случаях свойство может быть доступно только для записи (write-only).

Наконец, некоторые свойства могут быть доступны только во время вы­полнения (runtime-only). Доступ к такому свойству невозможен на этапе разработки, и оно не отображается в окне инспектора объектов. Свойство типа runtime-only может быть объявлено также и как read-only, что означает возможность доступа только во время выполнения и только для чтения.

Web-дизайн (с) 2010 All rights reserved