Кент Рейсдорф. 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, что означает возможность доступа только во время выполнения и только для чтения.