void TPersistent::Assign(TPersistent *Source) позволяет данному объекту присвоить значения свойств и атрибутов другого объекта, заданного в качестве параметра. Например, Destination->Assign(Source);

void TPersistent::AssignTo (TPersistent* Destination) позволяет присваивать значения свойств и атрибутов текущего объекта другому объекту, указанному в качестве параметра. У TPersistent этот метод является виртуальным и защищенным. Этот метод необходим при разработке новых классов для обеспечения возможности присваивания их стандартным классам. Если метод Assign объекта A не знает как выполнить присваивание параметров объекта B, то его метод Assign автоматически вызывает метод AssignTo объекта B. Т. е. если A->Assign(B) не может выполниться для типа объекта B, то внутри метода Assign вызывается B->AssignTo(A).

void TPersistent::DefineProperties(TFiler *Filer) позволяет определить процедуру загрузки и сохранения в потоке неопубликованных свойств. По умолчанию сохраняются только опубликованные свойства, т. е. объявленные в секции __published. У TPersistent этот метод является виртуальным и защищенным.

От TPersistent наследуются классы, которые не являются компонентами, но нуждаются в поточности и присваивании.

Класс TComponent является предком всех компонент. TComponent определяет общее функциональное поведение для всех компонент системы С++Builder, а именно:

-возможность помещения на форму из палитры компонент и манипуляции в окне редактора форм;

-способность владения и обслуживания других компонент;

НЕ нашли? Не то? Что вы ищете?

-специальные характеристики поточности, с которыми может манипулировать инспектор объектов на этапе проектирования.

На уровне TСomponent проявляется отношение "основной - вспомогательный". Это отношение распространяется на все компоненты системы С++Builder. Конструктор TСomponent, в отличие от конструкторов предыдущих классов, имеет параметр AOwner типа TComponent *, указывающий основной компонент для создаваемого компонента. Кроме того, TСomponent содержит ряд свойств, характеризующих отношение "основной - вспомогательный".

Свойство TComponent* TComponent::Owner - указатель на основной компонент. Доступно только для чтения и только во время выполнения приложения (ReadOnly, RunTime). Форма является основной для всех помещенных на нее компонент, приложение Application является основным для всех форм.

int TComponent::ComponentCount содержит количество вспомогательных компонент для данного компонента (ReadOnly, RunTime).

int TComponent::ComponentIndex содержит индекс данного компонента в списке основного компонента (ReadOnly, RunTime). Нумерация начинается с 0. При отображении компоненты с меньшим индексом прорисовываются раньше. Изменить порядок для отображаемых компонент можно с помощью пунктов главного меню Edit | Bring to Front и Edit | Send to Back, изменяющих также Z-порядок. Для неотображаемых компонент с помощью пункта главного меню Edit | Creation Order.

TComponent* TComponent::Components[int Index] содержит массив указателей вспомогательных компонент для данного компонента (ReadOnly, RunTime). Нумерация начинается с 0. При вызове конструктора компонент помещается в список Components компонента, указанного в качестве параметра. При вызове деструктора удаляется из этого списка. Кроме того, можно добавить и удалить компонент из списка с помощью методов void TComponent::InsertComponent (TComponent* AComponent) и void TComponent::RemoveComponent (TComponent* AComponent) соответственно. Внутренняя реализация этого массива представляет собой два отдельных списка TList для отображаемых и неотображаемых компонент.

Отношение "основной - вспомогательный" отвечает за владение и удаление компонентов. При удалении компонента сначала вызываются деструкторы всех вспомогательных компонент. При этом для всех компонент, помещенных на формы в процессе проектирования, при освобождении обнуляются указатели на соответствующие компоненты.

Свойство AnsiString TComponent::Name содержит имя компонента. При помещении на форму имя компонента назначается автоматически на основе имени класса. Например, Button1, Button2 и т. д. для класса TButton, это же имя будет присвоено переменной, содержащей указатель на компонент. Рекомендуется задавать осмысленные имена для более удобного чтения кода. Например, btnStart, btnStop и т. д. Для динамически создаваемых во время выполнения компонент имя может отличаться от имени переменной, допустимо значение NULL. Следует также отметить, что для отображаемых компонент обычно существуют также свойства Caption или Text. Они содержат текстовые строки, отображаемые на самом компоненте (название кнопки, содержимое поля ввода и т. д.). При добавлении компонента на форму эти свойства содержат значения, совпадающие с Name. Однако они имеют принципиально другое назначение и используются лишь для отображения компонента. Например, для нашего примера Caption может быть «Старт» и «Стоп» для кнопок btnStart и btnStop.

TComponent* TComponent::FindComponent (const AnsiString AName) возвращает указатель экземпляра компонента с именем, указанным в качестве параметра. Например:

void_fastcall TForm1::ButtonlClick(TObject *Sender)

{TEdit* EditInstance;

EditInstance = dynamic_cast<TEdit *>(FindComponent("Edit1"));

if (EditInstance) EditInstance->Text="new";}

TComponentState TComponent::ComponentState - текущее состояние компонента. Список возможных значений: (csAncestor, csDesigning, csDestroying, csFixups, csLoading, csReading, csUpdating, csWriting).

TComponentStyle TComponent::ComponentStyle - стиль, определяющий поведение компонента (csInheritable, csCheckPropAvail).

int TComponent::Tag - свойство целого типа, которое не имеет предопределенного значения и может содержать любые данные или указатели, по усмотрению программиста.

TComponent используется в качестве базового класса при создании невидимых компонент.

Класс TControl является предком всех видимых компонент. Поскольку элементы TControl обладают способностью отображать себя, некоторые свойства этого класса оперируют с положением, размером и видом объекта (Top, Left, Width, Height, BoundsRect, Cursor, Hint), а другие свойства относятся к параметрам клиентской области (ClientRect, ClientWidth и ClientHeight). TControl также вводит свойства, устанавливающие видимость, доступность, цвет и шрифт элементов управления (Visible, Enabled, Color и Font). Свойства Text и Caption обеспечивают установку редактируемых текстов и названий. Свойство ControlState задает состояние органа управления (csLButtonDown, csClicked, csPalette, csReadingState, csAlignmentNeeded, csFocusing, csCreating, csPaintCopy, csCustomPaint, csDestroyingHandle, csDocking). Свойство ControlStyle определяет характеристики органа управления (csAcceptsControls, csCaptureMouse, csDesignInteractive, csClickEvents, csFramed, csSetCaption, csOpaque, csDoubleClicks, csFixedWidth, csFixedHeight, csNoDesignVisible, csReplicatable, csNoStdEvents, csDisplayDragImage, csReflector, csActionClient, csMenuEvents). Свойство Align задает выравнивание компонента относительно родительского компонента (alNone, alTop, alBottom, alLeft, alRight, alClient), а свойство Anchor задает привязку к размерам родительского компонента (множество из akLeft, akTop, akRight, akBottom). Свойство Constraints позволяет задать максимальные и минимальные размеры компонента. Метод SetBounds(int ALeft, int ATop, int AWidth, int AHeight) позволяет изменить положение и размер компонента.

Все визуальные компоненты кроме отношения "основной-вспомогательный" находятся также в отношении "старший-младший" или "родитель-ребенок". В аналогичном отношении находятся все органы управления Windows. Поэтому уже у TСontrol появляются некоторые свойства характеризующие это отношение.

Свойство TWinControl* TСontrol::Parent содержит указатель на родительский компонент. Родительскими могут быть только оконные элементы управления, и поэтому они должны быть производным от TWinControl. Сам компонент TControl не может быть родителем, а может быть только дочерним компонентом. Для формы значение свойства Parent задается как NULL.

Кроме того, имеются свойства ParentColor, ParentFont и ParentShowHint типа bool которые определяют, будут ли в качестве значений свойств Color, Font и ShowHint использоваться значения соответствующих свойств родительского компонента.

Все координаты компонента задаются относительно родительского компонента, при этом начало координат это левый верхний угол этого компонента (так называемые локальные координаты). Существуют еще и глобальные координаты с началом координат в верхнем левом углу экрана. Для пересчета локальных координат в глобальные и наоборот используются функции TPoint TControl::ClientToScreen(const TPoint &Point) и TPoint TControl::ScreenToClient(const TPoint &Point) соответственно.

TControl содержит также методы ответственные за отображение органа управления.

void TControl::Hide(void) делает текущий элемент управления невидимым, т. е. устанавливает свойство Visible в false. При этом компонент всего лишь не отображается на экране, он не удаляется из динамической памяти и из списка вспомогательного компонента, и все его методы и свойства остаются доступными.

void TControl::Show(void) отображает текущий элемент управления, т. е. устанавливает свойство Visible в true.

void TControl::Repaint(void) перерисовывает текущий элемент управления. Перерисовка происходит немедленно. При этом, если свойство ControlStyle содержит значение csOpaque, компонент перерисовывает себя самостоятельно, в противном случае вызывается метод Invalidate, а затем Update для перерисовки некоторой видимой части компонента.

void TControl::Refresh(void) вызывает метод Repaint.

void TControl::Invalidate(void) сообщает системе о том, что некоторая область органа управления должна быть перерисована. Перерисовка произойдет при обработке сообщения о перерисовке после обработки всех сообщений находящихся в очереди. Причем Invalidate может быть вызван несколько раз, до того момента как произойдет непосредственно перерисовка.

void TControl::Update(void) позволяет немедленно обработать сообщение о перерисовке. Таким образом, если для компонента до этого был вызван метод Invalidate, это приведет к перерисовке.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14