Свойства компонентов и классов C++Builder

В Этой Главе приведены развернутые описания более 200 свойств компонентов и классов C++Builder. Для многих свойств даются примеры их применения. Ко­нечно, это далеко не все свойства. Для многих других свойств вы можете найти краткие описания в главах 1 и 2.

Определения свойств в данной главе даны несколько упрощенно, чтобы более наглядно была видна их суть и для экономии места. В частности, не приводятся их функции чтения и записи, которые могут представлять интерес только при проек­тировании новых компонентов с переопределением свойств родительских компо­нентов. Но в этом случае не представляет труда найти имена функций чтения и за­писи во встроенной справке C++Builder.

В описаниях вы можете встретить идентификаторы, выделенные подчеркива­нием. Например, TCanvas. Это означает, что в этой или других главах в соответст­вующем разделе вы сможете найти развернутое пояснение, комментарий или при­меры, связанные с данным термином.

Значительно большее количество описаний различных свойств вы можете Найти в источнике [3].

Action_________________________________________________________

Определяет действие, связанное с данным управляющим элементом — разде­лом меню, кнопкой и др.

Класс TControI

Определение

___ property Classes::TBasicAction* Action

Описание

Значение свойства Action Выбирается во время проектирования из выпадаю­щего списка предусмотренных действий в Инспекторе Объектов. Этот список фор­мируется в процессе проектирования размещением на форме компонента ActionList И заданием его свойств.

Подробнее о диспетчеризации действий см. в разд. «Организация взаимодей­Ствия компонентов в приложении» в гл. 2.

Active__________________________________________________________

Определяет открытие и закрытие базы данных.

Класс TDataSet

Определение

__ property bool Active

Описание

Свойство Active Определяет наличие соединения с базой данных и управляет этим соединением. Если значение Active Равно False — база данных закрыта и чте­ние или запись данных невозможны.

Установка Active в True Вызывает следующее:

• Генерацию события BeforeOpen.

• Установку набора данных (свойства State) в состояние DsBrowse.

• Открытие курсора в наборе данных.

• Генерацию события AfterOnen.

Если во время открытия набора данных произошла ошибка, набор данных (свойство Statel Переводится в состояние Dslnactive И курсор закрывается.

Приложение должно устанавливать Active в false перед изменением свойств набора данных, влияющих на его состояние или на отображение данных. Если это­го не сделать, то будет сгенерировано исключение EDataBaseError с сообщением: «Cannot performe this operation on an open dataset» — «Невозможно выполнить эту операцию на открытом наборе данных».

Свойство Active может устанавливаться непосредственно или методами Open — установка в true, и Close — установка в false.

Примеры

Tablel->Active = false;

Tablel->TableName = "Pers. db";

Tablel->Active = true;

Первый из приведенных операторов закрывает ранее открытый набор данных. Второй — изменяет таблицу, с которой далее будет работать компонент. Послед­ний оператор открывает эту таблицу.

Аналогичных результатов достигает следующий код:

Tablel->Close () ;

Tablel->TableName = "Pers. db";

Tablel->Open();

Aggregates______________________________________________________

Список объектов совокупных (агрегированных) характеристик клиентского набора данных.

Класс TCustomClientDataSeT

Объявление

__ property TAggregates* Aggregates

Описание

Свойство Aggregates Представляет собой коллекцию типа TAggregates Объек­тов совокупных (агрегированных) характеристик типа TAggregate. Добавлять в Ag­gregates новые элементы во время проектирования можно двумя путями: щелчком на кнопке с многоточием около этого свойства в Инспекторе Объектов, или создани­ем нового поля совокупной характеристики с помощью Редактора Полей, вызывае­мого двойным щелчком на компоненте. В последнем случае одновременно с создани­ем поля автоматически добавляется соответствующий элемент в Aggregates.

При добавлении элемента в Aggregates с помощью Инспектора Объектов от­крывается обычное окно редактора коллекций, в котором кнопкой Add New вы мо­жете добавить новый элемент. Выделив его, вы увидите в окне Инспектора Объек­тов его свойства. Основное из них — Expression. В нем вы должны записать выра­жение, задающее значение поля. Помимо обычных арифметических операций, скобок, имен полей и констант, выражение может содержать следующие функции:

Sum

Сумма значений числового поля или арифметического выражения

Avg

1.

Среднее значение числового поля, или поля даты и времени, или

Арифметического выражения

Count

Число непустых значений указанного поля или выражения. Функция Count(*) Возвращает общее число записей, независимо от значений по­Лей

Min

Возвращает минимальное значение числового поля, строкового поля, поля дат и времени или соответствующего выражения

Мах

Возвращает максимальное значение числового поля, строкового поля, поля дат и времени или соответствующего выражения

В записи выражения нельзя смешивать совокупные характеристики и значе­ния полей, так как это принципиально различные объекты: совокупная характе­ристика — это одно значение, а поле — это множество значений. Приведем приме­ры выражений. Следующее выражение:

Max(Year_b) — Min(Year^b)

Вычисляет диапазон значений поля Year_B. Выражение

Sum(Year_b) / Count(Year_b)

Вычисляет среднее значение поля Year_B, То же, что вычислит и более простое вы­ражение

Avg(Year b)

А выражение

Avg(2002 — Year_b)

Вычислит средний возраст, правда, только в 2002 году.

Помимо задания выражения, вычисляющего характеристику, надо устано­вить в True Свойство Active Данного элемента. В этом случае значение будет вычис­ляться, но только если значение свойства AgxrenatcsAetive компонента клиент­ского набора будет установлено в True. Можете также задать имя элемента AggregateName.

Характеристики могут вычисляться по всем записям или по некоторой их со­вокупности. При вычислениях по всем записям свойство GroupingLevel Элемента должно быть равно 0, а свойство IndexName Не задается. В остальных случаях эти свойства задаются (подробнее о группировании записей см. в [1] и [3]).

Для добавления элемента в Aggregates Во время выполнения используется ме­тод Add Класса TAggregates, После создания элемента надо задать его свойство Expression И можно указать имя AggregateName. Например:

TAggregate* A= ClientDataSetl->Aggregates->Add();

A->AggregateName = "AvgYear";

A->Expression = "Avg(Year_b)";

Значение Совокупной характеристики читается методом Value. Найти соот­ветствующий объект в Aggregates Можно или методом Find, Или по его индексу в подсвойстве Items свойства Aggregates. Например, отобразить введенную выше характеристику можно оператором

ShowMessage(ClientDataSetl->Aggregates->Find("AvgYear"->Value()); или оператором

ShowMessage(ClientDataSetl->Aggregates~>Items СО]->Value());

Если вы хотите ввести во время проектирования поле совокупной характери­стики, сделайте двойной щелчок на компоненте клиентского набора данных, в от­крывшемся окне Редактора Полей щелкните правой кнопкой мыши и выберите команду New. Откроется окно задания нового поля. В этом окне, в частности, будет радиокнопка Aggregate. Ее надо включить и задать имя поля Name. Тип поля авто-

Матически установится равным Aggregate. Щелкнув на OK, вы вернетесь в окно Ре­дактора Полей, в нижней части которого появится новое поле. Выделив его, вы увидите в окне Инспектора Объектов его свойства. Вам надо задать Expression, GroupingLevel и IndexName так же, как описано выше для элемента типа

TAggregate.

Отображать значения характеристик введенных полей можно обычными ком­Понентами, используемыми для обычных полей набора данных.

Al I Gn_________________ __________________________________________________

Определяет способ выравнивания компонента внутри контейнера (родитель­ского компонента).

Класс TControL

Определение

Enum TAlign ( alNone, alTop, alBottom, alLeft, alRight, alClient, alCustom ) ;

Typedef Set<TAlign, alNone, alClient> TAlignSet;

__ property TAlign Align

Описание

Свойство Align определяет, остается ли компонент неизменным при изменении размеров содержащей его формы, панели, другого компонента, или он изменяется, занимая всю доступную площадь, ее верхнюю, нижнюю, левую или правую часть.

Возможные значения свойства:

Значение

Описание

AlNone

Компонент остается там, где он размещен во время проектирования. Размеры его не изменяются. Это значение Align по умолчанию.

AlTop

Компонент занимает всю верхнюю часть контейнера и во время выполнения приложения его ширина изменяется при изменении ширины контейнера. Высота компонента остается неизменной.

AlBottom

Компонент занимает всю нижнюю часть контейнера и во время вы­полнения приложения его ширина изменяется при изменении ши­рины контейнера. Высота компонента остается неизменной.

AlLeft

Компонент занимает всю левую часть контейнера и во время вы­полнения приложения его высота изменяется при изменении высо­ты контейнера. Ширина компонента остается неизменной.

AlRight

Компонент занимает всю правую часть контейнера и во время вы­полнения приложения его высота изменяется при изменении высо­ты контейнера. Ширина компонента остается неизменной.

AlClient

Компонент занимает всю клиентскую область контейнера и во вре­мя выполнения приложения его размеры изменяются при измене­нии размеров контейнера. Если в контейнере часть клиентской об­ласти уже занята, компонент занимает всю ее оставшуюся часть.

AlCustom

Введено в C++Builder 6. Позиция компонента определяется вызо­вами функций CustomAlignPosition и CustomAlignInsertBefore.

Значение Align По умолчанию — AlNone. В приложениях, в которых пользо­ватель может изменять размер формы, а сама форма разбита панелями или други­ми компонентами на ряд областей, необходимо изменять это значение Align.

Если компонент имеет значение Align, Равное alCIient, то в процессе проекти­рования невозможно добраться до содержащего его контейнера и щелкнуть на нем, чтобы получить в Инспекторе Объектов его свойства и события. В этом случае возможны два решения: щелкнуть на компоненте и нажать клавишу Esc или осу­ществить выбор компонента-контейнера с помощью выпадающего списка в верх­ней части Инспектора Объектов.

Значения Align AlTop И alBottom имеют приоритет перед AlLeft И AlRight. По­этому, если вы, например, ввели на форму две панели, одной задали значение

AlLeft, А второй задаете значение AlTop, То вторая панель вытеснит верхнюю часть первой панели, которая первоначально заняла всю левую часть клиентской облас­ти. Если это нежелательно, приходится вводить дополнительные панели, являю­щиеся контейнерами для других панелей.

В C++Builder 6 введено значение выравнивания AlCustom (заказное) и тип TAlignSet — множество значений выравнивания. Если какие-то дочерние компо­ненты контейнера имеют значение Align = AlCustom, То в компоненте-контейнере можно перегрузить виртуальный метод CustomAlignPosition, который будет авто­матически вызываться каждый раз при изменении размеров контейнера для каж­дого дочернего компонента, имеющего Align = AlCustom И Visible = True. Этот ме­тод объявлен следующим образом (учтите, что во встроенной справке C++Builder 6 его объявление неверное):

Virtual void___________ fastcall CustoinAlignPosxtion (TControl* Control,

Int SNewLeft, int &NewTop, int SNewWidth, int SNewHeight, Types;;TRect SAlignRect, const TAlignInfo SAlignInfo) ;

Параметр Control — это выравниваемый компонент. Параметры NewLeft, NewTop, NewWidth, NewHeight Можно изменять, задавая новые координаты ле­вого верхнего угла, ширину и высоту. Параметр AlignRect Определяет область вы­равнивания, но не для данного компонента, а для следующего. Параметр AlignInfo Определяет структуру типа TAlignlnfo, Содержащую сведения о вырав­нивании дочерних компонентов контейнера:

Struct TAlignlnfo

{

ClassesTList* AlignList; int ControlIndex;

TAlign Align;

Int Scratch;

} ‘■

Имеется еще один метод, который может быть переопределен при заказном выравнивании:

Virtual bool fastcall CustomAlignInsertBefore(TControl* Cl,

TControl* C2);

Функция CustomAlignInsertBefore Поочередно вызывается для каждой пары Cl и С2 дочерних компонентов контейнера, в которых Align = AlCustom и Visible = True, И определяет, в какой последовательности должны выравниваться компонен­ты, т. е. в какой последовательности вызывается процедура CustomAlignPosition Для различных компонентов.

При вызовах CustomAlignlnsertBefore Пары перечисляются в последователь­ности их расположения в свойстве Controls Контейнера, причем С1 — второй ком­понент в паре, а С2 — — первый. Например, если форма содержит три панели Panell, Panel2 и Panel3, Размещенных в Controls Именно в этой последовательно­сти, то при первом вызове Cl = Panel2, C2 Panell, При втором Cl = Panel3, C2 = Рапе12, При третьем Cl = Panel3, C2 = Panell. Функция должна возвращать True, Если компонент С1 должен выравниваться прежде, чем С2 (здесь в справке C++Builder 6 тоже ошибка). В классе TWinControl Функция CustomAlignInsert

Before Всегда возвращает False, Так что по умолчанию выравнивание компонентов происходит в той последовательности, в которой они расположены в свойстве Controls. Но можно переписать эту виртуальную функцию. Например, если в пере­писанном варианте всегда возвращать True, То последовательность выравнивания изменится на противоположную.

Пример

Пусть вы проектируете форму, которая содержит:

1. панель Panell, На которой размещается, в частности, список ListBoxl

2. панель Рапе12, На которой размещаются какие-то надписи вверху окна формы

3. компонент Memol, В котором будут редактироваться тексты

Так как размер списка ListBoxl Может возрастать по мере его заполнения, же­лательно дать пользователю возможность увеличивать его высоту, изменяя высоту окна формы. Панель Рапе12 Всегда должна заполнять верхнюю часть окна формы. А площадь окна Memol Должна изменяться пропорционально изменению окна формы, чтобы пользователь мог увеличить область редактирования.

В этом примере логично для панели Рапе12 Задать значение Align, Равным alTop, чтобы ширина панели автоматически менялась с изменением ширины окна. Панель займет всю верхнюю часть формы, а ее высота будет такой, какую вы установите. Для панели Panell Следует задать значение Align, Равным alLeft, так как увеличение ее ширины не имеет смысла, а увеличение высоты позволяет уви­деть большую часть списка ListBoxl. Компонент Panell Займет всю левую часть клиентской области, оставшейся свободной после размещения Рапе12. Для компо­нента Memol Следует задать значение Align, Равным AlClient, Что позволит компо­ненту увеличиваться и в высоту, и в ширину, увеличивая площадь редактирова­ния. При этом компонент Memol Займет всю площадь клиентской области, остав­шуюся после размещения Panell и Рапе12.

Подобное традиционное использование свойства Align Вряд ли может вызвать затруднения. Поэтому рассмотрим далее только пример заказного выравнивания.

Пусть у вас имеются на форме две панели Panell и Рапе12, И вы хотите, чтобы при любых изменениях размеров окна панель Panell Занимала всю левую полови­ну формы, а Panel2 — всю правую. Вы можете это сделать следующим образом. Расположите панели на форме любым образом. Задайте в обеих панелях Align = alCustom. Далее напишите следующий код:

Заголовочный файл:

Class TForml : public TForm

{

_ published: // IDE-managed Components

TPanel *Panell;

control,
int snewwidth,
TPanel *Panel2;

Void _fastcall CustomAlignPosition(TControl* int SNewLeft, int SNewTop,

Int SNewHeight, Types: :TRect SAlignRect, const TAlignInfo SAlignInfo); private: //User Declarations

Fastcall TForml(TComponent* Owner)

1;

public: // User Declarations

Файл реализации:

Void____ fastcall Trorml::CustomAlignPosition(TControi* Control,

Int SNewLeft, int SNfewTop, int SNewWidth,

Int SNewHeight, Types::TRect SAlignRect, const TAlignInfo SAlignInfo)

{ .

Panell->Left = 0;

Panell->Top = 0;

Panel2->Top = 0;

NewWidth = ClientWidth / 2;

NewHeight = ClientHeight; if (Control == Panel2)

NewLeft CTientWidth / 2;

}

Вы ввели в класс формы объявление перегруженной функции CustomAlign- Position. В ее реализации вы задали для каждой панели ширину, равную половине ширины ClientWidth Клиентской области формы, и высоту, равную высоте Client — Height Клиентской области формы. Кроме того, вы сдвинули на половину ширины ClientWidth Левую координату панели Рапе12.

Впрочем, рассмотренный пример можно и, возможно, проще решить обработ­Чиком события формы OnResize (см. соответствующий раздел в гл. 5).

Alignment — свойство TField

Определяет выравнивание значений полей при их отображении в компонен­тах, связанных с данными.

Класс TField Определение

Епшп TAlignment { taLeftJustify, taRightJustifу, taCenter 1; property Classes::TAlignment Alignment

Описание

Свойство Alignment Определяет выравнивание значений полей при их отобра­жении в компонентах, связанных с данными. Возможные значения Alignment:

TaCenter

Выравнивание в горизонтальном направлении по центру ком — | понента I

TaLeftJustify

Выравнивание по левому краю компонента

TaRight Justify

Выравнивание по правому краю компонента J

Anchors_________________________ ______________________________

Определяет привязку данного компонента к родительскому при изменении размеров последнего.

Класс TControl

Определение

Enum TAnchorKind { akLeft, akTop, akRight, akBottom ); typedef Set<TAnchorKind, akLeft,. akBottom> TAnchors;

___ property TAnchors Anchors

Описание

Свойство Anchors Введено начиная с C++Builder 4. Оно определяет привязку данного компонента к родительскому при изменении размеров последнего. Свойст­во представляет собой множество типа Set, которое может содержать следующие

Элементы:

AkTop

Компонент привязан к верхнему краю родительского

AkLeft

Компонент привязан к левому краю родительского

AkRight

Компонент привязан к правому краю родительского

AkBottom

Компонент привязан к нижнему краю родительского

Если в множестве Anchors Присутствуют привязки к противоположным сторо­нам родительского компонента, то при изменении родительского компонента про­исходит растяжение или сжатие данного компонента, поскольку расстояния от сторон родительского компонента выдерживаются. Сжатие может происходить вплоть до полного уничтожения изображения данного компонента. Для компонен­та TPaintBox, привязанного к противоположным сторонам родительского компо­нента, при изменении размеров родительского компонента изображение стирается и наступает событие OnPaint.

Примеры

1. Buttonl->Anchors. Clear();

Buttonl->Anchors << akLeft « akBottom;

Первый из этих операторов очищает множество Anchors Кнопки Buttonl, Уда­ляя из него первоначальные установки. Второй оператор привязывает кнопку Buttonl к левому и нижнему краям окна. При изменении размеров окна кноп­ка будет перемещаться, сохраняя установленное расстояние от левого и ниж­него краев формы.

2. Задание компоненту списку TListBox Свойства Anchors, Равного [akLeft, ak-

Top, akBottom], Приведет к тому, что при изменении высоты окна будут под­держиваться постоянными расстояния верхнего и нижнего краев компонента соответственно от верхнего и нижнего краев окна. Таким образом, увеличивая высоту окна пользователь может увеличивать число строк, видимых в списке без прокрутки. При этом необходимые с точки зрения эстетики расстояния до краев окна будут поддерживаться автоматически.

3. Buttonl->Anchors. Clear();

Buttonl->Anchors << akLeft « akBottom « akRight;

В этом случае кнопка привязана к левому, нижнему и правому краям формы.

При изменении высоты окна кнопка будет перемещаться синхронно с нижним краем окна. А при изменении горизонтального размера окна кнопка будет рас­тягиваться или сжиматься по горизонтали, что, конечно, будет создавать ужасный зрительный эффект. При сжатии кнопка может сжаться до нуля, после чего ее изображение исчезнет.

AsBoolean, AsCurrency, AsDateTime, AsFloat, Aslnteger,

AsString, AsVariant_

Свойства, осуществляющие взаимное преобразование различных типов значе­ний полей.

Класс TField Определения

_ property bool AsBoolean

__ property System::Currency AsCurrency

_ property System::TDateTime AsDateTime

__ property double AsFloat;

__ property int Aslnteger

__ property AnsiString AsString

__ property System: :Variant AsVariant

Описание

Свойства AsBoolean, AsCurrency, AsDateTime, AsFloat, Aslnteger, AsString, As Variant Осуществляют в классах-наследниках TField Перевод одного типа зна­чений в другой. Например, свойство AsString Переводит тип любого поля в строку при чтении значения поля и осуществляет обратный перевод строки в тип поля при записи значения поля. Аналогичные преобразования осуществляют другие свойства для булевых значений (AsBoolean), Монетарных (AsCurrency), Для дат и времени (AsDateTime), Для действительных (AsFloat) и целых (Aslnteger) чи­сел, для значений типа Variant (AsVariant).

Примеры

Если компонент Tablel Связан с таблицей, содержащей строковое поле Dep, целочисленное поле YearJb И булево поле Sex, вы можете написать

EDep->Text = Tablel-S-FieldByName("Dep")->AsString;

EYear->Text = Tablel->FieldByName("Year_b")->AsString;

ESex->Text = Tablel->FieldByName("Sex")->AsString; и в окна редактирования EDep, EYear и ESex Будут занесены в текстовом виде значе­ния в текущей записи полей Dep, YearJb И Sex, Хотя поле Dep имеет тип строки, поле YearJb — целое значение, а поле Sex — булево. Если для поля Sex вы не задавали значений DisplayValues, то в окне редактирования ESex Будут отображены значения "true" или "false". Если же вы задали значения свойства DispIayValues, Например "м;ж" или "мужск;женск", то отобразятся именно эти заданные значения.

То же свойство AsString Работает и как обратное преобразование типов. Про­должая предыдущий пример вы можете после того, как пользователь отредактиро­вал значения в полях редактирования EDep, EYear И ESex, Внести эти значения в текущую запись, например, следующим кодом:

Tablel->Edit();

Tablel->FieldByName("Dep")->AsString = EDep->Text;

Tablel->FieldByName("Year_b")->AsString = EYear->Text;

Tablel->FieldByName("Sex")->AsString = EΞex->Text;

Tablel->Post();

Для полей Year_b и Sex текст будет преобразован соответственно в целое и булево значение. При этом не обязательно, чтобы пользователь в окне ESex писал полно­стью обозначение пола сотрудника. Ему достаточно написать только первую букву: "t" или "f", если отображаемые значения true и false, и ”м" или "ж", если отобра­Жаемые значения "мужск" и "женск".

Attributes______________________________________________________________

Атрибуты описания поля.

Класс TFieldDef Определение

Erɪum TFieldAttribute IfaHiddenCol, faReadonly, faRequired, faLink, faOnNamed, faFixed);

Typedef SetkTFieldAttribute, faHiddenCol, faFixed> TFieldAttributes;

_ property TFieldAttributes Attributes

Описание

Свойство Attributes Содержит атрибуты объекта TFieldDef. Является множе­ством, которое может содержать следующие значения:

FaHiddenCol

Внутренний флаг невидимых столбцов

 

FaReadonly

Определяет свойство «только для чтения»

 

JfaRequired

Определяет поле, которое является обязательным в каждой записи

FaLink

Внутренний флаг вложенного набора данных

FaUnNamed

Указывает объект TObjectField без имени во вложенной табли­це. Значение только для внутреннего использования

FaFixed

Указывает, что поле имеет фиксированный размер

AttributeSet_______________________________________________________________

Имя множества атрибутов словаря данных, применяемого к данному полю.

Класс TField

Определение

_ property SystemziAnsiString AttributeSet

Описание

Свойство AttributeSet Определяет имя множества атрибутов словаря данных, применяемого к данному полю. Множество атрибутов определяет формат и отобра­жение поля в компонентах, связанных с данными, в процессе проектирования, а также устанавливают ограничения значений поля, значения по умолчанию и многое другое.

Множества атрибутов хранятся в словаре атрибутов. Когда во время проекти­рования объект поля связывается с конкретным множеством, его имя заносится В свойство AttributeSet.

AutoCalcFields___________________________________________________

Определяет режим автоматической генерации событий OnCalcFields.

Класс TDataSet

Определение

__ property bool AutoCalcFields

Описание

Свойство AutoCalcFields, Установленное в True (значение по умолчанию), оп­ределяет, что события OnCalcFields. Связанные с пересчетом вычисляемых полей, генерируются каждый раз, когда:

• Открывается набор данных.

• Набор данных (его свойство State) переводится в состояниеdsEdit.

• Фокус перемещается между визуальными компонентами, связанными с дан­ными, или перемещается по столбцам связанной с данными таблицы, если в записи были сделаны изменения.

• Отыскивается запись в базе данных.

Чтобы сократить частоту пересчетов по событиям OnCalcFields, Можно уста­Новить AutoCalcFields В False.

AutoGenerateValue_______________________________________________

Показывает, Может ли значение поля генерироваться автоматически в базе данных на сервере.

Класс TField Определение

Enum TAutoRefreshFlag {arNone, arAutoInc, arDefault};

__ property TAutoRefreshFlag AutoGenerateValue

Описание

Свойство AutoGenerateValue Определяет, может ли значение поля генериро­ваться и обновляться автоматически в базе данных на сервере. Такая автоматиче­ская генерация значений присуща полям с автоматическим нарастанием значений (autoincrement) и полям со значением по умолчанию.

Обычно при пересылке записи в базу данных значения таких полей не обнов­ляются автоматически. Для изменения значения Value Надо применять к набору данных метод Refresh. Если же в наборе данных свойство AutoRefresh Установле­но в True, То обновление данных происходит автоматически. Однако некоторые драйверы баз данных не могут определить, значения каких полей могут автомати­чески создаваться сервером. Свойство AutoGenerateValue Позволяет снабдить по­добные драйверы необходимой информацией.

Это свойство может принимать значения:

ArNone

Поле не имеет значения по умолчанию и не является автоматиче­ски нарастающим. Такие поля автоматически не обновляются

ArAutoInc

Поле является автоматически нарастающим

ArDefault

Поле имеет значение по умолчанию, задаваемое сервером

Задание AutoGenerateValue Необходимо не всегда. Многие драйверы, исполь­зующие метаданные, нормально работают с любыми полями, даже если AutoGene — rateValue = arNone. Но для надежности и облегчения перехода с одной платфор­мы баз данных на другую лучше все-таки задавать соответствующие значения

AutoGenerateValue.

Изменение значения AutoGenerateValue При открытом наборе данных вызы­вает исключение.

При использовании наборов данных, не основанных на BDE, а также при AutoRefresh = false Значение AutoGenerateValue Игнорируется.

AutoMerge_____________________________________________________

Определяет, должно ли главное меню вторичной формы объединяться с меню главной формы.

Класс TMainMenu

Определение

__ property bool AutoMerge

Описание

Если требуется, чтобы меню вторичных форм объединялись с меню главной формы, то в каждой такой вторичной форме надо установить AutoMerge в True. При этом свойство главной формы должно оставаться в False. Способ объединения меню определяется свойствами Grouplndex Элементов меню Items Типа TMenuItem.

В приложениях MDI объединение меню осуществляется автоматически неза­Висимо от значения свойства AutoMerge.

AutoRefresh____________________________________________________

Определяет, обновляются ли автоматически значения полей, вычисляемые сервером.

Класс TDBDataSeT

Определение

__ property bool AutoRefresh

Описание

Свойство AutoRefresh Определяет, обновляются ли автоматически значения полей, вычисляемые сервером. К таким полям относятся поля с автоматически на­растающим значением (autoincrement) и поля со значениями по умолчанию. Если AutoRefresh = false, То значения таких полей при пересылке записи в базу дан­ных не обновляются. Для их обновления надо явным образом вызывать метод Refresh. Если AutoRefresh = True, то обновление таких полей производится авто­матически и вызов Refresh Не требуется.

Некоторые драйверы баз данных не могут сами распознать поля с автоматиче­ским нарастанием значения и поля, имеющие значения по умолчанию. В подоб­ных случаях надо задать для всех полей, значения которых должны обновляться, свойство AutoGenerate Value. Это свойство снабдит драйверы необходимой инфор­мацией. Свойство AutoGene rate Value Надо задавать также для полей наборов дан­Ных, отображающих запросы SQL и хранимые процедуры.

Au to Select_______

Указывает, будет ли выделяться весь текст, когда элемент получает фокус.

Класс TCustomEdit

Определение

__ property bool AutoSelect

Описание

Свойство AutoSelect, Установленное в True, Показывает, что при получении элементом фокуса весь текст окажется выделенным. Это свойство относится толь­ко к элементам редактирования одной строки текста.

Свойство AutoSelect Имеет смысл устанавливать в True, Если по условиям работы Пользователь будет скорее заменять текст, имеющийся в окне, чем дополнять его.

AutoSize

Определяет, будет ли высота элемента автоматически адаптироваться к разме­ру символов текста.

Классы TCustomEdit, TCustomLabel, TImage И др.

Определение

__ property bool AutoSize

Описание

При свойстве AutoSize, Установленном в False, Размеры компонента фиксиро­ваны. При AutoSize, Установленном в True, В классах-наследниках TCustomLabel (метках), в TImage И ряде других компонентов др. ширина и высота компонента автоматически адаптируется к размерам текста или изображения. В классах-на­следниках TCustomEdit (окнах редактирования) ширина компонента остается фиксированной, а высота изменяется так, чтобы высота клиентской области соот­ветствовала высоте текста. Например, высота элемента меняется при изменении Шрифта или стиля бордюра.

Bitmap_________________________________________________________

Определяет внешний нестандартный шаблон размером 8 на 8 пикселов, кото­рый использует для заполнения кисть Brush.

Класс TBrush Определение

_ property TBitmap* Bitmap

Описание

Свойство кисти Bitmap указывает на объект типа TBitmap, в который загружен шаблон размером 8 на 8 пикселов, используемый для заполнения кистью Brush.

Если для кисти задан шаблон BitMap, То заполнение производится именно этим шаблоном, независимо от значения свойства кисти Style. Шаблон BitMap Мо­Жет создаваться в процессе выполнения приложения или, например, загружаться из файла.

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

Изменение изображения в объекте TBitmaD Не влияет на шаблон, пока не про­изведено повторное присваивание свойству Bitmap.

После окончания работы с шаблоном объект TBitmap Следует удалить из па­мяти, так как автоматически это не делается.

Пример

Graphics::TBitmap *MyBitmap = new Graphics; ; TBitmap,-

Try

(

MyBitmap->LoadFromFile("MyBitmap. bmp");

Imagel->Canvas->Brush->Bitmap = MyBitmap;

}

_ finally

, ‘ (

Imagel->Canvas->Brush->Bitmap = NULL;

Delete MyBitmap;

)

В этом примере создается объект MyBitmap Типа TBitmap И в него загружает­ся битовая матрица из Файла С именем «MyBitmap. bmp». Затем свойству Ima — Gel->Canvas->Brush->Bitmap Присваивается указатель на этот объект. После этого загруженный шаблон можно использовать для заполнения фигур на канве Imagel. В конце кода свойству BitMap Присваивается значение NULL, После чего заполнение опять начинает определяться свойством Style. Затем объект MyBitmap Уничтожается, чтобы освободить занимаемую им память.

BlockReadS ize__________________________________________________

Свойство, определяющее число записей, помещаемых при чтении в буфер.

Класс TBDEDataSeT

Определение

__ property int BlockReadSize

Описание

Свойство BlockReadSize Определяет число записей, помещаемых при чтении в буфер. Заданное число записей читается, заносится в буфер, и, пока указатель таблицы не вышел за пределы прочитанных записей, новое чтение не производит­ся. Соответственно, не осуществляется и повторное отображение в компонентах отображения данных, что ускорят работу и позволяет избежать неприятных мер­цаний. Установка BlockReadSize В 0 запрещает чтение блоков записей. Задание BlockReadSize > 0 переводит состояние набора данных State В DsBlockRead И ус­Коряет работу приложения.

Bof

Свойство указывает, находится ли курсор на первой записи.

Класс TDataSet

Определение

Property bool. Bof

Описание

Свойство Bof определяет, находится ли курсор на первой записи. Значение Bof устанавливается в Tr Не •.

• При открытии набора данных

• В результате выполнения метода First

• При ошибке выполнения метода Prior Из-за того, что курсор уже расположен

На первой записи

• В остальных случаях Bof = False.

Пример

Следующий пример показывает типичный способ организации цикла по запи­сям набора данных. Пусть в вашем приложении имеется выпадающий список с именем E Который вы хотите заполнить данными, содержащимися в полях Dep всех записей таблицы, соединенной с компонентом Tablel. Причем запол­няться он должен в обратном порядке — от последней записи к первой. Это можно сделать следующим кодом:

CBdep->Clear();

Tablel->Last();

While (! Tablel->Bof)

<

CBdeρ->Items->Add(Tablel->FieldByName("Dep")->AsString);

Tablel->Prior();

} ,

Первый оператор кода очищает список CBdep. Второй — устанавливает кур­сор таблицы на последнюю запись. Далее следует цикл по всем записям, пока не достигнута первая, что проверяется выражением Tablel->BOF. Для каждой запи­си в список заносится значение поля Dep, после чего методом Prior Курсор переме­Щается к предыдущей записи.

Bookmark_______________________________________________________________

Свойство определяет текущую закладку набора данных.

Класс TDataSet

Определение

__ property AnsiString Bookmark;

Описание

Свойство Bookmark Определяет текущую закладку набора данных. Свойство Bookmark Можно устанавливать, для запоминания текущей записи, а затем после перемещения по набору данных читать Bookmark Для быстрого возврата к той же записи.

О методах работы с закладками см. в гл. 4 раздел «BookmarkValid, Compare — Bookmarks, GetBookmark, GotoBookmark, FreeBookmark».

Пример

В следующем примере делается закладка на текущей записи и после цикла по набору данных осуществляется возврат на запись, которая до этого была текущей.

TBookmark SavePlace;

// ЗаклаДка на текущей записи SavePlace = Queryl->GetBookmark() ;

//Цикл По записям

Описание

Свойство Break Используется в длинных меню, чтобы разбить список разделов на несколько столбцов. Возможные значение Break:

I mbNone

Отсутствие разбиения меню. Это значение принято по умолчанию

MbBarBreak

В меню вводится новый столбец разделов и данный раздел явля­ется верхним в новом столбце. Столбец отделяется от предыду­щего полосой

I mbBreak

В меню вводится новый столбец разделов и данный раздел явля­ется верхним в новом столбце. Столбец отделяется от предыду­щего пробелами

Brush

Определяет цвет и стиль заполнения фона окна.

Класс TWinControL

Доступ Только Для чтения

Определение

__ property Graphics::TBrush* Brush

Описание

Свойство Brush (кисть) присуще многим оконным объектам, включая Canvas. Его можно читать, чтобы определить цвет и стиль заполнения фона окна. Это свой­ство только для чтения. Однако атрибуты объекта Brush Можно изменять, исполь­зуя свойства Color И Style. Кроме того, все свойства объекта могут быть изменены методом Assign.

Тип TBrush Определяет свойства и методы объекта Brush. См. информацию О свойствах и методах, а также примеры в разд. «TBrush» Гл. 1.

CacheBlobs_______

Показывает, кэшируются ли поля BLOB в памяти.

Класс TBDEDataSeT

Определение

__ property bool CacheBlobs

Описание

Свойство CacheBlobs Показывает, кэшируются ли поля BLOB в памяти. Кэши­рование позволяет повысить производительность при перемещении по записям, когда приложение отображает образы полей BLOB. По умолчанию CacheBlobs = true, т. е. Кэширование производится. Если приложение не предусматривает посто­янное отображение полей BLOB, то целесообразно установить CacheBlobs = false, Чтобы сэкономить ресурсы памяти.

Описание

Свойство CachedUpdates Определяет, кэшируются ли изменения набора дан­ных (при значении True), Или кэширование не производится. При кэшировании все изменения данных, вставка новых записей, удаление существующих записей, т. е. все манипуляции с данными, проводимые пользователем, сначала делаются не в самой базе данных, а запоминаются в памяти во временной, виртуальной табли­це. И только по особой команде после всех проверок правильности вносимых в таб­лицу данных пользователю предоставляется возможность или зафиксировать все эти изменения в базе данных в рамках одной транзакции, или отказаться от этого и вернуться к тому состоянию, которое было до начала редактирования.

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

Альтернативой кэширования при работе в сети является использование кли­Ентского набора данных и компонента-провайдера.

Calculated______________________________________________________

Определяет, является ли поле вычисляемым в обработчике события OnCaIc-

Fields.

Класс TField

Определение

_ property bool Calculated

Описание

Свойство Calculated Определяет, является ли поле вычисляемым в обработчи­ке события OnCalcFields. По умолчанию Calculated = false. При Calculated = True значение поля определяется обработчиком события OnCalcFields. Значения таких полей не сохраняются в базе данных.

Значение Calculated Устанавливается во время проектирования в Редакторе Полей и не может изменяться во время выполнения.

Надо представлять себе различие между свойствами Calculated И Internal — CalcField. Свойство Calculated Указывает на расчет значения поля в обработчике события OnCalcFields. А свойство InternalCalcField указывает на то, что значение Поля вычисляется или сервером SQL, Или Borland Database Engine (BDE).

CanModify — свойство TDataSet____________________________________________

Определяет возможность редактирования набора данных.

Класс TDataSet

Доступ Только Для чтения

Определение

__ property bool CanModify

Описание

Свойство CanModify Определяет, возможно ли редактирование набора данных, и управляет этой возможностью. Если значение CanModify Равно True, То редактиро­вание (т. е. изменение, добавление, удаление записей) возможно. Если значение CanModify Равно True, То набор данных является просто таблицей только для чтения.

Значение CanModify Автоматически устанавливается в момент открытия таб­лицы в зависимости от значения свойства ReadOnly. Если значение ReadOnly Рав­но True, То значение CanModify Устанавливается в False. Но значение CanModify Автоматически устанавливается в False Также в случаях, когда:

• Другое приложение заблокировало набор данных.

• Таблица базы данных спроектирована только для чтения.

Однако значение CanModify, Равное True, Еще не гарантирует возможность вставлять или изменять записи. Это может зависеть еще от ряда факторов, напри­Мер, от привилегий доступа SQL.

CanModify — свойство TField_____________________________________

Определяет, может ли данное поле модифицироваться.

Класс TField

Доступ Толь ко Для чтения

Определение

__ property bool CanModify

Описание

Свойство CanModify Определяет, может ли данное поле модифицироваться. Проверка этого свойства позволяет узнать, можно ли редактировать его значение. CanModify Равно true, только если ReadOnly = false И набор данных имеет доступ Для записи этого поля базы данных.

Canvas_________________________________________________________

Поверхность (холст, канва) для рисования во многих компонентах.

Классы TForm, TImage, TBitMap, TPaintBoxn другие

Доступ Только для чтения

Определение

___ property Graphics::TCanvas* Canvas

Описание

Свойство Canvas Типа TCanvas Используется для рисования пером Реп и ки­стью Brush для модификации изображения, наложения друг на друга нескольких изображений.

В компоненте типа TImage Канва может использоваться только в случае, если в свойство Picture Загружена битовая матрица или ничего не загружено. Если в Picture Находится объект типа, отличного от TBitMap, то при обращении к Canvas Генерируется исключение EInvalidOperatioH. Если же в Picture Находит­ся битовая матрица, то Canvas Можно использовать для редактирования изображе­Ния, например, для добавления в изображение надписей методом TextOut.

Capacity_______________________________________________________

Количество элементов массива указателей, которые могут храниться в объек­тах списков.

Классы TList, TStringLIst Определение property int Capacity

Описание

Свойство Capacity Можно задавать, чтобы определить число указателей, кото­рые могут храниться в объектах списков классов TList и TStrIntfList. Если при увеличении Capacity Оказывается, что ресурсы памяти исчерпаны, генерируется исключение EOutOfMemory.

Свойство Capacity Отличается от близкого ему свойства Count. Capacity Пока­зывает, сколько указателей может храниться в массиве, т. е. емкость списка, a Count Показывает, сколько указателей в действительности хранится в массиве. Поэтому значение Capacity Всегда не меньше значения Count.

При добавлении в массив нового элемента Count Автоматически увеличивает­ся на Если при этом значение Count превышает значение Capacity, то Capacity Тоже автоматически увеличивается, причем с запасом (обычно запас равен 3). Так что свойство Capacity Вообще можно нигде в приложении не задавать. Смысл зада­ния Capacity Заключается только в том, чтобы предотвратить слишком частое пе­рераспределение памяти при добавлении новых элементов списка.

При удалении элементов списка Count Автоматически уменьшается, а значе­ние Capacity Остается неизменным. Таким образом, при сокращении длины спи­ска получаются излишние затраты памяти. В эти случаях целесообразно умень­шить Capacity до значения Count (если не планируется в ближайшее время нового увеличения числа элементов).

Если задать значение Capacity Меньшее, чем Count, Генерируется исключение EListError С сообщением: «List capacity out of bounds […)» («Емкость списка вне допустимых пределов»). В квадратных скобках указывается значение Count.

Очистка списка методом Clear Сбрасывает Capacity На нуль.

Значение Capacity Может быть увеличено методом Expand.

Пример

TList *List = new TList ();

List->Clear();

List->Capacity = 5;

// Тут List->CθUnt = 0 И List->Capacity = 5

For(int I = 1; I <= 5; I++)

List->Add(.. .) ;

// Тут List->C, ount = 5 И Tist->Capadty = 5

For (int I = О; I <= 2; I++)

List->Delete(I);

// Тут List->Count = 2 И List-TCapadty = 5

List->Capacity = List->Capacity — 3;

// Тут List-TCount 2 И List->Capacity = 2

Этот пример будет выполнять те же самые функции и без операторов List->Capacity = 5;

И

List->Capacity = List->Capacity — 3;

Но первый из этих операторов экономит время при увеличении длины списка, А второй — сокращает затраты памяти.

Caption__________

Определяет строку текста, идентифицирующую компонент для пользователя.

Класс TControL

Определение

___ property System::AnsiString Caption;

Описание

Свойство Caption Связывает с компонентом некоторую строку текста, пояс­няющую его назначение. Чаще всего это надписи на кнопках, метках, панелях, тексты разделов меню и т. д.

По умолчанию Caption Совпадает с именем компонента — свойством Name и изменяется при его изменении.

Для разделов меню и кнопок можно в свойстве Caption Указать символы быст­рого доступа. Для этого перед соответствующим символом надо поставить символ амперсанда — &. Следующий за амперсандом символ будет отображаться подчерк­нутым и будет являться символом быстрого доступа: при выполнении приложения нажатие клавиши Alt + клавиши данного символа будет эквивалентно выбору со­ответствующего раздела меню или нажатию соответствующей кнопки.

Если в текст строки Caption Надо ввести символ амперсанда, его надо повто­рить дважды: &&.

Для разделов меню задание значения Caption, Равного символу, означает

Разделительную черту.

Примеры

1. Примеры задания свойства Caption В процессе проектирования меню:

Задание

Отображение

&Файл

Файл

Фор&мат

Формат

Сохранить &как

Сохранить как

2. Пример использования метки для отображения результата ответа пользовате­ля:

If (Editl->Text = "1")

Labell->Caption = "Ответ правильный";

Else Labell->Caption = "Ответ ошибочный";

3. Примеры присваивания свойству Caption Значений, отличных от строк:

Labell->Caption = 5;

Label2->Caption =

Label3->Caption = ‘А’;

Charset________________________________________________________

Свойство типа TFont. Определяющее набор символов шрифта.

Класс Graphics

Определение

__ property TFontCharset Charset

Описание

Свойство Charset Определяет набор символов шрифта — объекта типа TFont.

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

В C++Builder предопределено много констант, соответствующих стандартным наборам символов. Большинство из них, относящихся к японскому, корейскому, китайскому и другим языкам, вряд ли представляют интерес для наших читате­лей. Поэтому ниже приводится сокращенная таблица этих констант.

Константа

Значение

Описание

ANSI ^CHARSET

0

Символы ANSI.

DEFAULT_CHARS ET

1

Задается по умолчанию. Шрифт выбира­ется только по его имени Name и разме­ру Size. Если описанный шрифт недо­ступен в системе, то Windows заменит его другим шрифтом.

SYMBOL CHARSET

2

Стандартный набор символов.

MAC_CHARSET

77

Символы Macintosh. Недоступны для

NT 3.51.

GREEK_CHARSET

161

Греческие символы. Недоступны для NT 3.51.

RUSSIAN_CHARSET

204

Символы кириллицы. Недоступны для

NT 2-51.

EASTEUROPE_CHARSET

238

Включает диакритические знаки (зна­ки, добавляемые к буквам и характери­зующие их произношение) для восточ­но-европейских языков. Недоступны

Для NT 3.51.

OEM_CHARSET

255

Зависит от кодовой таблицы операцион­ной системы.

По умолчанию в объекте типа TFont Задается значение Charset, Равное DEFAULT_CHARSET. Для имен шрифтов, принятых в C++Builder по умолча­нию, это обычно нормальный вариант. Но в ряде случаев полезно для отображения русских текстов с другими шрифтами заменить это значение на RUSSIAN_CHAR- SE. Это позволит отобразить символы кириллицы для тех шрифтов, для которых при Default chakset символы кириллицы не отображаются нормально.

Пример

См. пример 4 в разд. Font.

ChildDefs_______________________________________________________

Объект TFieldDef, Содержащий массив дочерних поле.

Класс TFieldDef

Определение

__ property TFieldDefs * ChildDefs

Описание

Если поле является объектом, подобным TADTField или TArrayFit Id, То до­черние поля хранятся как объекты массива TFieldDefs, На который указывает свойство ChildDefs.

Класс TContRol

Определение

__ property int ClientHeight

Описание

Свойство ClientHeight Может использоваться для чтения или изменения высо­ты клиентской области. Чтение ClientHeight Необходимо, чтобы изменять место­положение или размеры компонентов, расположенных в клиентской области, при изменении размеров компонента-контейнера (см. примеры в разд. BoundsRect).

Эквивалентно по значению свойству ClientRect. Bottom (см. CIientRect).

В классе TControl Значение ClientHeight равно значению Height. Но в произ­водных классах оно обычно меньше Height. Например, для формы значение ClientHeight Может уменьшаться из-за бордюра, полосы заголовка, полосы меню, полосы прокрутки.

Пример

Пусть вы проектируете форму, содержащую панель Panell, На которой разме­щается список ListBoxl, Причем во время выполнения высота этой формы может изменяться. Тогда обеспечить синхронное изменение размера окна списка можно, вставив в событие OnResize Формы или этой панели оператор:

ListBoxl->Height ≈ Panell->ClientHeight — ListBoxl->Top — 20;

ClientOrigin_____________________________________________________

Координаты положения на экране левого верхнего угла клиентской области компонента.

Класс TControl

Доступ Только Для чтения

Определение

Struct TPoint // полное Определение см. в гл. 1 {_

Int х; int у;

);

__ property Windows :: TPoint ClientOrigin

Описание

Свойство ClientOrigin Возвращает экранные координаты Xu Y левого верхне­го угла клиентской области компонента. Горизонтальная координата X и верти­кальная координата Y хранятся в структуре типа TPoint. Началом координат счи­тается левый верхний угол экрана.

Экранные координаты ClientOrigin Для компонентов, не являющихся потом­ками класса TWinControl (т. е. не являющихся окнами), определяются как экран­ные координаты родительского компонента (компонента-контейнера), сложенные со значениями свойств Left и Тор. Если компонент не имеет родителя, то при по­пытке чтения ClientOrigin Генерируется исключение EInvalidOperation.

Определение

Struct TRect // Полное определение см. в гл. 1

{ .

Int Left;

Int Тор; int Right; int Bottom;

};

__ property Windows::TRect ClientRect

Описание

Свойство ClientRect Возвращает структуру типа TRect. характеризующую прямоугольную клиентскую область компонента. При этом поля структуры Тор и Left устанавливаются в нуль, а поля Right И Bottom Определяются соответствен­но значениями свойств ClientWidth И ClientHeIght. Так что ClientRect Эквива­Лентна функции Rect Вида Rect(0, 0, ClientWidth, ClientHeight).

ClientWidth_____________________________________________________

Горизонтальный размер клиентской области в пикселах.

Класс TControl

Определение

__ property int ClientWidth

Описание

Свойство ClientWidth Может использоваться для чтения или изменения гори­зонтального размера клиентской области. Чтение ClientWidth Необходимо, чтобы изменять местоположение или размеры компонентов, расположенных в клиент­ской области, при изменении размеров компонента-контейнера (см. подобные при­меры в разд. «BoundsRect»).

Эквивалентно по значению свойству ClientRect-Right (см. ClientRectl.

В классе TControl Значение ClientWidth Равно значению Width. Но в произ­водных классах оно обычно меньше Width За счет бордюра, полосы прокрутки И иных элементов оформления.

ClipRect________________________________________________________

Определяет доступную область рисования на канве и область, подлежащую пе­рерисовке при обработке события OnPaint.

Класс TCanvas

Доступ Толъко Для чтения

Определение

Struct TRect // Полное определение см. в гл. 1

{

Int Left; int Top; int Right; int Bottom;

);

__ property Windows::TRect ClipRect

Описание

Свойство канвы ClipRect Определяет доступную область рисования на канве и об­ласть, нуждающуюся в перерисовке. Вне области ClipRect Рисовать невозможно.

При обработке события формы OnPaint это свойство определяет ту часть кан­вы, вне которой перерисовка не требуется. Использование этого свойства позволя­Ет сократить затраты времени на перерисовку.

Color___________________________________________________________________

Цвет фона компонента, цвет текста объекта TFont И др.

Класс TControL

Определение

___ property Graphics::TColor Color

Описание

Свойство Color Определяет цвет фона компонента или цвет текста объекта TFont. Значение цвета может задаваться как значение, определяющее интенсив­ности красного, зеленого и синего цветов в формате RGB, или равным одной из пре­допределенных в C++Builder констант (см. варианты задания цвета и некоторые Рекомендации по выбору цвета в описании типа TColor В гл. 1).

CommandText — свойство TCustomClientDataSet______________________________

Строка запроса SQL.

Класс TcustomClientDataSet

Объявление

___ property AnsiString CommandText

Описание

Свойство CommandText Определяет данные, которые клиентский набор хочет получить от провайдера. Это или строка запроса SQL, который должен выполнить сервер, или имя таблицы, или имя хранимой процедуры.

Если клиентский набор использует внутренний провайдер, задание значения CommandText Необходимо. При этом, например, в наборе TSQLClientDataSet Свойство CoinmaiidType определяет, что именно задано в CommandText: Запрос, имя таблицы, или имя хранимой процедуры.

При использовании внешнего провайдера, задание CommandText Не обяза­тельно. Это свойство будет срабатывать только в том случае, если в провайдере в свойстве Options Включена опция poAllowCommandText. Тогда значение Com — mandText Будет заменять то свойство, с помощью которого набор данных сервера связывается с данными.

Значение CommandText Пересылается провайдеру при открытии набора дан­ных или при выполнении метода Execute.

Возможные типы запроса CommandText Определяются тем серверным компо­нентом, с которым связывается клиентский набор. Если, например, в качестве сер­верного набора используется TTable, то значение CommandText Должно указывать таблицу, с которой осуществляется связь. Например, операторы

ClientDataSetl-Klose();

ClientDataSetl-KominandText = "Dep";

ClientDataSetOOpen () ;

Обеспечат связь с таблицей Dep, независимо от того, с какой таблицей был связан набор данных до этого.

Если в качестве серверного набора используется компонент, выполняющий за­просы SQL (например, TQuery), То значение CommandText Должно указывать за­прос SQL. Например, операторы

ClientDataSetl->Close ();

ClientDataSetl-XonimandText = Editl-SText;

ClientDataSetl-Xpen О ;

Обеспечат выполнение запроса, содержащегося в окне Editl.

Если запрос SQL содержит параметры, следите за правильной их последова­тельностью, так как провайдер распознает параметры в запросе CommandText Только по индексам.

Примеры

Пусть в приложении имеется клиентский набор данных ClientDataSetl, Свя­занный через провайдера с таблицей базы данных Pers, и имеется выпадающий список ComboBoxl. Компонент базы данных воспринимает запросы SQL (напри­мер, это компонент TQucry). Мы хотим заполнить ComboBoxl Именами полей на­бора данных и предоставить пользователю возможность, выбрав в списке нужное поле, обеспечить индексацию данных по этому полю.

Для решения этой задачи в обработчик события формы OnCreate Надо вста­вить операторы:

ComboBoxl-SItems-SAssign(ClientDataSetl-XieldList) ;

ComboBoxl-XtemIndex = 0;

Первый из этих операторов заносит в ComboBoxl Список полей, предоставляе­мый свойством FicldList.

Для обеспечения индексации по выбранному пользователем полю в обработ­чик события OnChange Компонента ComboBoxl Можно вставить операторы:

ClientDataSetl-Xlose () ;

ClientDataSetl-S-ConimandText = "Select * from Pers order by " + ComboBoxl-SText;

ClientDataSetl-SOpenO ;

Первый оператор закрывает набор данных. Второй формирует текст Com — mandText, Используя имя поля, выбранное пользователем. Последний оператор открывает набор данных. Поскольку в нем задано значение CommandText, То именно этот запрос будет выполняться. Но обязательное условие, при котором этот код работает — — в провайдере в свойстве Options Должна быть задана опция PoAlIowCommandText.

CommaText, DelimitedText, Delimiter, QuoteChar_____________________

Определяют полный текст списка строк.

Класс TStrings

Определения

__ property AnsiString CommaText

__ property AnsiString DelimitedText

__ property char Delimiter

__ property char QuoteChar

Описание

Свойство CommaText Возвращает текст списка строк, в котором отдельные строки объединены в одну строку формата SDF (system data format). Отдельные ис­ходные строки разделяются в итоговой строке запятыми и каждая строка, если в ней имеются символы пробелов, заключается в двойные кавычки. Если в исход­ных строках использовались символы двойных кавычек, они дублируются (полу­чается два следующих друг за другом символа).

Свойство DelimitedText — также полный текст списка, но в нем отдельные строки выделены кавычками, определенными свойством QuoteChar, И, кроме того, отделены друг от друга символом, указанным в свойстве Delimiter. Свойства CommaText и DelimitedText Идентичны, если Delimiter = и QuoteChar = ’

ComponentCount, ComponentIndex, Components______________________

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

Класс TComponent

Определения

__ property int ComponentCount

__ property int Componentlndex

__ property TComponent* Components [int Index]

Описание

Свойство Components Содержит массив компонентов, которыми владеет дан­ный компонент. Параметр Index Позволяет сослаться на любой компонент с помо­щью его свойства Componentlndex, Определенного в классе TComponent, Индексы отсчитываются от 0, т. е. индекс первого компонента равен 0. Общее число компо­нентов, содержащихся в массиве Components, Определяется свойством Compo — NentCount, Объявленным в классе TComponent. Значение ComponentCount На 1 Меньше последнего индекса массива Components.

Свойство Components Может использоваться вместе с ComponentCount В цик­лах, когда надо изменить какие-то свойства всех компонентов.

Примеры

1. В приведенном ниже примере все компоненты на данной форме, кроме компо­нента с именем Buttonl, Смещаются вправо на 10 единиц.

For(int i = 0; i < ComponentCount; i+ + ) if(Components[i]->Name!= "Buttonl")

((TControl *)Components[i])->Left += 10;

2. Ниже приведен аналогичный пример, но используется свойство Tag и сдвига­ются только компоненты, у которых Tag =1.

For (int i = 0; i < ComponentCount; i++) if(Components[i]->Тад == 1)

((TControl *)Components[i])->Left += 10;

Connected______________________________________________________

Свойство, определяющее, активно ли соединение с базой данных.

Класс TDatabase

Определение

__ property tool Connected

Описание

Свойство Connected (соединение) совместно со свойством KeepConnection Управляют процессом соединения компонентов с базой данных. Если KeepConnec- tion Равно True, То соединение с базой данных постоянное даже при отсутствии от­крытых наборов данных. Если же KeepConnection равно False, То для регистрации на сервере надо устанавливать Connected в True При каждом открытии таблицы.

Описание

Свойство ConnectKind показывает, как должно устанавливаться соединение компонента TOleServer С сервером OLE. Это свойство может принимать следую­щие значения:

CkRunningOrNew

Подсоединиться к выполняющемуся серверу или создать новый экземпляр сервера

CkNewInstance

Всегда создавать новый экземпляр сервера

CkRunningInstance

Только подсоединиться к выполняющемуся серверу

CkRemote

Подсоединиться к удаленному серверу. Эта опция дол­жна сочетаться с заданием RemoteMachineName∣

J CkAttachToInterface

Не подсоединяться к серверу. Вместо этого приложение обеспечивает интерфейс методом ConnectTo. Эта опция не может использоваться совместно с установкой свойст­ва AutoConnect Ij

ConstraintErrorMessage

См. раздел «CustomConstraint и ConstraintErrorMessage*

Constraints — свойство TControl____________________________________________

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

Класс TControl

Определение

Property TSizeConsfcraints* Constraints

Описание

Свойство Constraints Является объектом типа TSizeConstraints. Этот объект имеет четыре основных свойства: MaxHeight, MaxWidth, MinIIeight И Min — Width — соответственно максимальная высота и ширина и минимальная высота и ширина компонента. Тип каждого из этих свойств — TConstraintSize Целое без знака.

По умолчанию значения свойств MaxHeight, MaxWidth, MinHeight И Min — Width равны 0, что означает отсутствие ограничений. Но задание любому из этих свойств положительного значения приводит к соответствующему ограничению размера заданным числом пикселов.

Чтобы какие-то компоненты не исчезали из поля зрения при изменениях пользователем или программой размеров окна приложения, можно задать компо­нентам ограничения минимальной высоты и длины. Таким образом можно поддер­живать нормальные пропорции отдельных частей окна. Можно задать ограниче­ния на минимальные и максимальные размеры формы, т. е. всего окна. Например, если вы зададите для формы значения MaxHeight = 500 И MaxWidth = 500, то пользователь не сможет сделать окно большим, чем квадрат 500×500. Причем это ограничение будет действовать, даже если пользователь нажмет системную кноп­ку, разворачивающую окно на весь экран. Окно развернется, но его размеры не превысят заданных. Это иногда полезно делать, чтобы развернутое окно не засло­нило какие-то другие нужные пользователю окна.

Класс TDataSet

Определение

___ property TCheckConstraints* Constraints

Описание

Свойство Constraints Определяет ограничения на допустимые значения пара­метров на уровне записи. Его значение является объектом типа TCheckConst — raints, Содержащим ограничения и имеющим свои свойства и методы. Основное свойство — индексированный массив ограничений Items:

___ property TCheckConstraint* Items[int Index]

Элементы этого массива являются объектами типа TCheckConstraint. Основ­ные свойства этих объектов:

I……….

AnsiString CustomConstraint

Текст ограничения на языке SQL. Ограничения действуют только на уровне приложения и не влияют на запись данных на сервер в базу дан­Ных

IAnsiString ErrorMessage

Строка, отображаемая в диалоговом окне, если пользователь ввел данные, не удовлетворяющие ограничению

Ъоо! FromDictionary

Определяет, должны ли искаться ограничения в словаре данных

Во время выполнения добавить новое ограничение можно методом Add Класса

TCheckConstramts:

HIDESBASE TCheckConstraint*________ fastcall Addfvoid)

После этого, получив доступ к объекту ограничения через свойство Items класса TCheckConstraints, Можно задавать свойства ограничения.

Во время проектирования свойство Constraints Устанавливается нажатием кнопки в этом свойстве в Инспекторе Объектов. В результате открывается диалого­вое окно списка ограничений. Щелкая в нем на кнопке Add вы можете занести в свойство Constraints Набор ограничений. Выделив одно из ограничений, вы уви­дите в Инспекторе Объектов его свойства и можете установить их.

Например, можно написать в свойстве CustomConstraint:

((Sex=true) and (Year_b >1955))or<(Se×=false) and (Year_b>1965)) а в свойстве ErrorMessage: «Принимаем только мужчин >1955 г. р. и женщин >1965

Это обеспечит вам различные границы отбора по возрасту для мужчин и жен­щин (предполагается, что Sex — булево поле, обозначающее пол, A Year_b — поле, содержащее год рождения).

Описание

Свойство ControlCount Используется совместно со свойством Controls В итера­циях по всем дочерним компонентам данного оконного элемента. Свойство Cont­Rols, с которым используется ControlCount, Дает доступ к дочерним компонентам. Значение ControlCount Всегда на 1 больше последнего индекса дочернего компо­нента, поскольку индексы считаются с 0.

См. примеры в описании Controls.

Controls _______________________________________________________

Список дочерних компонентов оконного элемента.

Класс TWinControL

Доступ Толь ко Для чтения

Определение

__ property TControl* Controls tint Index]

Описание

Свойство Controls Является массивом всех дочерних компонентов данного оконного элемента. Дочерними являются те компоненты, которые расположены в клиентской области данного оконного элемента и в свойстве Parent Которых ука­зан как родитель данный элемент. Параметр Index Определяет индекс соответст­вующего компонента. Индекс, начинающийся с 0, соответствует положению ком­понента в Z-последовательности данного родительского элемента.

Свойство Controls Обычно используется в итеративных процедурах групповой обработки дочерних компонентов, когда на них неудобно ссылаться по имени. В подобных итеративных процедурах обычно используется также свойство Cont — rolCount. Определяющее число дочерних компонентов.

Надо четко представлять себе отличие свойства Controls От свойства Compo­nents. Свойство Components Относится не к дочерним компонентам, а к тем, кото­рыми владеет данный объект. В частности, всеми компонентами на форме владеет форма и они содержатся В ее списке Components.

Свойство Controls Предназначено только для чтения. Оно изменяется (точнее меняются индексы компонентов) при изменении Z-последовательности.

Изменить Z-последовательность в процессе проектирования можно, выполне­нием команд Bring To Front или Send To Back. Первая из них пересылает выделенный компонент наверх, присваивая ему максимальный индекс, а вторая пересылает вниз, присваивая ему минимальный индекс (0 для неоконных компонентов и ми­нимально возможный для оконных, поскольку всегда неоконные компоненты име­ют индекс меньше оконных). Выполнить эти команды можно или из раздела меню Edit, или щелкнув правой кнопкой мыши и выбрав их из всплывающего меню.

Программно место компонента в Z-последовательности можно изменить мето­дами BringToFront И SendToBack. На Z-последовательность влияют также методы InsertControl и RenioveControJ, добавляющие и удаляющие дочерние компонен­ты, и изменение свойства компонентов Parent, меняющее родителя компонента.

Примеры

Пусть в приложении в классе формы определена некоторая функция void fastcall Func(TObject *Sender);

Которая обрабатывает объект, передаваемый в нее через аргумент Sender. Это мо­жет быть какая-то процедура изменения размеров и места расположения, окраши­вания, перестановок и т. д. Например, она может содержать оператор

((TControl *)Sender)->Left += 10;

Сдвигающий объект на 10 пикселов вправо. Тогда обработать этой процедурой все дочерние компоненты, например, панели Panell Можно с помощью оператора:

For(int i = O; i < Panell->ControlCount; i++J Func(Panell->Controls[i]) ;

Если надо обработать только какую-то группу компонентов с идущими по по­рядку индексами и известны их начальный и конечный индексы Indl и Ind2, то соответствующий оператор может иметь вид

For(int i = Indl; i <= Ind2; i+ + )

Func(Panell->Controls[i]);

Задать нужную последовательность индексов можно описанными выше спосо­бами в процессе проектирования или во время выполнения приложения.

Выяснить истинную последовательность индексов для той же панели Panell Можно, например, оператором:

For(int i = О; i < Panell->ControlCount; i++)

ShowMessageCInd= " + IntToStr(i) + ‘ ‘ +

Panell->Controls[i]->Name);

ControlState______________________________________________________________

Множество значений, характеризующих состояние компонента во время вы­полнения приложения.

Класс TControl

Определение

Enum Controls_ 7 ( CsLButtonDown, csClicked, csPalette,

CsReadingState, CsAlignmentNeeded, csFocusing, csCreating, CsPaintCopy,

CsCustomPaint, CsDestroyingHandle,

CsDocking };

Typedef Set<Controls 7, CsLButtonDown, csDocking> TControIState;

_ property TControlState ControlState

Описание

Свойство ControlState Определяет различные условия, действующие на дан­ный экземпляр компонента, например, щелчок мыши или необходимость вырав­нивания компонента. Свойство используется в основном при создании новых клас­сов, производных от TControl. Свойство является множеством типа Set и может содержать следующие флаги:

1 Состояние

Пояснение

I

CsLButtonDown

Левая кнопка мыши нажата, но еще не освобождена.

CsClicked

То же самое, что csLButtonDown, но только в том случае, если свойство компонента ControlStyle содержит флаг csClickEvents, означающее, что событие, связанное с на­жатием кнопки, интерпретируется как щелчок.

CsPalette

Компонентом или одним из его родителей получено сооб­щение WM PALETTCHANGED.

CsReadingState

Компонент читает свое состояние из потока.

CsAlignmentNeeded

Компонент должен осуществить выравнивание.

CsFocusing

Приложение получило сообщение о переключении фокуса на данный компонент. Это не гарантирует, что компонент получит фокус, но позволяет предотвратить рекурсивные

Вызовы.

Состояние

Пояснение

Il CsCreating

Создается данный компонент, или его владелец, или управляемый им компонент. Этот флаг очищается, когда создание компонента завершено.

CsPaintCopy

Компонент должен быть перерисован. Это состояние воз­можно, если свойство ControlStvle Содержит флаг CsRep — licatable.

CsCustomPaint

Компонент обрабатывает сообщения перерисовки

CsDestroyingHandle

Окно компонента разрушается.

I CsDocking

Компонент находится в процессе встраивания.

Свойство ControlState Характеризует не класс в целом, а конкретный объект

Класса.

ControlStyle____________________________________________________________

Множество значений, характеризующих стиль компонента.

Класс TControl Определение

Enum Controls _8 I CsAcceptsControls, CsCaptureMouse, CsDesignInteractive, CsClickEvents, csFramed, CsSetCaption, CsOpaque,

CsDoubleClicks, CsFixedWidth, CsFixedHeight, CsNoDesignVisible, CsReplicatable,

CsNoStdEvents, CsDisplayDragImage,

CsReflector, CSActionClient, CsMenuEvents );

Typedef SetkControls 8, CsAcceptsControls, csMenuEvents>

TControlStyle;

_ property TControlStyle ControlStyle

Описание

Свойство ControlStyle Определяет различные атрибуты компонента, например, может ли он быть захвачен мышью или имеет ли он фиксированные размеры. Свой­ство используется в основном при создании новых классов, производных от TControl. Свойство является множеством типа Set и может содержать следующие флаги:

Флаг

Пояснение

,! CsAcceptsControls

Компонент становится родителем любого компонента, пе­ренесенного на него В процессе проектирования.

CsCaptureMouse

Компонент перехватывает события мыши после щелчка на нем.

CsDesignInteractive

Компонент устанавливает соответствие во время проекти­рования щелчка правой кнопки мыши щелчку левой кнопки для манипуляций с компонентом.

CsClickEvents

Компонент получает сообщение о щелчке мыши и реаги­рует на него.

CsFramed

Компонент имеет объемную рамку.

Флаг

Пояснение

CsSetCaption

Компонент должен изменять надпись на нем в соответст­вии со свойством Name, Если только надпись не задана явным образом.

, csOpaque

Компонент полностью заполняет свою клиентскую область.

CsDoubleClicks

Компонент получает сообщение о двойном щелчке мыши и реагирует на него. Если флаг не установлен, то двойной щелчок интерпретируется как просто щелчок.

CsFixedWidth

Ширина компонента не меняется и не масштабируется.

I CsFixedHeight

Высота компонента не меняется и не масштабируется.

CsNoDesignVisible

Компонент невидим во время проектирования.

I CsReplicatable

Компонент может копироваться методом PaintTo Для прорисовки произвольной канве.

! CsNoStdEvents

Игнорируются стандартные события, такие, как нажатие кнопок мыши, клавиш, щелчки. Этот флаг надо устанав­ливать, если ваш код не должен реагировать на эти собы­тия; в результате ваше приложение будет выполняться

Быстрее.

I CsDisplayDragImage

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

Мыши.

___________________

CsReflector

Компонент реагирует на сообщения Windows, поступаю­щие из диалогов, сообщения о фокусировке, сообщения об изменении размеров. Этот флаг устанавливается, если компонент может использоваться как элемент ActiveX и должен реагировать на эти события.

CsActionClient

Компонент связан с объектом действия. Этот флаг уста­навливается при установке свойства Action и сбрасывает­ся при очистке Action.

IcsMenuEvents

Компонент отвечает на команды главного меню.

Свойство ControlStyle Описывает не свойства отдельных экземпляров класса, а класс в целом. Флаги не могут изменяться для различных экземпляров компо­нентов и не могут изменяться в процессе выполнения приложения. Изменяемые характеристики отображаются свойством ControlState.

Конструктор класса TControl Инициализирует свойство ControlStyle Значе­Ниями [csCaptureMouse, csClickEvents, csSetCaption, CsDoubleClicks].

CopyMode____________________________ ____________________

Определяет режим копирования графического изображения на канву. Класс TCanvas Определение property int CopyMode

Описание

Свойство канвы CopyMode Определяет режим копирования графического изо­бражения на канву методом CopyRect Или при рисовании объекта TBitmap. Ис­пользуя свойство можно достичь различных эффектов объединения изображений и их комбинирования.

Возможны следующие значения свойства CopyMode (используемые константы определены в Windows. hpp):

CmBlackness

Заполняет область канвы, в которую производится копирова­ние, черным цветом. Собственное изображение на канве и ко­пируемое изображение игнорируются

CmDstInvert

Инвертирует изображение на канве. Копируемое изображение игнорируется

CmMergeCopy

Комбинирует изображение канвы и копируемое изображение, используя булеву операцию and. To же, что cmSrcAnd

______________

CmMergePaint

Комбинирует изображение канвы и инверсию копируемого изображения, используя булеву операцию ог

CmN OtSrcCopy

Копирует на канву инверсное изображение. Собственное изоб­ражение на канве игнорируется

CmN ot SrcErase

Комбинирует изображения канвы и копируемого изображения, используя булеву операцию or, а затем инвертирует результат

CmPatCopy

Копирует шаблон источника на канву. Собственное изображе­ние на канве игнорируется

CmPatInvert

Комбинирует изображение канвы и шаблон источника, испо­льзуя булеву операцию хог

CmPatPaint

Комбинирует инверсное изображение источника и его шаблон, используя булеву операцию or. Затем этот результат комбини­рует с изображением канвы, используя булеву операцию or

CmSrcAnd

Комбинирует изображения канвы и источника, используя бу­леву операцию and. To же, что cmMergeCopy

CmSrcCopy

Копирует изображение источника на канву. Собственное изобра­жение на канве игнорируется. Этот режим принят по умолчанию

CmSrcErase

Инвертирует изображение на канве и комбинирует результат с изображением источника, используя булеву операцию and

CmSrcInvert

______________

Комбинирует изображения канвы и источника, используя бу­леву операцию Хог. Повторное копирование восстанавливает прежнее изображение на канве

, CmSrcPaint

Комбинирует изображения канвы и источника, используя бу­леву операцию or

Cm Whiteness

Заполняет область канвы, В которую производится копирова­ние, белым цветом. Собственное изображение на канве и копи­руемое изображение игнорируются

Примеры

Операторы

Imagel->Canvas->CopyMode = cmSrcCopy;

Imagel->Canvas->CopyRect(Rect(О,0,100,100),Image2->Canvas Rect (0, 0,100, 100) ) ;

Обеспечивают копирование области изображения канвы компонента Image2 На канву компонента Imagel. Изображение, которое ранее было на канве компонента Imagel, В операциях не участвует.

Операторы

Imagel->Canvas->CopyMode = CmSrcInvert;

Imagel->Canvas->CopyRect(Rect(0,0,100,100),Image2->Canvas,

Rect (0, 0, 100, 100) ) ;

Imagel->Canvas->CopyRect(Rect(0,0,100,100),Image2->Canvas,

Rect(0,0,100,100));

Обеспечивают копирование части изображения канвы компонента Image2 На кан­ву компонента Imagel В режиме CmSrcInvert. После выполнения функции Сору — Rect В первый раз изображения в компонентах Imagel И Image2 Налагаются друг на друга, а в результате выполнения функции CopyRect Во второй раз исходное изображение на канве компонента Imagel Восстанавливается.

Операторы

Imagel->Canvas->CopyMode = CmWhiteness;

Imagel->Canvas->CopyRect(Rect(0,0,100,100),Image2->Canvas,

Rect(0,0,100,100));

Просто очищают указанную область канвы компонента Imagel, Закрашивая ее бе­лым цветом. При этом изображение в компоненте Image2 Никак не участвует В операциях копирования.

Count — свойство TCoIlection_____________________________________

Число объектов в контейнере TCoIlection.

Класс TCoIlection

Определение

__ property int Count

Описание

Свойство Count Определяет число объектов в контейнере TCoIlection — в мас­сиве Items. Поскольку индексы, как всегда в C++Builder, начинаются с 0, то зна­чение Count На единицу больше последнего индекса в Items.

Пример

См. пример в гл. 4, в разд. «BeginUpdate».

Count — свойство !’Fields

См. разд. «Fields».

Count — свойство списков________________________________________

Количество элементов массива списка.

Классы TList. TStrinsLisT. TStrinss

Определение

PRoperty int Count

Описание

Свойство Count Показывает число элементов массива указателей, хранящихся в объекте класса TList. TStringList Или TStrings. При Добавлении или удалении элементов методами Add И Delete Значение Count Увеличивается или уменьшается автоматически. Если намеренно увеличить значение Count, То в список добавится соответствующее число нулевых указателей NULL. Если намеренно уменьшить значение Count, То соответствующее число последних элементов списка будет уда­лено.

Значение Count Не всегда равно действительному числу указателей на объек­ты, хранящихся в списке, поскольку ряд хранящихся в нем указателей могут иметь значение NULL. Удалить эти элементы NULL можно методом Pack.

Свойство Count Отличается от близкого ему свойства Capacity. Capacity Пока­зывает, сколько указателей может храниться в массиве, т. е. емкость списка, a Count Показывает, сколько указателей в действительности хранится в массиве. Поэтому значение Count Всегда не больше значения Capacity.

Пример

См. пример в разд. Capacity.

Ctl3D__________________________________________________________

Определяет, будет ли компонент выглядеть объемным или плоским.

Класс TWInControl

Определение

__ Property bool Ctl3D

Описание

Свойство Ctl3D Определяет внешний вид элемента. Если Ctl3D установлено в true, элемент выглядит объемным. Если же Ctl3I) установлено в False, То эле­мент выглядит плоским. По умолчанию Ctl3D равно true.

Если свойство дочерних компонентов ParentCtl3D установлено в true, то из­менение свойства родительского компонента автоматически приводит к из­менению свойств дочерних компонентов. Когда явным образом идет уста­

Новка свойства Ctl3D компонента, его свойство ParentCtlBD Автоматически уста­Навливается в False.

Cursor__________________________________________________________________

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

Класс TControL

Определение

Enum TCursor {crMin=0x7fff-1, crMax=0x7fff};

__ property TCursor Cursor

Описание

Изменение изображения курсора мыши при перемещении его в области ком­понента указывает пользователю на действия, которые он при этом может совер­шить. Имеется еще одно свойство, аналогичное Cursor — свойство DragCursor. Оно отвечает за изображение курсора при перемещении его в области компонента

В процессе перетаскивания.

Значения свойств Cursor И DragCursor Являются индексом списка возможных курсоров, управляемого глобальной переменной Screen. Кроме встроенных типов курсоров, обеспечиваемых в TScreen, Приложение может добавить в список свои заказные изображения.

Таблицу встроенных в TScreen типов курсоров см. в гл. 1, в разд. «TCursor».

CurValue

Текущее значение поля с учетом изменений, внесенных другими пользовате­лями.

Класс TField

Определение

_ property System::Variant CurValue

Описание

Свойство CurValue Определяет текущее значение поля с учетом изменений, внесенных другими пользователями. Это значение можно использовать, когда воз­никают проблемы с пересылкой значения в базу данных. При возникновении та­ких проблем в клиентском наборе данных генерируется событие OnReconcile — Еггог. На стороне сервера компонент-провайдер генерирует событие OnUpdate — Error. В обработчике этого события можно сравнить NewValue — новое значение, которое не уди лось переслать, OldVaIue — прежнее значение до начала редактиро­вания данного поля, и CurValue — текущее значение поля. Текущее значение мо­жет отличаться от если другой пользователь изменил значение поля за

Время, которое прошло после чтения OldValue,

Свойство поддерживается только в наборах данных TClientDataSet.

CustomConstraint И ConstraintErrorMessage_________________________

Строка SQL, накладывающая ограничение на вводимое пользователем значе­ние поля.

Класс TField

Определение

_ property AnsiString CustomConstraint

_ property AnsiString ConstraintErrorMessage

Описание

Свойство CustomConstraint Позволяет написать ограничение на вводимое зна­чение поля в виде строки SQL. Если вы задали свойство CustomConstraint, То необ­ходимо задать и свойство ConstraintErrorMessage. Оно содержит строку текста, который будет показан пользователю в диалоговом окне в случае, если он вводит данные, не удовлетворяющие поставленным ограничениям.

Ограничение, введенное в CustomConstraint, Действует одновременно с огра­ничением, которое может передаваться с сервера. Это внешнее ограничение вы мо­жете прочитать в свойстве ImportedConstraint.

Применение свойства CustomConstraint Удобнее задания MinValue и Max — Value, поскольку не требует перехвата исключений. К тому же ограничение, запи­санное в CustomConstraint, Может применяться не только к числовым полям.

Пример

Для поля Year_b, Определяющего год рождения, вы можете написать в свойст­ве CustomConstraint:

X < 1980 and X > 1950

Это ограничение требует, чтобы вводимый год рождения был меньше 1980 и больше 1950. Имя поля, использованное в выражении (в данном выражении оно обозначено как X), может быть произвольным идентификатором.

Одновременно необходимо задать соответствующую строку в свойстве Const — raintErr or Message. Например, «Возраст претендента на должность не Подходит» .

Data, XMLData — свойства TcustomClientDataSet____________________

Данные клиентского набора.

Класс TcustomClientDataSet

Объявления

Property System:=OleVariant Data

__ property System: =OleVariant XMLData

Описание

Свойство Data Представляет все данные клиентского набора в виде пакета, ис­пользуемого клиентским набором данных. В таком виде данные получаются от провайдера, из файла, из другого клиентского набора.

Свойство XMLData Представляет те же данные, что Data, Но не в двоичном виде, а как пакет XML.

Примеры

См. пример в гл. 4, в разд. «DataRequest, OnDataRequest — методы и событие».

Database_______________________________________________________

Свойство, определяющее объект базы данных.

Класс TDBDataSet

Доступ Толь ко Для чтения

Определение

__ property TDatabase Database

Описание

Свойство Database Определяет компонент базы данных TDatabase. С которым связан набор данных. Этот объект создается автоматически, когда открывается база данных, указанная в свойстве DatabaseName. Объект Database Дает доступ к свойствам, методам и событиям базы данных.

Пример

Следующий пример показывает организацию пересылки в базу данных отре­дактированной записи с помощью объекта Database.

Tablel->Database->TransIsolation = tiDirtyRead;

Tablel->Database->StartTransaction () ;

// Пересылка Данных

Tablel->Database->Commit();

DatabaseName — свойство TDBDataSet_____________________________

Свойство, определяющее имя базы данных, связанной с набором данных.

Класс TDBDataSEt

Определение

__ property AnsiString DatabaseName

Описание

Свойство DatabaseName Определяет имя базы данных. Оно соответствует объ­екту базы данных TDatabase.

Во время проектирования DatabaseName В компонентах наборов данных (Table, Query И др.) устанавливается в окне Инспектора Объектов выбором псевдо­нима из выпадающего списка или прямым вводом строки, определяющей путь к базе данных, если база данных не имеет псевдонима.

Во время выполнения свойство DatabaseName может устанавливаться про­граммно.

При задании или изменении DatabaseName Компонент набора данных должен находиться в неактивном состоянии (свойство Active = false). В противном случае будет сгенерировано исключение.

См. пример в разделе «TableName».

DatabaseName — свойство компонента типа TDatabase_______________

Определяет имя базы данных.

Класс TDatahase

Определение

__ property AnsiString DatabaseName

Описание

Свойство DatabaseName Определяет имя базы данных, связанной с компонен­том базы данных. Если значение DatabaseName Является псевдонимом Borland Database Engine (BDE), то свойства AliasNaТс и DriverName можно не устанавли­вать. Если же значение DatabaseName Не соответствует псевдониму BDE, то надо или в дополнение к DatabaseName Задать псевдоним в свойстве AliasName, Или задать свойства DriverName и Params.

При работе с базами данных Paradox и dBASE значение DatabaseName Может быть полным путем к базе данных.

Попытка установить DatabaseName При значении свойства Connected, Равном True, Приведет к генерации исключения.

Во время проектирования задание значения DatabaseName Можно осуществ­лять с помощью редактора баз данных, вызываемого двойным щелчком на компо­ненте TDatabase.

Пример

В примере описывается приложение, позволяющее просматривать любую за­данную пользователем таблицу в любой заданной им доступной базе данных. При­ложение содержит два выпадающих списка типа TComboBox, названных CbData — base и CbTable. Первый из них предназначен для выбора пользователем базы дан­ных, а второй — для выбора таблицы.

При создании формы в обработчике ее события OnCreate Надо загрузить спи­сок CbDatabase Доступными BDE псевдонимами:

Ξession->GetAliasNames(cbAlias->Items);

Этот оператор использует метод GetAliasNames Объекта Session, который пе­редает в свой параметр типа TStrings (в данном примере это список cbAlias — Items) Перечень псевдонимов баз данных, зарегистрированных в BDE.

При выборе пользователем базы данных в списке CbAlias Надо загрузить спи­сок CbTable Перечнем таблиц выбранной базы данных. Это делается включением в обработчик события OnChange Компонента CbAlias Операторов:

Session->GetTableNames(cbAlias->Text,"",true, false, cbTable->Items);

CbTable->ItemIndex = 0;

Первый из этих операторов использует метод GetTableNames Для загрузки в свой последний параметр типа TStrings (в данном примере это список CbTab­le — >Items) Перечня таблиц базы данных, заданной своим первым параметром (в данном примере это CbAlias—>Text).

Обработчик щелчка на копке, обеспечивающей просмотр таблицы, может иметь вид:

If (cbTable->Text == "")

{

ShowMessageCHe задана таблица"); return;

}

Tablel->Active = false;

Tablel->DatabaseName = cbAlias->Text;

Tablel->TableName ≈ cbTable->Text;

Tablel->Active = true;

Этот обработчик просто задает свойства DatabaseName и TableName Компо­нента Tablel Равными выбранным пользователем значениям и переводит Tablel В активное состояние.

DataField_______________________________________________________

См. «DataSource, DataField, Field — свойства компонентов, связанных с дан­ными ».

DataSize_______________________________________________________

Размер в байтах, необходимый для хранения значения поля.

Класс TField

Доступ Только Для чтения

Определение

__ property int DataSize

Описание

Свойство DataSize Определяет объем памяти в байтах, необходимый для хра­нения значения поля. Значение может требоваться для назначения буфера при ис­пользовании, например, методов GetData и SetData. Значение DataSize = 0 Озна­Чает, что объем памяти неизвестен. Это характерно, например, для полей BLOB.

DataSource — свойство наборов данных___________________________

Указывает источник данных другого набора данных, снабжающего информа­цией данный набор.

Классы TDataSet. TTable. TOuery. TADOQuery

Определение

__ property TDataSource* DataSource

Описание

Свойство DataSource Указывает источник данных другого набора данных, снабжающего информацией данный набор.

В TDataSet Свойство всегда NULL, но оно перегружено в классах-наследни­ках. В ТТаЫе DataSource Просто вариант свойства MasterSource Только для чтения.

Более содержательно это свойство в TQuery и в TADOQuery. Оно позволяет строить приложения, содержащие связанные друг с другом таблицы.

Пример

Пусть вы хотите построить приложение, работающее с таблицей Dep, содержа­щей список отделов (в поле Dep) И с таблицей персонала Pers, содержащей в поле Dep имя отдела, в котором работает каждый сотрудник. Надо, чтобы при выборе записи в таблице Dep в таблице Pers отбирались только записи, относящиеся к вы­бранному отделу. Тогда надо перенести на форму компоненты Qutryl, Data- Source 1, DBGridl И соединить их обычной цепочкой: в DBGridl Задать свойство

DataSource Равным DataSourcel, а в DataSourcel Задать свойство DataSet Рав­ным Queryl. Компонент Queryl настраивается на таблицу Dep. Создается также другая аналогичная цепочка, перенеся на форму компоненты Query2, Data — Source2, DBGrid2, И связывается с таблицей Pers запросом

Select * from’Pers where (Dep=:Dep)

В этом запросе указано условие отбора: значение поля Dep Должно быть равно параметру :Dep. В данном случае не надо определять этот параметр с помощью ре­дактора параметров, вызываемого из свойства Params Компонента Query2. Вместо этого в свойстве DataSource Компонента Query2 Надо сослаться на DataSourcel — источник данных, связанный с таблицей Dep. Это скажет приложению, что оно должно взять значения параметра :Dep из текущей записи этого источника дан­ных. А поскольку имя параметра совпадает с именем поля в источнике данных, то в качестве значения параметра будет взято текущее значение этого поля. Таким образом, вспомогательная таблица, запрашиваемая в Query2, оказывается связан­Ной с головной таблицей, запрашиваемой в Queryl.

DataSource, DataField, Field — свойства компонентов,

СвЯзанных с данными___________________________________

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

Классы TDBText, TDBEdit, TDBMemo, ТВШтаёеи многие другие

Определения

__ property Db::TDataSource* DataSource

__ property AnsiStrinq DataField

__ property Db: : TField* Field // Только Для чтения

Описание

В компонентах, связанных с данными, свойство DataSource Определяет источ­ник данных типа TDataSouree. свойство DataField Определяет имя поля в Data- Source, С которым связан компонент, а свойство Field Типа TField (только для чте­ния) определяет объект самого поля. Через этот объект можно получить доступ к данным, хранящимся в этом поле в текущей записи.

В компонентах DBLookupListBox и DBLookupComboBox Свойство DataField Указывает имя отображаемого просматриваемого поля, а не того, которое снабжает Информацией это поле.

DataType_______________________________________________________

Определяет тип данных, хранящихся в поле.

Классы TField. TFieldDef

Доступ Толь ко для чтения

Определение

__ property TFieldType DataType

Описание

Свойство DataType Типа TFieldTvpe Определяет тип данных поля. Для сущест­вующих полей свойство DataType Можно использовать для проверки типа поля. При создании описаний TFieldDef Новых полей это свойство должно задаваться.

Пример

См. пример в гл. 4, в описании метода CreateTable.

DBSession

Определяет связанный с набором данных компонент Session.

Класс TDBDataSeT

Определение

__ property TSession* DBSession

Описание

Свойство DBSession Определяет связанный с набором данных компонент Session. По умолчанию связь осуществляется с генерируемым автоматически объ­ектом Session. Компонент Session Осуществляет общее управление связыванием приложения с базами данных. Он имеет много полезных методов и позволяет лег­ко работать с BDE, например, через такие методы, как GetAliasNames, GetTable — Names И др. (см. в гл. 1, В описании Session).

DefaultExpression________________________________________________

Выражение SQL, которое присваивает значение поля, если пользователь не за­дал никакого значения.

Класс TField . Определение

__ property AnsiString DefaultExpression

Описание

Свойство DefaultExpression Содержит выражение SQL, которое присваивает значение поля, если пользователь не задал никакого значения. Значение Default — Expression Может быть любым допустимым выражением SQL, не ссылающимся на значения полей. Если выражение содержит символы, отличные от цифр, оно долж­но заключаться в одинарные кавычки. Например: ’12:00:00′ или ‘отсутствует’.

Свойство DefaultExpression Имеет приоритет над значениями по умолчанию, предусмотренными в базе данных. Это объясняется тем, что данное свойство при­меняется при вводе данных в приложении, т. е. до того, как запись передается В базу данных.

Del imitedT ext_________________________________________________

Полный текст списка строк.

См. раздел «CommaText, DelimitedText, Delimiter, QuoteChar».

Delimiter

Разделитель, используемый в свойстве DelimitedText.

См. раздел «CommaText, DelimitedText, Delimiter, QuoteChar».

Delta — Свойство TCustomClientDataSet_____________________________

Пакет изменений в данных, еще не зафиксированных в базе данных.

Класс TcustomClientDataSet

Объявление

___ property System::θlevariant Delta

Описание

Свойство Delta (только для чтения) представляет собой пакет изменений, ко­торый может быть передан провайдеру. Он содержит информацию об измененных, вставленных и удаленных записях. Значение Delta Передается как аргумент мето­дов AppIy Updates И Reconcile, обеспечивающих занесение результатов редактиро­вания в базу данных. Если обновление базы данных прошло успешно, Delta Очи­щается. Если при обновлении базы произошли ошибки, то в результате содержи-

Мое Delta Зависит от числа возникших ошибок. Если это число превысило макси­мум, указанный при вызове метода ApplyUpdates, то Delta Сохраняет все измене­ния, а те изменения, которые не вызвали ошибок, отменяются. Так что в этом слу­чае никаких изменений в базе данных не происходит. Если же число ошибок мень­ше допустимого, то в Delta Остаются только изменения, вызвавшие ошибки.

В приложениях, использующих файловые наборы данных, очистка Delta Про­исходит также при выполнении метода MergeChangeLog, объединяющего данные Data И Delta.

DesktopFont_____________________________________________________

Определяет, использует ли компонент для отображения текста изображение шрифта Windows.

Класс TControL

Определение

__ property bool DesktopFont

Описание

Установка свойства DesktopFont В TruЕ Определяет, что компонент должен ис­пользовать для свойства Font Изображение шрифта Windows. Этот шрифт задается свойством IconFont Глобальной переменной Screen.

Если DesktopFont Установлено в True, То свойство Font Будет изменяться всякий раз при изменении шрифта Windows. Это изменение может осуществляться заданием свойства IconFont Глобальной переменной Screen или изменяться другими програм­мами. Установка свойства Font Напрямую равным ScreennIconFont Не обеспечивает Изменение шрифта компонента при изменении шрифта Windows.

DisplayLabel И DisplayName______________________________________

Строка, отображаемая как заголовок столбца в таблице данных.

Класс TField

Определения

__ property AnsiString DisplayLabel

__ property AnsiString DisplayName // только Для чтения

Описание

Свойства DisplayLabel И DisplayName Представляют собой строку, отображае­мую как заголовок столбца в таблице данных. Свойство DisplayName — только для чтения, а значение DisplayLabel Можно задавать. По умолчанию DisplayName Совпадает с FieIdNarne. Но если задать значение DisplayLabel, То DisplayName Становится равным DisplayLabel.

Пример

Следующий пример отображает окно редактирования, содержащее имена всех полей таблицы, связанной с компонентом Tablel, И их отображаемые имена DisplayName:

String Info = "Поля таблицы " + Tablel->TableName +" :\п\п"; for (int i=0; i < Tablel->FieldCount; i+ + )

Info = Info + Tablel->Fields->Fields[i]->FieldName +

" — " + Tablel->Fields->Fields[i]->DisplayName + ‘∖n’;

ShowMessage(Info) ;

DisplayName — свойство TNamedItem______________________________

Имя, появляющееся в редакторе наборов (например, в Редакторе Полей) во время проектирования.

Класс TNamedltem

Определение

__ property System: z⅞nsiStriNg DisplayName

Описание

Свойство DisplayName Определяет имя, появляющееся в редакторе наборов (например, в Редакторе Полей) во время проектирования. Оно принудительно ус­Танавливается равным свойству Name.

DisplayText И Text_______________________________________________

Строка, отображающая значение поля в компонентах, связанных с данными.

Класс TField

Определения

__ property AnsiString DisplayText // Только Для чтения

__ property AnsiString Text

Описание

Свойства Text И DisplayText Представляют собой строку, отображающую зна­чение поля Value В компонентах, связанных с данными. Строка DisplayText Соот­ветствует отображению в режиме просмотра данных, а строка Text Соответствует режиму редактирования. По умолчанию Text И DisplayText Соответствуют свойст­Ву AsString.

Значения Text И DisplayText Могут различаться, если требуется разное ото­бражение в режимах просмотра и редактирования. Для обеспечения двух разных форматов отображения используется обработчик события OnGetText. При нали­чии такого обработчика в Text Или в DisplayText Заносится значение, возвращае­мое как параметр Text. Параметр обработчика показывает, в какое именно свойст­во заносится строка.

DisplayText Соответствует значению поля Value, Если не проводится редакти­рование. Если проведено редактирование, его результаты отображаются в свойстве

Text.

DragCursor_____________________________________________________

См. Cursor.

DragKind_______________________________________________________

Определяет, будет ли объект перетаскиваться по технологии Drag&Drop, или Drag&Doc.

Класс TCoNtroL

Определение

Enum TDragKind { dkDrag, dkDock );

_ property TDragKind DragKind

Описание

Свойство DragKind Определяет, будет ли компонент перетаскиваться обыч­ным образом (по технологии Drag&Drop) — значение dkDrag, или он будет пере­таскиваться для встраивания (по технологии Drag&Doc) — значение DkDock.

DragMode

Определяет поведение компонента в процессе его перетаскивания.

Класс TControL Определение

Enuɪn TDragMode ( dmManual, dmAutomatic };

__ property TDragMode DragMode

Описание

Свойство DragMode Определяет поведение компонента в процессе его перетас­кивания. Свойство может принимать значения:

I dmAutomatic

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

DmManual

Компонент не может быть перетащен, пока приложение не вы­зовет метод BeginDrag. J

Примеры использования свойства DragMode См. в гл. 5, В Разд. «OnDragDrop»

DrawingStyle___________________________________________________

Определяет стиль, используемый при рисовании изображения.

Класс TCustomImageList Определение

Enum TDrawingStyle (dsFocus, dsSelected, dsNormal, dsTransparent};

__ property TDrawingStyle DrawingStyle

Описание

Свойство DrawingStyle Определяет стиль изображения. Возможные значения:

DsFocused

Изображение рисуется на 25% смешанное с цветом, указанным свойством BlendColor. Влияет только на список изображений,

Содержащий маски

DsSelected

Изображение рисуется на 50% смешанное с цветом, указанным свойством BlendColor. Влияет только на список изображений, содержащий маски

I DsNormal

Изображение рисуется с использованием цвета, указанного свойством BkColor. Если BkColor задано равным clNone, изоб­ражение рисуется прозрачным с использованием маски

DsTransparent

Изображение рисуется с использованием маски, независимо от установки BkColor

EditMask И EditMaskPtr______________

Маска, используемая для ввода данных. Классы Т Field. TMaskEdit Определения

Property AnsiString EditMask property AnsiString EditMaskPtr

Описание

Свойство EditMask Содержит маску, используемую для ввода данных в поля набора данных и в компонент MaskEdit. Свойство EditMaskPtr, Имеющееся толь­ко в TField, Обеспечивает доступ к той же маске, но только для чтения, что позво­ляет избежать случайного ее изменения.

Применение маски позволяет ограничить возможность пользователя ввести синтаксически ошибочные данные. Свойство EditMask Осуществляет проверку вводимых данных по символам. Для проверки в TField Введенного значения в це­лом можно использовать обработчик события OnValidate.

Задание в качестве EditMask Пустой строки удаляет маску.

Маска состоит из трех разделов, между которыми ставится точка с запятой (;). В первом разделе — шаблоне записываются специальным образом символы (см. приведенную ниже таблицу), которые можно вводить в каждой позиции, и симво­лы, добавляемые самой маской; во втором разделе записывается 1 или 0 в зависи­мости от того, надо или нет, чтобы символы, добавляемые маской, включались в свойство Text Компонента MaskEdit Или в свойство Value Поля; в третьем разде­ле указывается символ, используемый для обозначения позиций, в которых еще не осуществлен ввод.

Специальные символы маски:

1

Наличие символа "!" означает, что недостающие символы предваряются пробелами, а отсутствие символа "!" означает, что пробелы размещаются

В конце.

> 

Символ ">" означает, что все последующие за ним символы должны вво­диться в верхнем регистре, пока не кончится маска или пока не встре­тится символ "<".

< 

Символ "<" означает, что все последующие за ним символы должны вво­диться в нижнем регистре, пока не кончится маска или пока не встре­тится символ

О

Символы "о" означают, что анализ регистра не производится.

Символ "\" означает, что следующий за ним символ является буквен­ным, а не специальным, характерным для маски. Например, символ ">" после символа "\" воспримется как знак >, а не как символ, указываю­щий на верхний регистр.

L

Символ "L" Означает, что в данной позиции должна быть буква.

1

Символ "1" означает, что в данной позиции может быть только буква

Или ничего.

А

Символ "А" означает, что в данной позиции должна быть буква или

Цифра.

А

Символ "а" означает, что в данной позиции может быть буква, или циф­ра, или ничего.

С

Символ "С" означает, что в данной позиции должен быть любой символ.

C

Символ "с" означает, что в данной позиции может быть любой символ

Или ничего.

О

Символ "О" означает, что в данной позиции должна быть цифра.

9

Символ "9" означает, что в данной позиции может быть цифра или ничего.

#

Символ »#” означает, что в данной позиции может быть цифра, знак знак " " или ничего.

Символ ”используется для разделения часов, минут и секунд.

Символ "/” используется для разделения месяцев, дней и годов в датах.

Символ означает автоматическую вставку в текст пробела.

Примеры

Ниже приведены примеры масок.

: Семизначный номер телефона

!000-00-00;0;

Номер телефона с кодом страны

!\(999\) OOtKOO-OOiO;,

Почтовый индекс

!0000000;1;

Паспорт

!L-LL 999999;0;

Дата с указанием дня

!99/99/00;1;

Дата без указания дня

!99/00;1;

Время с секундами

!90:00:00;1;

Время без секунд

!90:00;1;

EditMaskPtr

См. раздел «EditMask и EditMaskPtr»

Enabled________________________________________________________

Определяет, реагирует ли компонент на события, связанные с мышью, кла­виатурой и таймером.

Класс TControL

Определение

__ property bool Enabled

Описание

Свойство Enabled Определяет доступность компонента для пользователя. Что­бы сделать компонент недоступным, надо установить Enabled В False. Недоступ­ный компонент отображается серым цветом. Он игнорирует события, связанные с мышью, клавиатурой и события таймера OnTimer.

Чтобы восстановить доступность компонента, надо установить Enabled В True. Компонент начинает нормально отображаться на экране и реагировать на действия пользователя.

Eof — свойство TDataSet___________________________________________________

Свойство указывает, находится ли курсор на последней записи.

Класс TDataSet

Определение property bool Eof

Описание

Свойство Eof определяет, находится ли курсор на последней записи. Значение Eofустанавливается в true:

• При открытии пустого набора данных

• В результате выполнения метода Last

• При ошибке выполнения метода Next Из-за того, что курсор уже расположен на последней записи

• При вызове метода SetRange С пустым диапазоном данных или на пустом на­боре данных

В остальных случаях Eof = false.

Свойство Eof Используется при организации циклов по набору данных.

Пример

Следующий пример показывает типичный способ организации цикла по запи­сям набора данных. Пусть в вашем приложении имеется выпадающий список с именем B . который вы хотите заполнить данными, содержащимися в полях Dep всех записей таблицы, соединенной с компонентом Table1. Это можно сделать следующим кодом:

CBdep->Clear () ;

Tablel->First () ;

While (! Tablel->Eof)

{

CBdep->Items->Add(Tablel->FieIdByName("Dep")->AsString);

Tablel->Next();

}

Первый оператор кода очищает список CBdep. Второй — устанавливает кур­сор таблицы на первую запись. Далее следует цикл по всем записям, пока не дос­тигнута последняя, что проверяется выражением Tab lei—>Eof. Для каждой запи­си в список заносится значение поля Dep, после чего методом Next курсор переме­Щается к следующей записи.

Exist s___________________________________________________________________

Свойство, определяющее, существует ли данная таблица базы данных.

Класс TTable

Доступ Толь ко Для чтения

Определение

__ property bool Exists

Описание

Свойство Exists Позволяет во время выполнения определить, существует ли таблица, установленная в компоненте Table Свойством TableName. Если не суще­ствует, то она может создаваться методом CreateTable.

См. пример применения свойства Exists В гл. 4, В Разд. «CreateTableo.

Field_____________

См. «DataSource, DataField, Field — свойства компонентов, связанных с дан­ными».

FieldClass_______________________________________________________

Класс объекта поля, соответствующий описанию TFieldDef.

Класс TFieldDef

Доступ Тальк о для чтения Определение

___ property System::TMetaClass* FieldClass

Описание

Свойство FieldClass Определяет класс объекта поля, соответствующий описа­нию TFieldDef — Объект поля создается методом CreateFiclId (вызывается автомати­чески) из описания TFieldDef Как объект класса FieldClass. Значение FieldClass Однозначно определяется значением свойства поля DataType Типа TFieldType. На­пример, если значение DataType Равно ftString, то значение FieldClass Равно TStringField.

FieIdCount _

Число объектов полей, связанных с набором данных.

Класс TDataSet

Определение

Property int FieldCount

Описание

Свойство FieldCount Определяет число полей, содержащихся в свойстве Fields набора данных. В это число не входят поля совокупных характеристик, список ко­торых содержится в свойстве AggFields. Если объекты полей создаются динамиче­ски (не с помощью Редактора полей), то значение FieldCount Может меняться при каждом открытии набора данных. Если же объекты полей созданы заранее (напри­мер, Редактором Полей), то значение FieldCount Постоянно.

Примеры

В следующем примере выпадающий список ComboBoxl Заполняется именами полей таблицы, соединенной с компонентом Table 1:

Tablel->Active = true;

ComboBoxl-XlearO ;

For (int i=0; i < Tablel-XieldCount; i + + )

ComboBoxl->Items->Add(Tablel->Fields->Fields[i]-XieldName);

Почти аналогичного результата можно достичь с помощью списка описаний полей — FieldDefs. Для этого в приведенном выше примере надо заменить опера­тор For На:

For (int i=0; i < Tablel-XieldDefs-Xount; i + + )

ComboBoxl-Xtems->Add(Tablel-XieldDefs->Items[i]->Name);

Или на тождественный ему:

For i:= 1 to Tablel. FieldDefs. Count — 1 do

ComboBoxl. Items-Add(Tablel. FieldDefs. Items[i].Name);

Отличие результата, полученного этими операторами, от рассмотренного ра­нее будет в том, что в списке не окажется имени поля первичного ключа,

Впрочем, получить список полей можно проще методом GetFieldNAntes набо­ра данных:

Tablel-XetFieldNames (ComboBoxl-Xtems) ; или методом GetFieldNames Свойства Fields:

Tablel-Xields-XetFieldNames (ComboBoxl-Xtenis) ; или методом GetItemNames Свойства FieldDefs:

Tablel-XieldDefs-XetItemNames (ComboBoxl-Xtems) ;

Класс TDataSet

Определение

__ property TFieldDefs* FieldDefs

Описание

Свойство FieldDefs Указывает на список типа TFieldDefs Объектов полей типа TFieldDef, Определяющих поля таблицы базы данных. Это свойство должно быть определено, прежде чем вызывается метод CreateTable. Создающий таблицу.

Свойства и методы объекта FieldDefs Позволяют

• Получить доступ к определениям полей

• Добавлять, изменять или удалять поля, создавая новую таблицу

• Определять, сколько полей содержит таблица

• Копировать определения полей из одной таблицы в другую

См. примеры применения свойства FieldDefs В разд. «CreateTable» и «Field- Count».

FieldKind______________________________________________________

Указывает, является ли поле обычным полем базы данных, или вычисляемым полем, или полем просмотра.

Класс TField

Определение

Enum TFieldKind { fkData, fkCalculated, fkLookup, fklnternalCalc };

__ property TFieldKind FieldKind

Описание

Свойство FieldKind Определяет тип поля, указывающий, является ли оно обычным полем базы данных, или вычисляемым полем, или полем просмотра. Значение FieldKind Можно изменять программно во время выполнения, но обычно оно задается во время проектирования в Редакторе Полей.

Описание возможных значений FieldKind См. в гл. 1, в описании TFieldKind.

FieldList_______________________________________________________

Список имен полей набора данных.

Класс TDataSet

Объявление

__ property TFieldList* FieldList

Описание

Свойство FieldList Содержит список имен всех полей набора данных. Класс этого списка TFieldList Является дальним потомкам класса TStringList и наследу­ет все основные свойства и методы TStringList, такие как Add. Delete, Insert И др. Из новых свойств класса TFieldList Важнейшим является Fields:

__ property TField* Fields [ int Index]

Это свойство — индексированный список объектов полей. Еще одно свойство

DataSet — набор данных.

Среди методов класса TFieldList Надо отметить методы FieldByName(const AnsiString Name) И Find(const AnsiString Name), Возвращающие объект поля, за­данного именем Name. Различие методов в том, что при отсутствии поля в списке Find Возвращает NULL, a FieldByName Генерирует исключение.

Типичный пример использования FieldList:

ComboBoxl->Items->Assign(Tablel->FieldList) ;

Этот оператор заносит в выпадающий список ComboBoxl список всех полей Набора данных TabIel.

FieldName______________________________________________________

Имя поля набора данных.

Класс TField

Определение

__ property AnsiString FieldName

Описание

Значение свойства FieldName задается автоматически равным имени поля, объект которого создается. Для вычисляемых полей имя FieldName Задается при описании поля. Свойство FieldName Используется для задания значений по умол­чанию свойствам DisDlavLabel и Display Name.

Для не вычисляемых полей генерируется исключение EDatabaseError, Если имя FieldName Не совпадает с именем одного из полей таблицы данных.

Примеры

См. примеры в разд. «Fields» и «DisplayLabel и DisplayNameo.

FieldNo________________________________________________________

Порядковый номер поля в таблице.

Класс TFleldDeF

Определение

__ property int FieldNo

Описание

Свойство FieldNo Определяет порядковый номер поля в таблице. Например, если FieldNo Равно 3, То это третье поле таблицы. При добавлении определения поля в на­бор данных значение FieldNo Определяет место создаваемого поля в таблице.

————————————————————————————————————————— 1—

Fields — свойство TFields________________________________________

Список ссылок на поля.

Класс TFields

Определение

__ property TField* Fields [int Index]

Описание

Свойство Fields — индексированный список указателей на объекты полей типа TField. Индексы Index Начинаются с 0. Число полей в списке определяется свойством списка Count. С помощью Fields Можно присвоить свойства какого-то другого объекта TField Полю данного списка.

Пример

Следующий пример отображает окно редактирования, содержащее имена всех полей таблицы, связанной с компонентом Tablel:

String Info = "Поля таблицы " +

Tablel->TableName + ” :\п\п";

For (int i=0; i < Tablel->Fields->Count; i + + )

Info = Info + Tablel->Fields->Fields[i]->FieldName + ‘∖n’;

ShowMessage(Info);

В данном примере для итераций по полям использовано свойство Fields—> Count. To Же самое можно было бы сделать, используя свойство набора данных FieldCount:

For tint i=0; i < Tablel->FieldCount; i + + )

Fields И ObjectView — свойства TDataSet____________________________

Список всех объектов полей (кроме полей совокупных характеристик) набора данных и способ его организации.

Класс TDataSEt

Определения

T, _ property TFields* Fields // Только Для чтения • property bool ObjectView

Описание

Свойство Fields Список всех объектов полей (кроме полей совокупных ха­рактеристик) набора данных. Поля совокупных характеристик размещены в Agg-

Fields.

Если объекты полей сгенерированы динамически во время выполнения, то их последовательность совпадает с последовательностью столбцов таблицы набора данных. Если же объекты полей созданы во время проектирования с помощью Ре­дактора Полей, то их последовательность в массиве Fields Та, которая была задана

При проектировании.

Если значение ObjectView Равно true, то поля хранятся в Fields Иерархиче­ски: родительское поле ссылается на дочерние поля. Если значение ObjectView Равно False, То поля хранятся в Fields «плоско», т. е. дочерние поля хранятся после родительского поля.

Свойство Fields Позволяет организовывать циклы по полям и работать с дан­ными, структура которых заранее не известна. Можно также читать и записывать значения отдельных полей. Например, следующий оператор читает в окно редак­тирования Editl текст второго поля набора данных Tablet:

Editl->Text = Tablel->Fields->Fields [ 1 ] ->AsString;

Следующий оператор осуществляет обратное действие — заносит во второе поле значение, заданное в окне Editl:

Tablel->Fields->Fields[1]->AsString = Editl->Text;

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

TFields: FieldByName. FindField И другие.

Примеры

См. примеры в разд. «FieldCount».

FieldValues

Свойство обеспечивает доступ к значениям всех полей активной записи.

Класс TDataSet

Определение

_ property System: : Variant FieldValues [AnsiString FieldName]

Описание

Свойство FieldValues Обеспечивает чтение и запись значений любых полей ак­тивной записи набора данных. Параметр FieldName Указывает имя поля, с кото­рым ведется работа. Это может быть любое поле: обычное поле записи, дочернее поле в сложной структуре, поле с совокупной характеристикой, содержащееся

В свойстве AggFields. Благодаря такой универсальности свойство FieldValues, Как и метод FieldBvName, имеет преимущества по сравнению со свойствами Fields. FieldList И AggFields, Относящимися только к ограниченному множеству полей.

Тип свойства FieldValues Variant, Так что это свойство обеспечивает преоб­разование значений любых типов данных. Например, оператор

Editl->Text = Tablel-S-FieldValues [ "Year_b" ] ;

Заносит в окно редактирования Editl Значение поля Year_b — поля целого типа, обозначающего год рождения. А операторы

Tablel->Edit О;

Tablel-S-FieldValues [ "Year_b"] = Editl-S-Text;

Заносят значение, введенное пользователем в окне Editl, В поле Year_b.

Надо отметить, что работа с типом Variant В свойстве FieldValues Требует не­

Сколько больших временных затрат при преобразовании типов, чем использование AsString И др. аналогичных свойств.

FileName — свойство диалогов____________________________________

Свойство диалогов, определяющее имя файла.

Классы TOpenDialog, TOpenPictureDialog, TSaυePictureDialog, TsavePictureDialog

Определение

__ property AnsiString FileName

Описание

В диалогах открытия и сохранения файлов свойство FileName Определяет имя открываемого или сохраняемого файла. Перед вызовом диалога можно задать зна­чение FileName Как имя файла по умолчанию. А если пользователь в диалоге вы­брал имя файла, то это имя можно прочитать в свойстве FileName.

Пример

Следующие операторы задают имя сохраняемого файла по умолчанию «Неиз­вестный. rtf», вызывают диалог сохранения файла и, если пользователь в диалоге нажал кнопку Сохранить, то текст окна редактирования IticliEditt сохраняется в заданном пользователем файле:

SaveDialogOFileName = "Неизвестный. rtf"; if (OpenDialogl->Execute())

RichEditl->Lines->SaveToFile (SaveDialogl-S-FileNanie) ;

Filter — свойство диалогов_______________________________________

Задает фильтр в диалогах открытия и сохранения файлов.

Классы TOpenDialog, TOpenPictureDialog, TSavePictureDialog, TsavePictureDialog

Определения

__ property AnsiString Filter

Описание

Свойство Filter Определяет типы искомых файлов, появляющиеся в диалоге в выпадающем списке Тип файла. В процессе проектирования это свойство проще всего задать с помощью редактора фильтров, который вызывается нажатием кноп­ки с многоточием около имени этого свойства в Инспекторе Объектов. При этом от­крывается окно редактора. В его левой панели Filter Name вы записываете тот текст, который увидит пользователь в выпадающем списке Тип файла диалога. А в правой

Панели окна редактора записываются разделенные точками с запятой шаблоны

Фильтра.

После выхода из окна редактирования фильтров заданные вами шаблоны поя­вятся в свойстве Filter В виде строки. Например:

Текстовые (* .txt, * . doc} ; * . txt; *.doc|Bce файлы!*,*

В этой строке тексты и шаблоны разделяются вертикальными линиями. В аналогичном виде, если требуется, можно задавать свойство Filter Программно

Во время выполнения приложения.

В диалогах TOpenDialog и TSaveDialog Значение по умолчанию пусто. В диа­логах TOpenPictureDialog и TsavePictureDialog значение Filter по умолчанию включает следующие фильтры:

All (Ajpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf)

*∙jpg;*.jpeg;*.bmp; *.ico;*.emf;*.wmf

JPEG Image File (*.jpg)

*.jpg

JPEG Image File (*.jpeg)

*.jpeg

Bitmaps (*.bmp)

*.bmp

Icons (*.ico)

*.ico

Enhanced Metafiles (*.emf)

*.emf

Metafiles (*.wmf)

*.wmf

В этих фильтрах перечислены все типы графических файлов, с которыми можно работать. Так что вам остается удалить, если хотите, фильтры тех файлов, с которыми вы не хотите работать, добавить, может быть, фильтр "Все файлы (*.*)" и перевести на русский язык названия типов.

Filter И Filtered — свойства наборов данных________________________

Свойства, обеспечивающие фильтрацию набора данных.

Классы TDataSet. TcustomClientDataSeT

Определения

__ property AnsiString Filter

__ property bool Filtered

Описание

Фильтрация данных, извлекаемых из набора данных, задается свойствами Filter, Filtered и FilterOptions. При наличии фильтра доступными становятся только те записи, поля которых удовлетворяют условиям фильтрации. Свойство Filtered Включает или выключает использование фильтра. Свойство FilterOptions Задает опции фильтрации. А сам фильтр записывается в свойство Filter В виде строки, содержащей определенные ограничения на значения полей. Например, значение Filter

Dep=’Цех 1′

При Filtered = true, Обеспечивает отображение только тех записей, в которых поле Dep имеет значение "Цех 1”. В условиях сравнения строк можно использовать символ звездочки который как в обычных шаблонах означает: "любое количе­

Ство любых символов". Например, фильтр

Dep=’Цех*’

Приведет к отображению всех записей, в которых значение поля Dep начинается с "Цех". Но для того, чтобы это сработало, надо, чтобы в опциях, содержащихся

В свойстве FilterOptions, была выключена опция IoNoPartiaiCompare, запрещаю­щая частичное совпадение при сравнении.

При записи условий можно использовать операции отношения =, >, >=, <, <=, <>, а также логические операции and, or и not. Например, вы можете напи­сать фильтр

(Dep=’Цех 1′)and(Year_b<=l970)and(Year_b>=1940)

И отобразятся записи сотрудников цеха 1, чей год рождения лежит в заданных пределах. Но использовать в фильтре имена вычисляемых полей не разрешается.

При фильтрации пустые записи пропускаются, если только их появление не указано в фильтре явным образом, как в следующем примере:

(Dep=lUex*’) or (Dep = NULL)

Фильтрация на удаленных таблицах SQL и в клиентских наборах данных под­держивает сравнение полей (например: Fieldl > Field2) и множество других опера­ций и функций, не поддерживаемых в локальных таблицах (Paradox, dBASE, Access, FoxPro). В частности:

Операция,

Функция

Пример

Комментарий

IS NULL

Dep IS NULL

IS NOT NULL

Dep IS NOTNUll

F^ ” ^’

Year_b + 5 > 1970

Для чисел, строк, дат (времени) + число

F-

2002 — Year_b <> 19

Для чисел, дат, дат (времени) — число :

*

Fieldl * 100 > 20

Для чисел 1

1

Fieldl > Field2 / 5

Для чисел J

Upper

Upper(Dep) ≈ ‘ЦЕХ 1’

Lower

Lower(Fam + Nam) = ‘ивановиван’

Substring

Substring(Dep,5) = ‘1’

Substring(Dep, l,3) = ‘Цех’

Подстрока, начиная с 5-го символа

Подстрока с 1-го по 3-ий символ (могут быть пробле­мы с кириллицей)

Trim

Trim(Fam + Nam)

Trim(Fieldl, ‘-‘)

Удаляет пробелы

Удаляет символы в нача­

Ле и конце строки

TrimLeft

TrimLeft(StringFieid)

TrimLeft(Fieldl^t) <>"

TrimRight

TrimRight(StringField) TrimRight(Fieldl, ‘.’) <> ”

_

Year

Year(DateField) = 2000

Выделяет из даты год,

Month

Month(DateField) <> 12

Месяц,

Day

Day(DateField) = 1

День,

Hour

Hour(DateField) < 16

Час, J

Minute

Minute(DateField) = 0

Минуту,

Операция,

I функция

Пример

Комментарий

I Second

Second(DateField) = 30

Секунду

[ GetDate

GetDate — DateField > 7

Текущая дата и время

Date

DateField = Date(GetDate)

I

Дата из значения даты

И времени

Time

TimeField > Time(GetDate)

Время из значения даты и времени

Like

Memo LIKE ‘%filters%’

При применении к полям BLOB, свойство FilterQpti — Ons определяет чувствитель­ность к регистру

In

Fam in (‘Иванов’,’Сидоров’)

Отберет всех Ивановых и Сидоровых (второй опе­ранд — список отбираемых значений)

Filtered

См. раздел «Filter и Filtered — свойства наборов данных»

FilterOptions____________________________________________________

Опции фильтрации набора данных.

Класс TDataSet

Определения

Enum TFilterOption { foCaselnsensitive, EoNoPartialCompare }; typedef Set<TFilterOρtion, foCaselnsensitive,

F0N0PartialC0mpare> TFilterOptions;

_ property TFilterOptions FilterOptions

Описание

Свойство FilterOptions Определяет опции фильтрации. Сама фильтрация зада­ется свойствами Filter, Filtered, a FilterOptions Устанавливает чувствительность фильтрации к регистру и допустимость частичного совпадения при сравнении. FilterOptions Представляет собой множество следующих опций:

FoCaselnsensitive

Учет регистра при сравнении строк

FoNoPartialCompare

При включении этой опции в FilterOptions символ звез­дочки (*) воспринимается именно как символ. А когда эта опция не включена в FilterOptions, символ звездоч­ки воспринимается как в обычных шаблонах: любой число любых символов

Например, если в свойстве Filter Задано Dep=’Цех*’

То при включении в FilterOptions Опции FoCaselnsensitive И отсутствии опции Fo — NoPartialCompare Под условия фильтрации подходят значения поля Dep, равные "Цех 1", "цех 2", "цеха" и т. п. Если исключить из FilterOptions Опцию FoCaseln­sensitive, То под условие фильтрации подойдет только первое из этих значений.

А если включить в FilterOptions Опцию IoNoPartialCompare, то ни одно из пере­численных значений не удовлетворит условию фильтрации. Это условие будет Удовлетворено, только если значение Dep окажется равным ‘Цех*’.

Font___________________________________________________________

Определяет атрибуты шрифта.

Класс TControl Определение

___ property GraphicsTFont* Font

Описание

Свойство Font Является объектом типа TFont. Изменение шрифта можно осу­ществить или созданием нового объекта типа TFont. Или изменением свойств Color. Height. Name, Pitch. Size. Style Существующего объекта. См. подробнее методы свойства и события объекта Font И его установки по умолчанию в разделе TFont.

Примеры

1. Пусть на форме имеется компонент Memol, в котором расположен некоторый текст, компонент FontDialogl — диалог выбора шрифта, и меню с разделом выбора шрифта, названным Font. Для того чтобы пользователь мог выбрать имя и атрибуты шрифта текста, отображаемого в Memol, в обработчик собы­тия OnClick Раздела меню Font Надо вставить операторы:

Void fastcall TForml::FontClick(TObject *Sender)

{

If (FontDialogl->Execute())

Memol->Font->Assign(FontDialogl->Font);

}

Если пользователь сменил атрибуты в диалоговом окне выбора шрифта, то ме­тод FontDialogl->Execute() Возвращает True И атрибуты шрифта компонента Memol Устанавливаются равными выбранным пользователем.

2. Для того чтобы продемонстрировать доступные в системе шрифты, можно по­строить форму, содержащую выпадающий список ComboBoxl и компонент Memol С некоторым текстом. Приведенная ниже программа загружает в спи­сок доступные имена шрифтов и отображает первую строку списка (этот код вставлен в обработчик события формы OnCreateL. В обработчик события OnC — lick Компонента ComboBoxl Вставлен оператор, меняющий подсвойство Name В свойстве Font Компонента Memol.

Void______ fastcall TForml::FormCreate(TObject *Sender)

{

ComboBoxl->Items = Screen->Fonts;

ComboBoxl->ltemlndex = 0;

Memol->Font->Name = ComboBoxl->Items->Strings[0];

}

void fastcall
{
,tforml::comboboxlclick(tobject,*sender),memol->font->name = combobo×l->items->strings[comboboxl->itemindex]
}
3.
для того чтобы посмотреть влияние на отображаемый текст свойства charsct, определяющего набор символов шрифта, можно добавить на форму компонент редактирования (например, типа tcspinedit) и кнопку, в событие onclick которой ввести оператор:
memol->font->charset = cspineditl->value;

4. Чтобы посмотреть влияние на отображаемый текст свойства Pitch, можно доба­вить на форму еще один компонент ComboBox, задать в его свойстве Items стро­ки "fpDefault", "fpFixed" и "fpVariable", а в событие OnClick вставить код:

Switch (ComboBox2->ItemIndex)

{

Case 0: Memol->Font->Pitch = fpDefault; break;

Case 1: Memol->Font->Pitch = fpFixed;

Break;

Case 2: Mernol->Font->Pitch = fpVariable;

)

GroupIndex — Свойство разделоВ меню_____________________

Определяет логическую группу, к которой относится раздел главного меню и которая используется при объединении меню нескольких форм.

Класс TMenuItem

Определение

__ property Byte Grouplndex

Описание

Свойство Grouplndex Определяет способ объединения меню. В приложениях MDI меню дочерних форм всегда объединяются с меню родительской формы. В приложениях с несколькими формами наличие или отсутствие объединение оп­ределяется свойством AutoMerge Компонента типа TMainMenu.

По умолчанию все разделы меню имеют одинаковое значение Grouplndex. Если требуется объединение меню, то разделам надо задать не убывающие номера свойств Grouplndex. Тогда, если разделы встраиваемого меню имеют те же значе­ния, что и какие-то разделы меню основной формы, то эти разделы заменяют соот­ветствующие разделы основного меню. В противном случае разделы вспомогатель­ного меню встраиваются между элементами основного меню в соответствии с номе­рами Grouplndex. Если встраиваемый раздел имеет Grouplndex Меньший, чем лю­бой из разделов основного меню, то разделы встраиваются в начало.

Когда активизирован объект, созданный сервером OLE 2.0, сервер может по­пытаться объединить свое меню с меню контейнера приложения. Тогда свойство Grouplndex Используется для замены до трех разделов главного меню. Для заме­щения приложение сервера использует следующие предопределенные значения Grouplndex:

Группа

Индекс

Описание

Edit

1

Разделы меню сервера, связанные с редактированием ак­тивного объекта OlE

View

3

Разделы меню сервера, связанные с отображением активно­го объекта OLE

Help

5

Разделы меню сервера, связанные с доступом к встроенной

Справке

Свойство Grouplndex Может использоваться и еще для одной цели: создания группы разделов, работающих по принципам радиокнопок. Для этого во всех раз­делах группы надо установить в True Свойство RadioIteni и задать всем разделам одинаковое значение Grouplndex. Выбор пользователем одного из таких разделов будет снимать выделение с остальных разделов.

Пример

Если в основной и вторичной формах структуры меню имеет следующие зна­чения GroupIndex:

Форма 1 Форма 2

То в момент, когда активизируется вторая форма, в первой появляется меню со структурой:

Handle_________________________________________________________

Обеспечивает доступ к дескриптору окна.

Класс TWinControL

Доступ Толъко Для чтения

Определение

_ property HWNfi Handle

Описание

Свойство Handle Используется при обращении к функциям API Windows, тре­бующим указания дескриптора окна.

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

HasConstraints____

Указывает, имеются ли ограничения на вводимые значения поля.

Класс TFleld

Доступ Только Для чтения

Определение

__ property oool HasConstraints

Описание

Свойство HasConstraints Определяет, имеет ли объект поля ограничения на вводимые значения в свойствах CustomConstraint, DefaultExpression. Imported — Constraint. Во всех этих случаях HasConstraints = true. Если же ни одно из этих свойств не установлено, то HasConstraints = false, Что указывает на отсутствие ог­раничений со стороны сервера и BDE. Впрочем, значение HasConstraints = false Еще не означает отсутствие каких-либо ограничений. Например, ограничения мо­гут задаваться маской EditMask Или в обработчике события OnValidate. Но это ог­раничения приложения, а не сервера или BDE.

Класс TControL

Определение

__ property int Height

Описание

Свойство Height Определяет вертикальный размер компонента или формы в пикселах. Используется для изменения высоты компонента при изменениях раз­Меров окна приложения. См. разд. ClientHeieht, ClientRect.

Height — свойство шрифта_________________________________________________

Определяет высоту шрифта в пикселах.

Класс TFonT

Определение

Property Height: Integer;

Описание

Свойство Height Определяет высоту шрифта в пикселах. Если значение Height Задано отрицательным, то в размер не входит верхний пиксел каждой строки.

Обычно для задания размера используется не Height, А другое свойство: Size — размер шрифта в кеглях или в пунктах, принятых в Windows.

Значение связано со свойствами Size И PixelsPerInch (число пикселов

На дюйм — см. ‘ F o n Соотношением:

Font->Height = — Font->Size * Font->PixelsPerInch / 72

Из этого соотношения, в частности, видно, что задание положительного значе­ния Size Ведет к отрицательному значению Height. Можно задавать Size отрица­Тельным; тогда Height Будет положительным.

HelpContext — свойство оконных компонентов_______________________________

Определяет номер, используемый в контекстно-зависимой справке.

Класс TControl

Определение

Typedef int THelpContext;

__ property ClassesTHelpContext HelpContext

Описание

Значение HelpContext Задается для определения уникального номера темы контекстно-зависимой справки (этот номер определяется в файле проекта справ­ки). В этом отличие свойства HelpContext От введенного в C++Builder 6 свойства HelpKevword. задающего непосредственно идентификатор темы справки. Экран с темой, указанной одним из этих свойств, будет показан пользователю, если он нажмет клавишу Fl, когда данный компонент в фокусе.

Начиная с C++Builder 6 свойство HelpContext Работает только в том случае, если другое свойство компонента — HelpType Равно HtContext.

Если значение HelpContext Равно 0, то компонент наследует значение Help — Context Своего родительского элемента (элемента-контейнера, в котором он распо­ложен). Например, если задано значение HelpContext Для формы, то для всех ком­понентов, у которых не задано отличного от нуля значения HelpContext, Будет по­казана тема справки, указанная для формы.

В версиях C++Builder, младше C++Builder 6, свойство HelpContext Было объ­явлено в классе TWinControl.

HeIpKeyword — свойство оконных компонентов____________________

Определяет идентификатор темы контекстно-зависимой справки.

Класс TCimtml

Определение

__ property AnsiString HelpKeyword

Описание

Значение HelpKeyword (свойство введено в C++Builder 6) определяет иденти­фикатор темы контекстно-зависимой справки. В этом его отличие от свойства HelpContext. Указывающего номер темы. Экран с указанной темой будет показан пользователю, если он нажмет клавишу когда данный компонент в фокусе.

Свойство HelpContext Работает только в том случае, если другое свойство ком­Понента — HelpType Равно HtKeyword.

HelpType — свойство оконных компонентов________________________

Определяет, какое свойство компонента указывает тему контекстно-зависи­мой справки.

Класс TControl

Определение

Enum THelpType {htKeyword, htContext};

_ property Classes::THelpType HelpType

Описание

Значение HelpType (свойство введено в C++Builder 6) определяет, какое из свойств компонента указывает тему контекстно-зависимой справки, связанной с данным компонентом. Экран с этой темой будет показан пользователю, если он нажмет клавишу Fl, когда данный компонент в фокусе.

При значении HelpType = htContext Тема определяется свойством Help — Context — номером темы в файле проекта справки. При значении HelpType = htKeyword Тема определяется свойством HelpKeyword — идентификатором темы Справки.

Hint___________________________________________________________

Содержит текст, отображаемый в окне подсказки или в строке состояния.

Классы TControl, TApplication

Определение

Property AnsiString Hint

~ ‘4.

Описание

Свойство Hint Компонента обеспечивает текст подсказки, появляющийся в яр­лычке (всплывающем окне подсказки) или в заданном месте окна, например, в строке состояния.

В общем случае Hint Состоит из двух частей, разделенных символом верти­кальной черты Первая часть отображается в ярлычке, если пользователь задер­жит курсор мыши над данным компонентом (это может быть любой компонент, включая разделы меню). Обычно первая часть содержит краткое пояснение компо­нента. В частности, такой подсказкой как правило снабжаются быстрые кнопки типа TSpeedButton. Вторая часть содержит текст, отображаемый в какой-то выде­ленной для этого части окна, например, в строке состояния. Это обычно разверну­тое пояснение. Например, свойство Hint Для быстрой кнопки доступа к разделу меню сохранения файла может иметь вид: ‘Сохранить|Сохранение текущего доку-

Мента в файле’. Как частный случай, в свойстве Hint Может быть задана только первая часть подсказки без символа ‘∣’.

Для того чтобы первая часть появлялась в ярлычке, когда пользо­

Ватель задержит курсор мыши над данным компонентом, надо сделать следующее:

1. Указать тексты свойства Hint Для всех компонентов, для которых вы хотите обеспечить окно подсказки.

2. Установить свойства ShowHint (показать подсказку) этих компонентов в True Или установить в True Свойство ParentShowHint (ShowHint Родителя) и уста­новить в True Свойство ShowHint Контейнера, содержащего данные компонен­ты, или формы.

Конечно, вы можете устанавливать свойства В true или False Программно, включая и отключая подсказки в различных режимах работы приложения.

При ShowHint. равном true, ярлычок будет всплывать даже если компонент в данный момент недоступен (Enabled = false).

Если вы не задали значение свойства компонента Hint, Но установили в True Свойство ShowHint Или установили в True Свойство ParentShowHint. а в родитель­ском компоненте ShowHint = True, то в ярлычке будет отображаться текст Hint Из родительского компонента.

Правда, все описанное выше справедливо при значении свойства ShowHint Приложения (объекта Application), Равном True (это значение задано по умолча­нию). Если установить Applieation-ShowHint В False, То ярлычки не будут появ­ляться, независимо от значений ShowHint В Любых компонентах.

Для того чтобы вторая часть сообщения, записанного в Hint, Отображалась в строке состояния в моменты, когда курсор мыши проходит над компонентом, надо использовать обработку события OnHint. Это событие именно приложения Application, А не того компонента, над которым проходит курсор мыши. Если об­работчик этого события определен, то в момент прохождения курсора над компо­нентом, в котором задано свойство Hint, Вторая часть сообщения компонента зано­сится в свойство Hint Объекта Application. Если свойство Hint Компонента содер­жит только одну часть, то в свойство Hint Объекта Application Заносится эта пер­вая часть. Причем все это делается независимо от состояния свойства компонента ShowHint.

Чтобы отображать эти сообщения в строке состояния, надо определить и напи­сать обработчик события приложения OnHint, Как показано в приведенном ниже примере.

Третий способ использования свойства Hint Компонента заключается в непо­средственном отображении текста заключенного в нем сообщения в какой-то метке или панели с помощью функций GetShortHint И GetLongHint. Первая из которых возвращает первую часть сообщения, а вторая — вторую (если второй части нет, то возвращается первая часть).

Примеры

Пусть вы хотите отображать вторую часть подсказок, введенных в свойство Hint Компонентов, в полосе состояния StatusBar Поместите на форму панель со­стояния — компонент StatusBar Со страницы Win32 и установите его свойство SimplePanel В True. Тем самым вы превратите панель в односекционную. Если вы хотите использовать многосекционную панель, то в приведенном ниже операторе надо заменить свойство SimpleText Ссылкой на панель, в которой вы хотите ото­бражать подсказку. Перенесите на форму компонент ApplicationEvents, И в обра­ботчик его события OnHint Вставьте оператор

StatusBarl-J-SimpleText = Application->Hint;

Рассмотрим другой пример. Пусть вы хотите, чтобы при нажатии некоторой кнопки Buttonl Вашего приложения в панели Panell Высвечивалась подсказка

Пользователю, например, «Укажите имя файла», а сама кнопка имела ярлычок с текстом «Ввод». Тогда вы можете задать свойству Hint Этой кнопки значение ‘Ввод|Укажите имя файла’, задать значение True Свойству ShowHint, А в обработ­чик события нажатия этой кнопки вставить оператор

Panell-J-Caption = GetLongHint(Buttonl-JHint);

Если же вы не хотите отображать ярлычок для кнопки, то можете ограничиться значением Hint, Равным "Укажите имя файла", а приведенный выше оператор оста­вить неизменным или заменить на эквивалентный ему в данном случае оператор

Panell->Caption = GetShortHint(Buttonl-JHint); или даже просто на оператор

Panell-JCaption = Buttonl-JHint;

HostDockSite____________________________________________________

Определяет контейнер, в который встроен данный компонент.

Класс TControL

Определение

__ property TWinControl* HostDockSite

Описание

Свойство HostDockSite Определяет контейнер, в который встроен данный ком­понент. Если компонент находится в состоянии «плавающего» окна, то HostDock — Site — временный объект типа FloatingDockSiteClass Или NULL.

Обычно для программного встраивания компонента лучше использовать метод ManualDock, А не задание HostDockSite. Установка HostDockSite Приводит к не­медленному встраиванию компонента в указанный контейнер, но не устанавливает позицию компонента, его выравнивание и не воспроизводит событий встраивания.

Для встроенных компонентов значение HostDockSite Совпадает со значением Parent. Но если компонент никуда не встроен, то HostDockSite = NULL, a Parent Указывает на контейнер, содержащий данный компонент.

ГО______________________________________________________________________

Уникальный идентификатор объекта в собрании TCollection.

Класс TCoUectionItem

Доступ Толь ко Для чтения

Определение

__ property int ID

Описание

Свойство ID Определяет уникальный идентификатор объекта TCollectionItem. Обычно значение ID Совпадает с индексом (свойством Index) в момент включения объекта в собрание TCollection. Но индекс Index Может изменяться при вставке или удалении других объектов собрания. А идентификатор ID Остается неизмен­ным. Если объект удален из собрания, его идентификатор в дальнейшем использо­вать невозможно.

Поиск объекта по его идентификатору осуществляется методом FindItemID Того собрания TCollection, К которому относится объект.

Определение

__ property int ImageIndex

Описание

Свойство Imagelndex Указывает индекс изображения, появляющегося левее надписи данного раздела меню. Индекс относится к списку изображений — свой­ству Images Родительского меню типа TMenu Или TPopupMenu И начинается с 0.

Если родительское меню не содержит списка изображений (свойство Images Равно ), То для отображения изображения надо использовать свойство

Bitmap Компонента типа TMenuItern. Но Bitmap Действует только при Images Рав­ном LL и отрицательном значении Imagelndex. В противном случае значение

Bitmap Не принимается во внимание.

ImportedConstraint_

Строка SQL, накладывающая ограничение со стороны сервера на значение поля.

Класс TField

Определение

__ property AnsiString ImportedConstraint

Описание

Свойство ImportedConstraint Позволяет прочитать ограничение в виде строки SQL на значение поля, переданное сервером. Например, оно может иметь вид

Value > 0 and Value < 100

Что означает допустимый интервал значений 0-100. Значение ImportedConstraint Не следует изменять. Для ввода дополнительных ограничений служит свойство

CustomConstraint.

Принудительное удаление строки в свойстве ImportedConstraint Не изменит ограничение, заданное сервером. Просто проверка ограничения будет проводиться не локально, а самим сервером. Это означает, что при нарушении ограничения вместо сообщения, заданного свойством ConstraintErrorMessage, будет генериро­Ваться сообщение сервера об ошибке.

Index — свойство TCollectionltem__________________________________

Индекс объекта в свойстве Items Его контейнера TCollection.

Класс .TCollectionltem

Определение

__ property int Index

Описание

Свойство Index Определяет позицию объекта в свойстве Items Его контейнера

(собрания) TCollection. Индексация начинается с 0. При вставке или удалении других объектов собрания Index Может изменяться. В этом его отличие от иденти­Фикатор ID. Который остается неизменным.

Index — свойство TField__________________________________________

Индекс объекта поля в свойстве Fields Набора данных.

Класс TField

Определение

__ property int Index

Описание

Свойство Index Определяет индекс объекта поля в свойстве Fields Набора дан­ных. Это свойство позволяет определить или изменить индекс поля. Изменение индекса переместит колонку поля на новое место в таких компонентах отображе­ния данных, как TDBGrid. При этом, конечно, физическое положение поля в таб­Лице базы данных не изменится.

IndexDefs_______________________________________________________

Свойство, содержащее информацию об индексах таблицы.

Класс TTable

Определение

__ property Db: ZTIndexDefs* IndexDefs

Описание

Свойство IndexDefs Определяет объект типа TIndexDefs, Свойства которого со­держат информацию об индексах таблицы, связанной с компонентом типа ТТаЫе. Свойства и методы этого объекта позволяют:

• Получить доступ к определениям индексов

• Определить количество имеющихся индексов

• Добавлять или удалять индексы *

• Копировать определения всех индексов из свойства IndexDefs Одной таблицы в другую таблицу

См. пример применения свойства IndexDefs В гл. 4, В Разд. «CreateTable».

IndexOf — Метод TFields

Возвращает номер индекса объекта TField В списке TFields.

Класс TFields

Определение

Int____ fastcall IndexOf(TField* Field)

Описание

Метод IndexOf Возвращает номер индекса объекта Field Типа TField В списке Fields Типа TFields. Индексы начинаются с 0. Если поле в списке не найдено, воз­Вращается -1.

InternalCalcField_________________________________________________

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

Класс TFieldDeF

Определение

__ property bool InternalCalcField

Описание

Свойство InternalCalcField Определяет, является ли поле вычисляемым в ис­точнике данных (при значении True), Или оно имеется в таблице набора данных. Например, если выполняется запрос

SELECT Fam, Nam, (2002-Year_b) FROM Pers

И набор представляет собой «живые» данные (свойство набора ReqijestlJve Равно True), То описание поля, соответствующего выражению имеет зна­

Чение InternalCalcField = true.

Следует различать поля с InternalCalcField = true И вычисляемые поля, зна­Чения которых просчитываются в обработчиках событий OnCalcFields.

ItemClass_______________________________________________________

Класс объектов, содержащихся в контейнере TCollection.

Класс TCollection

Доступ Только Для чтения Определение

Type TcollectionIteinClass = class of TcollectionItern;

__ property System: :TMetaClass* ItemClass

Описание

Свойство ItemClass Определяет класс объектов, содержащихся в контейнере

TCollection — в массиве Items. Каждому классу-наследнику TCollection Соответст­вует свой класс-наследник TCollectionltem. Этот класс и указывается свойством ItemClass.

Items — свойство TCollection_______________________________________________

Индексированный массив объектов, хранящихся в TCollection.

Класс TCollectiOn

Определение

__ property TCollectionltem* Items [int Index]

Описание

Свойство Items обеспечивает индексированный доступ к объектам, хранящим­ся в TCollection — объектам типа TCoHectionItem. Индекс соответствует свойству Index Соответствующего объекта TCollectionltem. Индексы начинаются с 0.

Items — свойство TFieldDefs

Индексированный список описаний полей.

Класс TFieldDefs

Определение

__ property TFieldDef* Items [int Index]

Описание

Свойство Items Позволяет получить доступ к описанию TFieldDef Каждого поля набора данных. Параметр Index Определяет индекс описания в списке (начи­нается с 0). Например, Tablel->FieldI)efs >Items[O]->DisplayName — имя пер­вого поля набора данных компонента Tablel.

Пример

В следующем примере выпадающий список ComboBoxl Заполняется именами полей таблицы, соединенной с компонентом Tablel.

Tablel->Active = true;

ComboBoxl->Clear ();

For (int i=0; i < Tablel->FieldDefs->Count; i + + )

ComboBoxl->Items->Add(Tablel->FieldDefs->Items[i]->Name);

Items — свойство TList

Элементы массива указателей в объекте класса TList.

Класс TList

Определение

__ property void * Items tint Index]

Описание

Свойство Items Дает доступ к указателям, хранящимся в объекте класса TList. Параметр Index Является индексом массива указателей. Индексы изменяются, на­чиная с О (О — индекс первого указателя).

Свойство Items Позволяет получить доступ и к объектам, на которые указыва­ют элементы массива. Но при этом надо учитывать, что свойство Items Имеет тип Pointer, Т. е. является нетипизированным указателем. Такой указатель нельзя ра­зыменовать непосредственно. Надо использовать явное или неявное приведение типов. Примеры этого даны ниже, а также в разделе TList.

При организации циклов с просмотром указателей, содержащихся в Items, Надо иметь в виду, что часть из них может быть равна NULL. Если это может нару­шить работу алгоритма, то предварительно надо применить к объекту TList метод Pack, Который сократит размер массива, удалив из него нулевые указатели.

Пример

См. пример в гл. 1, в описании класса TList.

KeyFields, Lookup, LookupKeyFields, LookupDataSet, LookupResultFielld

Свойства, характеризующие поле просмотра — т. е. поле, значение которого пе­реносится в текущий набор данных из другого просматриваемого набора данных.

Класс TFjeld

Определения

__ property bool Lookup

__ property AnsiStrina KeyFields

__ property AnsiString LookupKeyFields

__ property TDataSet* LookupDataSet

__ property AnsiString LookupResultField

Описание

Поле просмотра — это поле, значение которого переносится в текущий набор данных, заданный свойством DataSet, из другого просматриваемого набора дан­ных, заданного свойством LookupDataSet. Если данное поле является полем про­смотра, его свойство Lookup Устанавливается в True. Свойство FieldKind Должно равняться FkLookup.

Имя поля в LookupDataSet, Значение которого переносится в свойство Value Данного поля, задается свойством LookupResultField. Запись в LookupDataSet, Из которой берется значение LookupResultField, Определяется следующим образом. В свойствах KeyFields И LookupKeyFields Перечисляются ключевые поля наборов данных DataSet И LookupDataSet. Это те поля двух наборов данных, значения ко­торые должны совпадать. Если имеется несколько ключевых полей, то они разде­ляются в списках KeyFields И LookupKeyFields Точками с запятой. Последова­тельность перечисления полей в этих списках должна быть взаимно согласована. Т. е. сравниваются значения первых полей, значения вторых и т. д. Типы сравни­ваемых полей должны совпадать друг с другом. Если в LookupDataSet Нашлась за­пись, в которой значения всех полей списка LookupKeyFields Совпадают со значе­ниями полей списка KeyFields Текущей записи набора данных DataSet, То в дан­Ное поле заносится значение поля LookupResultField.

Left

Координата левого края компонента в пикселах.

Класс TControL

Определение

__ property int Left

Описание

Свойство Left Определяет координату левого края компонента в пикселах. Для компонентов за начало отсчета берется левая граница клиентской области родите­ля (например, панели, если данный компонент расположен на панели, или формы, если компонент расположен непосредственно на форме). Для формы координата Left Представляет собой горизонтальную координату экрана, отсчитываемую от его левого края.

Свойство Left Используется при перемещениях и изменениях размеров компо­Нентов (см. примеры в разд. BoundsRect И Components).

List____________________________________________________________

Указатель на массив указателей в объекте класса TList.

Класс TList

Доступ Толь ко Для чтения

Определение

Typedef void *TPointerList[134217727] ; typedef TPointerList *PPointerList;

_ property PPointerList List

Описание

Свойство List дает непосредственный доступ к массиву Items Массиву ука­зателей объекта типа TList. Например, MyList->Items[O] И MyList->List[01 ука­зывают на один и тот же элемент массива.

Пример

См. пример в гл. 1, в описании класса TList.

Lookup_________________________________________________________

См. раздел «KeyFields, Lookup, LookupKeyFields, LookupDataSet, LookupRe — SultField».

LookupCache____________________________________________________

Определяет должны ли значения поля просмотра кэшироваться, или просмотр должен осуществляться при каждом изменении текущей записи.

Класс TField

Определение

__ property bool LookupCache

Описание

Свойство LookupCache Имеет смысл только для полей просмотра, в которых FieldKind = FkLookup. Задание LookupCache Равного True Определяет, что про­смотр набора данных LookupDataSet Производится однократно при открытии на­бора PataSet. И значения поле просмотра кэшируются. Этот кэш определяется свойством LookupList И содержит значения поля LOokupResUItPieId для каждого множества ключевых полей списка LoOkupKevΓIElds. При смене текущей записи набора DataSet Значение поля просмотра берется из кэша. Это существенно повы­шает эффективность работы, особенно в случаях, когда доступ к просматриваемо-

Му набору данных LookupDataSet Должен осуществляться по сравнительно мед­ленной сети. С другой стороны, кэширование требует затрат вычислительных ре­сурсов клиента. Эти затраты могут стать особенно непомерными, если в различных записях набора DataSet Используются разные наборы ключевых полей KeyFields. Для сокращения затрат вычислительных ресурсов клиента имеет смысл задавать LookupCache = false.

При изменении во время выполнения приложения просматриваемого набора данных LookupDataSet Просмотр в кэше может дать неправильные результаты. В подобных случаях надо обновлять LookupList С помощью метода RefreshLook- UoList. При установке в True Свойства LookupCache Во время выполнения необхо­Димо также вызывать RefreshLookupList.

LookupDataSet________________________________ ____________

См. раздел «KeyFields, Lookup, LookupKeyFields, LookupDataSet, LookupRe — SuItField ».

LookupKeyFields_________________________________________________

См. раздел «KeyFields, Lookup, LookupKeyFields, LookupDataSet, LookupRe — SultField ».

LookupList И RefreshLookupList____________________________________

Кэш значений набора данных LookupDataSet, Индексированных множеством полей KeyFields, И метод обновления этого кэша.

Класс TField

Определения

__ property TLookupList* LookupList // только Для чтения

Void____ fastcall RefreshLookupList(Void) ;

Описание

Свойство LookupList Определяет (только при кэшировании полей просмотра, т. е. при FieldKind = ft. Lookup И при LookupCache = True) кэш значений набора данных LookuDDataSet. Индексированных множеством полей KeyFields.

Значения, хранящиеся в LookupList, Устанавливаются при открытии DataSet И при выполнении метода RefreshLookupList. Заполнение производится в соответ­ствии со списком LookupKeyFields. Этот метод надо вызывать явно, если во время выполнения производится установка свойства LookupCache И если изменяются значения LookupResultField Или LookupKeyFields В LookupDataSet.

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

Свойство LookupList Имеет тип TLookupList. Объект TLookupList Генерирует­ся программно, если задается значение свойства поля LookupList И устанавливает­ся в Due свойство LookupCache. Если при этом другие свойства, связанные с поля­ми просмотра, не установлены, то кэш LookupList Не заполняется автоматически значениями из просматриваемого набора данных и, значит, может заполняться программно.

В классе TLookupList, Наследующем TObject, Отсутствуют свойства, но опре­делены следующие основные методы:

Метод

Описание

Add

Добавляет программно строку в список LookupList, не связан­ный с реальным просматриваемым набором данных

Метод

Описание l∣

Clear

Очищает кэш, освобождая память. Этот метод надо вызывать пе­ред программным заполнением списка LookupList

ValueOfKey

Возвращает значение, соответствующее указанному списку клю­чевых полей i

Метод Add Объявлен как

Void___ fastcall Add(const SysteniizVariant SAKey,

Const System::Variant SAValue);

помимо этого наследуются все методы класса tobject.

Параметр АКеу Типа Variant Или массива Variant Представляет одно или бо­лее значений ключевых полей. Параметр AValue Типа Variant Задает значение поля просмотра, связанного с ключевыми полями.

Метод ValueOfKey Объявлен как

SystemzzVariant__________ fastcall ValueOfKey(const SystemzzVariant SAKey);

Параметр АКеу типа Variant Или массива Variant Представляет одно или бо­лее значений ключевых полей в просматриваемом наборе данных. Метод возвра­щает найденное значение поля LookupKeyFields. Таким образом, значение поля просмотра определяется выражением:

Value = LookupList-WalueOfKey(DataSet->FieldValues[KeyFields]);

LookupResultField________________________________________________

См. раздел «KeyFields, Lookup, LookupKeyFields, LookupDataSet, LookupRe — SultField ».

MasterSource___________________________________________________

Во вспомогательной таблице определяет источник данных головной таблицы.

Класс TTable

Определение

_ property Db:ZTDataSource* MasterSource

Описание

Свойство MasterSource Во вспомогательной таблице определяет источник дан­ных головной таблицы, т. е. компонент DataSource, в свойстве DataSet Которого содержится ссылка на головной набор данных.

После установки MasterSource Можно задавать ключевые поля MasterFields, Совпадение которых обеспечивает связь головной и вспомогательной таблиц.

MinValue И MaxValue__________________________________

Определяют ограничения на значение поля

Классы TIntegerField, TLargeIntField TFloatField, TBCDFleld Определения

__ property int MinValue

__ property int MaxValue

// Для // Для

TIn tegerField TIntegerField

__ property_____ int64 MinValue

// Для

TLargelntField

__ property_____ int64 MaxValue

// Для

TLargeln t Field

__ property double MinValue

// Для

TFloatField

__property

Double MaxValue

//

Для

TFloatField

_ property

System::Currency MinValue

//

Для

TBCDField

_ property

SystemzrCurrency MaxValue

//

Для

TBCDField

Описание

Свойства MinValue И MaxValue Определяют ограничения минимального и мак­симального значений, вводимых в поле. Если значения этих свойств равны нулю, значит ограничение не накладывается (кроме естественных ограничений, свойст­венных типу вводимых значений). При нарушении установленных ограничений ге­Нерируется исключение EDatabaseError.

Mode — свойство TBatchMove______________________________________________

Свойство, определяющее, что происходит при выполнении метода Execute Объекта TBatchMove

Класс TBatchMove Определение

Enurn TBatchMode { batAppend, batUpdate, batAppendUpdate, batDelete, batCopy };

__ property TBatchMode Mode

Описание

Свойство Mode Определяет, что именно делает объект BatchMove. Свойство Mode Может иметь следующие значения:

BatAppend

Записи из источника данных добавляются в приемник, не изме­няя существующих там записей. Таблица-приемник должна су­ществовать до начала переноса данных

BatUpdate

Записи в таблице-приемнике с ключевыми полями, соответствую­щими полям в таблице-источнике, изменяются на записи из ис­точника. Новые записи в приемник не добавляются. Таблица-при­емник должна существовать до начала переноса данных и должна ∣

Иметь индекс

BatAppend

Update

Записи в таблице-приемнике с ключевыми полями, соответствую­щими полям в таблице-источнике, изменяются на записи из источ­ника. Записи из таблицы источника, которые не имеют соответст­вия в приемнике, добавляются туда. Таблица-приемник должна су­ществовать до начала переноса данных и должна иметь индекс

BatDelete

Записи в таблице-приемнике, которым находится соответствие в источнике, удаляются из приемника. Таблица-приемник должна существовать до начала удаления данных и должна иметь индекс

I batCopy

Таблица-приемник создается и заполняется записями источника. Если таблица-приемник уже существовала, то ее содержимое за­меняется содержимым источника

Mode — свойство ТРеп

Определяет режим рисования пером на канве.

Класс ТРеп Определение

Enum TPenMode {pmBlack, pmWhite, pmNop, pmNo⅛ ртСору, pmNotCopy, pmMergePenNot, ртМаSkPenNot,

PinMergeNotPen, pmMaskNotPen, pmMerge,

PmNotMerge, pmMask, pmNotMask, pmXor, pmNotXor}

_ property TPenMode Mode

Описание

Свойство пера Mode Определяет, каким образом взаимодействуют цвета пера и канвы. Выбор значения Mode Позволяет получать различные эффекты.

Возможные значения Mode:

Режим

Цвет пиксела ∣∣

PmBlack

Всегда черный

Pm White

Всегда белый

PmNop

Неизменный

PmNot

Инверсный по отношению к цвету фона канвы

PmCopy

Цвет, указанный в свойстве Color пера Реп: это значение принято по умолчанию

PmNotCopy

Инверсия цвета пера

PmMergePenNot

Комбинация цвета пера и инверсного цвета фона канвы

PmMaskPenNot

Комбинация цветов, общих для цвета пера и инверсного цве­та фона канвы

PmMergeNotPen

Комбинация цвета фона канвы и инверсного цвета пера

PmMaskNotPen

Комбинация цветов, общих для цвета фона канвы и инверс­ного цвета пера

PmMerge

Комбинация цвета пера и цвета фона канвы

PmNotMerge

Инверсия режима pmMerge: комбинации цвета пера и цвета фона канвы

PmMask

Комбинация цветов, общих для цвета фона канвы и цвета пера

PmNotMask

Инверсия режима pmMask: комбинации цветов, общих для цвета фона канвы и цвета пера

PmXor

Операция хог: комбинация цветов или пера, или фона кан­вы, но не обоих

PmNotXor

Инверсия режима pmXor: комбинации цветов или пера, или фона канвы, но не обоих

Name — свойство TComponent______________________________________________

Имя компонента, по которому на него ссылаются другие компоненты.

Класс TComponent

Определение

__ Property AnsiString Name

Описание

Свойство Name Определяет имя компонента, которое используется в дальней­шем в программе. Задается только в процессе проектирования и не должно изме­няться во время выполнения. Иначе операторы программы могут оказаться непра­вильными.

По умолчанию C++Builder сама присваивает имена компонентам, размещае­мым на форме. Эти имена по умолчанию надо изменять в процессе проектирования на осмысленные. Иначе при сколько-нибудь сложной форме вы сами через некото­рое время не сможете понять, что такое Panel7 Или Buttonl3.

Пример использования свойства Name См. в разделе «Components».

Name — свойство TNamedItem____________________________________

Имя входа в базу данных.

Класс TNamedltem Определение

___ property System::AnsiString (tame

Описание

Свойство Name Определяет имя объекта входа в базу данных. Если этот объект TNamedltem — описание поля, то Name — это имя поля таблицы.

Пример

См. пример в гл. 4, в разд. « CreateTable*.

N ewVal ue______________________________________________________

См. раздел «Value, NewValue, OldValue».

ObjectView_______________________________________________________________

См. раздел «Fields и ObjectView».

OldVa lue_______________________________________________________

См. раздел «Value, NewValue, OldValue».

Origin__________________________________________________________

Имя поля в наборе данных, включая имена базы данных и таблицы.

Класс TField

Определение

__ property AnsiString Origin

Описание

Свойство Origin Устанавливается только во время проектирования и только при использовании компонента Query. Значение Origin Складывается из имени таблицы и имени поля. Например, при следующем запросе SQL к базе данных Paradox с именем DBP:

SELECT Fam AS F FROM PERS

Значение Origin Будет равно "DBP."PERS. DB".Fam", А значение FiehiName "F".

Owner___________________________________________________________________

Определяет владельца данного компонента.

Класс TComponent

Доступ Толь ко Для чтения

Определение

_ property TComponent * Owner

Описание

Свойство Owner определяет владельца данного компонента. Форма является владельцем всех расположенных на ней компонентов. В свою очередь Application является владельцем всех форм. Когда освобождается память, занимавшаяся вла­дельцем, автоматически освобождается память всех компонентов, которыми он

Владел.

Parent___________

Определяет родительский компонент, в площади которого располагается дан­ный компонент.

Класс TControL

Определение

__ property TWinControl* Parent

Описание

Свойство Parent Определяет родительский компонент, т. е. компонент-контей­нер, содержащий данный компонент. Контейнерами являются оконные компонен­ты, такие, как формы, панели и некоторые другие. Расположенные на них дочер­ние компоненты могут наследовать часть свойств содержащего их контейнера, на­пример, шрифт, цвет, отображение ярлычков подсказки, трехмерность. Для этого должны быть установлены в True Свойства дочерних компонентов ParentFont, ParentColor, ParentShowHint. ParentCtl3D.

Надо различать два похожих свойства: Parent — родительский компонент, и Owner — владелец компонента. Родительский компонент — это тот, на котором располагается данный компонент. А владелец — это компонент, который переда­ется в качестве параметра в конструктор данного компонента и который владеет им. Форма является владельцем всех расположенных на ней компонентов. В свою очередь объект приложения Application Является владельцем всех форм.

Изменение во время выполнения свойства Parent Заставляет компонент пере­мещаться на экране в клиентскую область нового родителя.

Пример использования свойства Parent Приведен в разд. «Visible».

ParentCtl3D_____________________________________________________

Определяет наследование свойства объемного изображения от родительского

Компонента.

Класс TWinControl

Определение

__ property bool ParentCtl3D

Описание

Если свойство ParentCtlBD Имеет значение True, То компонент наследует свой­ство Ctl3D. Управляющее объемным или плоским изображением, от своего роди­тельского элемента. Это способствует единообразию изображений. Если все компо­ненты на форме имеют значение ParentCtI3D, Равное True, То их вид определяется значением Ctl3D формы.

Непосредственное задание свойства Ctl3D Какому-либо компоненту автомати­Чески приводит к сбросу на False Его свойства ParentCt!3D.

ParentFont_____________________________________

Включает и выключает использование шрифта родительского компонента Класс TControl

Определение

__ property bool ParentFont

Описание

Свойство ParentFont Определяет, будет ли для данного компонента использо­ваться шрифт (свойство Font) Родительского компонента-контейнера. Если устано­вить во всех компонентах, размещенных на панели, ParentFont В True, То во всех компонентах будет использоваться одинаковый шрифт с одинаковым размером, цветом, стилем. Если все компоненты на форме имеют ParentFont, Равным True, То во всех них атрибуты шрифта определяются свойством Font Формы. Тогда, на­пример, увеличение размера шрифта у формы приведет к согласованному измене­нию размеров шрифта всех размещенных на ней компонентов.

Если у формы свойство ParentFont Тоже установлено в True, То шрифт опреде­ляется свойством Font Объекта приложения Application.

При изменении свойства Font В каком-то компоненте, его свойство ParentFont Автоматически сбрасывается в False.

ParentShowHint_________________________________________________

Включает и выключает использование родительского свойства ShowHint.

Класс TConTrol

Определение

__ property bool ParentShowHint

Описание

Свойство ParentShowHint Используется, чтобы иметь возможность одновре­менно всем компонентам некоторого контейнера или формы разрешать или запре­щать отображение ярлычков (всплывающих окон подсказки) при задержке на них курсора мыши. Отображаемый в окнах текст определяется свойствами ShowHint Компонентов.

Если свойство ParentShowHint Установлено в True, То разрешение или запрет отображения ярлычков определяется свойством ShowHint Родительского компо­нента. Если же свойство ParentShowHint Установлено в False, То отображение окон подсказки определяется свойством ShowHint Самого компонента.

При задании в компоненте значения ShowHint, Равного True, Его свойство ParentShowHint Автоматически сбрасывается в False.

Управлять отображением окон подсказок всего приложения в целом можно также свойством ShowHint Объекта Application.

Подробные пояснения и примеры см. в разд. «Hint».

Pen_____________________________________________________________________

Определяет атрибуты пера, используемого для рисования линий и фигур.

Класс RTCanvas

Определение

__ property TPen* Реп

Описание

Свойство канвы Реп определяет атрибуты пера, используемого для рисования линий и фигур. Это свойство является объектом типа ТРеп (см. описание этого типа для получения дополнительной информации). Атрибуты объекта типа ТРеп Определяют цвет, ширину, стиль линий и режим рисования пера.

Присваивание свойства Реп может производиться методом Assign.

PenPos______ ______________________________ _____ ____________

Определяет положение пера на канве

Класс TCanvas

Определение

_ property windows::TPoint PenPos

Описание

Свойство канвы PenPos Определяет переменной типа TPoint Положение пера на канве. Координаты пера, определенные этим свойством, задают начальную точ­ку рисования линии методом LineTo.

Свойство PenPos Изменяется методом MoveTo И некоторыми методами рисова­ния (например, методом LineTol. Непосредственная установка PenPos Эквивалент­На применению метода MoveTo.

Pitch___________________________________________________________

Определяет способ установки ширины символов шрифта.

Класс TFont \

Определение

Enum TFontPitch ( fpDefault, fpVariable, fpFixed );

_ property TFontPitch Pitch

Описание

Каждый вид шрифта имеет соответствующий способ определения ширины символов. Есть шрифты с одинаковой шириной всех символов. Есть шрифты, в ко­торых разные символы имеют разную ширину. Шрифты с постоянной шириной используются для отображения исходных кодов программ, поскольку в них удоб­но делать фиксированные отступы. Но шрифты с различной шириной символов выглядят естественнее и более компактны.

Возможные значения свойства Pitch:

Значение

Описание

FpDefault

Ширина устанавливается равной по умолчанию, т. е. описанной в шрифте заданного вида Name.

` fpFixed

Установка одинаковой ширины всех символов.

FpVariable

Установка различной ширины символов.

Установка значений FpVariable Или FpFixed Заставляет Windows искать наи­лучший способ удовлетворить всем заданным характеристикам шрифта. Иногда это может привести к замене шрифта на шрифт другого, близкого вида. Но иногда может вообще не повлиять на шрифт. Все зависит от конкретного вида шрифта и даже от версии этого шрифта.

См. пример 4 в разд. Font.

Pixels__________________________________________________________

Определяет цвета пикселов канвы в пределах текущей области ClipRect.

Класс TCanvas

Определение

Enum TColor {clMin=-0x7fffffff-l, clMax=0x7fffffff};

,property TColor Pixels lint X] [int Y]

Описание

Свойство канвы Pixels Определяет цвет пиксела канвы С координатами X и Y в пределах текущей области ClipRect. Если заданы координаты пиксела вне облас­ти ClipRect. То при чтении свойства Pixels Возвращается значение -1.

Задание значений пикселов позволяет рисовать по пикселам графики и ли­нии. Определение цвета пиксела используется обычно в методе FillRect.

Не все устройства поддерживают свойство Pixels. Чтение Pixels Для таких уст­ройств возвращает -1, Установка Pixels Для подобных устройств не дает никаких Результатов.

PopupMenu_____________________________________________________

Определяет всплывающее меню, связанное с данным компонентом

Класс TFonT

Определение

___ property Menus::TPopupMenu* PopupMenu

Описание

Задание свойства PopupMenu Обеспечивает появление всплывающего меню, если в то время, когда выбран данный компонент, пользователь щелкнул правой кнопкой мыши. Обычно в этом всплывающем меню задаются основные команды, относящиеся к данному компоненту. Объект меню имеет тип TPopupMenu. Если в этом объекте свойство AutoPopup установлено в true, то меню будет появляться автоматически. В противном случае надо отображать меню с помощью метода Popup Класса TPopupMenu.

Precision_______________________________________________________

Определяет число разрядов, характеризующих точность поля BCD.

Класс TFieldDeF

Определение

__ property int Precision

Описание

Свойство Precision Определяет общее число разрядов, используемых для хра­нения значения поля BCD. Если DataType не FtBCD, То значение Precision Игнори­Руется.

QuoteChar______________________________________________________

Символ кавычек, используемый в свойстве DelimitedText.

См. раздел «CommaText, DelimitedText, Delimiter, QuoteChar».

Readonly — свойство TField_______________________________________

Указывает, является ли значение поля значением только для чтения.

Класс TField

Определение

__ property oool Readonly

Описание

Задание Readonly Равным True Запрещает модификацию значения данного поля. В таблице данных при табуляции пользователя по полям с помощью клави­ши Tab поле, помеченное как Readonly, Пропускается.

Чтобы определить, можно ли модифицировать значение поля, лучше исполь­зовать свойство CanModify. Которое учитывает не только установку ReadOnly Дан­Ного поля, но и иные ограничения на работу с набором данных.

RecNo

Номер записи.

Класс TBDEDataSeT

Определение ‘ _ property int RecNo

Описание

Свойство RecNo Определяет номер активной записи в наборе данных с учетом применяемой индексации набора. Совместно с числом записей RecordCount свой­ство RecNo Может использоваться для организации циклов по записям. Особенно это удобно делать для таблиц Paradox, в которых установка RecNo Автоматически позиционирует курсор на указанную запись (см. пример). Впрочем, удобнее для навигации использовать методы First, Last. MoveBy. Next. Prior.

Свойство IsSequenced показывает, можно ли применять в данном наборе свой­ство RecNo.

Пример

Следующий код отображает список сотрудников, хранящийся в таблице

Paradox.

Void _fastcall TForml: :ButtonlClick(TObject *Sender)

{

String info = "Список сотрудникое\п\п" ; for (int i=l; i <= Tablel->RecordCount; i+ + )

{

Tablel->RecNo = i;

Info += Tablel->FieldByName("Fam")->AsΞtring + ‘∖n’,∙

}

ShowMessage(Info);

}

Required — Свойство TField _

Указывает, должно ли поле обязательно иметь значение, или оно может оста­ваться пустым.

Класс TField

Определение

_ property bool Required

Описание

Свойство Required Определяет, должно ли поле обязательно иметь значение, или оно может оставаться пустым. Если объект поля создан Редактором Полей, то свойство Required Устанавливается в соответствии с аналогичным свойством поля в таблице данных. Если свойство помечено в таблице как обязательное, то при по­пытке приложения переслать в него пустое значение генерируется исключение E Database Error.

В приложении можно задать Required = true И для поля, которое в таблице данных не помечено как обязательное. Но в этом случае надо написать соответст­вующий обработчик события On Validate, В котором генерировать EDatabaseError При попытке переслать в базу данных пустое значение.

Required — свойстВо TFieldDef

Свойство указывает, обязательно ли должно быть задано значение описывае­мого поля.

Класс TFieldDef

Определение

__ property bool Required

Описание

Свойство Required Указывает, обязательно ли должно быть задано значение описываемого поля. Если Required = false, То значение поля при заполнении запи­си может оставаться пустым. Если Required = true, То значение поля обязательно должно быть задано. Свойство Required Задается при создании нового поля в его описании.

Пример

См. пример в гл. 4, в разд. «CreateTable».

SavePoint________________________________________________________________

Определяет точку текущего состояния клиентского набора данных.

Класс TcustomClientDataSeT

Объявление

__ property int SavePoint

Описание

Свойство SavePoint Определяет точку текущего состояния результатов редак­тирования. Целое число, возвращаемое этим свойством, можно запомнить. Если после этого проведен ряд операций редактирования, то вы можете отменить их все, задав значение SavePoint, Равное сохраненному.

Например, вы можете ввести в приложение глобальную переменную: int MySavePoint;

И в событии формы OnCreate После открытия набора данных записать оператор:

MySavePoint = ClientDataSetl->SavePoint;

Тем самым вы запомнили начальное состояние. Если после работы с набором данных пользователь захочет отменить все результаты редактирования и вернуть­ся к этому начальному состоянию, достаточно выполнить оператор:

ClientDataSetl->SavePoint = MySavePoint;

Если же пользователь хочет зафиксировать в наборе все имеющиеся на дан­ный момент результаты редактирования, достаточно выполнить уже приведенный

Выше оператор

MySavePoint = ClientDataSetl->SavePoint;

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

Возврат к прежнему состоянию невозможен, если уже произошла отмена из­менений или установкой свойства (т. е. нельзя вернуться на 2 шага назад, можно помнить только одно предыдущее состояние), или методами RevertPecord И Сап — CelUpdates.

Класс TDatabase

Определение

___ property System: -.AnsiString SessionName

Описание

Свойство SessionName Задает имя сеанса сетевого соединения — компонента Session, С которым связан компонент базы данных Database. На это имя должны ссылаться использующие эту базу данных компоненты наборов данных (наследни­ки TDBDataSet) В своих свойствах SessionName.

Если свойство SessionName В компоненте Database Оставляется пустым, то компонент автоматически связывается с компонентом по умолчанию Session. Во время проектирования свойство SessionName Компонентов Database Устанавлива­ется выбором из выпадающего списка в Инспекторе Объектов. В этом списке все­гда имеется раздел Default — по умолчанию. Если в приложение явным образом введены компоненты Session, В которых заданы свойства SessionName, То в выпа­дающем списке в Инспекторе Объектов содержатся также имена SessionName Этих компонентов Session.

SessionName — свойство TDBDataSet_______________________________

Имя компонента Session, Связанного с набором данных.

Класс TDBDatASet

Определение

___ property System::AnsiString SessionName

Описание

Свойство SessionName Задает имя набора данных компонента Session. Это имя автоматически задается равным свойству SessionName компонента базы дан­ных TDatabase, С которым связан набор данных.

Если свойство SessionName В компоненте набора данных оставляется пустым, то набор автоматически связывается с компонентом по умолчанию Session. Во вре­мя проектирования свойство SessionName Компонентов-наследников TDBDataSet Устанавливается выбором из выпадающего списка в Инспекторе Объектов. В этом списке всегда имеется раздел Default — по умолчанию. Если в приложение явным образом введены компоненты Session, В которых заданы свойства SessionName, То в выпадающем списке в Инспекторе Объектов содержатся также имена Session — Name Этих компонентов Session. Значение SessionName, Устанавливаемое в ком­поненте набора данных, должно совпадать со значением SessionName, Установлен­Ным в наборе данных Database, С которым связан набор.

SessionName — свойство TSession__________________________________

Имя сеанса сетевого соединения, которое присваивается компоненту TSession Для ссылок на него в компонентах наборов данных и баз данных.

Класс TSession

Определение

__ property AnsiString SessionName

Описание

Свойство SessionName Задает имя сеанса сетевого соединения, на которое мо­гут ссылаться компоненты наборов данных TDBDataSet И баз данных TDatabase. Имя, указанное в свойстве SessionName компонента TSession, Появится в Инспек­торе Объектов в выпадающих списках свойств SessionName Компонентов TData — base И наборов данных-наследников TDBDataSet.

Если свойство AutoSessionName Установлено в True, Приложение не может Явным образом установить значение SessionName.

Shortcut_________________________________________________________________

Определяет комбинацию «горячих» Клавиш, обеспечивающих быстрый дос­туп к разделу меню.

Класс TMenuItem

Определение

TypedefWord TShortCut;

__ property TShortCut Shortcut

Описание

Задание свойства Shortcut Позволяет пользователю не выбирать данный раз­дел из меню, а просто нажать заданную комбинацию «горячих» клавиш. Эта ком­бинация при установке Shortcut Автоматически появляется в надписи раздела.

При задании свойства Shortcut Во время проектирования Инспектор Объек­тов предлагает длинный список возможных комбинаций клавиш. При задании значения Shortcut Во время выполнения можно использовать функции ShortCut, TextToShortCut. ShortCutToText.

ShowHin t______________________________________________________

Включает или отключает показ ярлычка (всплывающего окна подсказки) при задержке курсора мыши над компонентом.

Классы TControl. TAppUcation

Определение

__ property Pool ShowHint

Описание

Ярлычок (всплывающее окно подсказки) при задержке курсора мыши над компонентом появляется, если свойство компонента ShowHint (показать подсказ­ку) установлено в True И задан текст подсказки в свойстве Hint. Правда, и при ShowHint = false Всплывающее окно подсказки может появляться, если установ­лено в True Свойство ParentShowHint (взять ShowHint Родительского компонен­та), а в родительском компоненте ShowHint = true.

Изменение ShowHint Автоматически ставит PareNtShoWHint В False.

Свойство ShowHint Приложения Application (по умолчанию равно True) Опре­деляет, могут ли появляться окна подсказки в каких-то компонентах. Если уста­новить Application-> ShowIIint В False, То окна подсказки не будут появляться не­зависимо от значений ShowHint В Любых компонентах.

См. подробные пояснения и примеры в разделе «Hint».

Showing________________________________________________________

Определяет, виден ли компонент в данный момент.

Класс TWinConTrol

Доступ Только Для чтения

Определение

__ property bool Showing

Описание

Свойство Showing Показывает, может ли пользователь в данный момент ви­деть компонент. Правда, при этом не учитывается, что другие компоненты могут

Загородить данный. Поэтому значение Showing, Равное True, Еще не гарантирует, что пользователь действительно видит компонент. Если компонент накрыт другим видимым компонентом, то пользователь его все-таки не увидит.

Если свойство Visible Компонента и всех его родителей (компонентов, содер­жащих его) равно True, то и Showing Равно True. Если же свойство Visible Компо­Нента или какого-то из его родителей равно False, то Showing Равно False.

Size — свойство TField___________________________________________

Размер, определенный в описании поля базы данных, для типов полей, под­держивающих различные размеры.

Класс TField Определение property int Size

Описание

Свойство Size Указывает размер, определенный в описании поля базы данных, для типов полей, поддерживающих различные размеры. Интерпретация значения

Size зависит от типа поля:

FtBoolean

Size не используется; значение Size = 0

[ftSmalHnt,

Size не используется; значение Size = 0

Ft^Word

Size не используется; значение Size = 0

I ftAutoInc

Size не используется; значение Size = 0

FtDate

Size не используется; значение Size = 0

Ftlnteger

Size не используется; значение Size = 0

FtTime

Size не используется; значение Size = 0

FtCurrency

Size не используется; значение Size = 0

FtDateTime

Size не используется; значение Size = 0

FtFloat

Size не используется; значение Size = 0

FtBCD

Size — число цифр после десятичной запятой

FtString

Size — максимальное число символов в строке

FtVarBytes

Size — максимальное число байтов, не считая двух байтов, указывающих истинное использованное число байтов

FtBytes

Size — максимальное число байтов

FtBlob

Size — число байтов из поля BLOB, которые хранятся в буфере

Записи

FtDBaseOle

Size — число байтов из поля DBase OLE BLOB, которые хранят­ся в буфере записи

FtFmtMemo

Size — число байтов из поля Memo, которые хранятся в буфере

Записи

FtGraphic

Size — число байтов из поля изображения, которые хранятся

В буфере записи

I ftMemo

Size — число символов из поля Memo, которые хранятся в бу­фере записи Size

FtParadoxOle

Size — число байтов из поля Paradox OLE BLOB, которые хра­нятся в буфере записи

I HTypedBinary

Size — число байтов из поля BLOB, которые хранятся в буфере записи

HUnknown

Size не используется; значение Size = 0

HCursor

Size не используется; значение Size = 0

FtADT

Size — общее число полей, содержащихся в поле ADT, вклю­чая дочерние поля любых дочерних полей типа.

I HReference

Size не используется; значение Size = 0

FtDataSet

Size не используется; значение Size = 0

Size — свойство_ TFieldDef_______________________________________

Свойство определяет размер поля.

Класс TFieldDef

Определение

__ property int Size

Описание

Свойство Size Определяет размер поля одного из следующих типов TField — Tvpe: ftString, ftBCD, ftBytes, ftVarBytes, ftBlob, ftMemo, ft Graphic. При созда­нии в таблице полей этих типов для них должно быть указано значение Size.

Для строк и полей байтов значение Size — это число байтов, отведенных под хранение значения данного поля. Для полей BCD значение Size — это число разря­дов после запятой. Для полей BLOB, Memo и Graphic значение Size — это число первых байтов значения поля, которые хранятся непосредственно в самой таблице набора данных.

Пример

См. пример в гл. 4, в разд. «CreateTable».

Size — свойство TFont

Размер шрифта в кеглях (пунктах).

Класс TFont

Определение

__ property int Size

Описание

Свойство Size Определяет размер шрифта в кеглях (пунктах, принятых в Win­dows). Если значение Size Задано отрицательным, то в размер входит верхний пик­сел каждой строки. Если значение Size Задано положительным, то этот пиксел не учитывается.

Для задания размера шрифта может использоваться другое свойство: Height — Размер шрифта в пикселах. Значение Size Связано со свойствами Height и Pixels — PerInch (число пикселов на дюйм — см. TFont) Соотношением:

Font->Size = — Font->Height * 12 I E, ont->PixelsPerInch

Из соотношения, в частности, видно, что задание положительного значения Size Ведет к отрицательному значению Height. Можно задавать Size Отрицатель­ным; тогда Height Будет положительным.

State____________________________________________________________________

Свойство определяет режим, в котором находится набор данных.

Класс TDataSet

Доступ Толъко Для чтения

Определение

Enum TDataSetState {dslnactive, dsBrowse, dsEdit, dslnsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc, dsOpening);

__ property TDataSetState State

Описание

Свойство State Определяет состояние набора данных. Это свойство доступно только во время выполнения и только для чтения. Набор данных может находить­ся в одном из следующих состояний:

I dslnactive

Набор данных закрыт, данные недоступны

DsBrowse

Данные могут наблюдаться, но не могут изменяться. Это состо­яние по умолчанию после открытия набора данных

DsEdit

Текущая запись может редактироваться

Dslnsert

Может вставляться новая запись

DsSetKey

Доступен режим поиска записи и операция задания диапазона изменений SetRange. Может наблюдаться только ограничен­ное множество данных и не может проводиться редактирова­ние или вставка новой записи

DsCalcFields

Происходит обработка события OnCalcFields. He может прово­диться редактирование невычисляемых полей или вставка но­вой записи

DsFilter

Происходит обработка события OnFilter Record. Может наблю­даться только ограниченное множество данных и не может проводиться редактирование или вставка новой записи

DsNewValue

Внутреннее временное состояние, показывающее, что доступно свойство поля TField. NewValue

DsOldValue

Внутреннее временное состояние, показывающее, что доступно свойство поля TField. OldValue

DsCurValue

Внутреннее временное состояние, показывающее, что доступно свойство поля TField-CurValue

DsBlockRead

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

DsInternalCalc

Временное состояние, используемое внутри компонента

DsOpening

Набор данных открывается, но этот процесс еще не закончен

Шесть последних состояний чисто служебные и для пользователя интереса не представляют. Они устанавливаются автоматически, когда приложение обращает­ся к соответствующему свойству TField, И наблюдаться из приложения не могут. Состояния DsCalcFields И DsFilter Также устанавливаются автоматически при воз­никновении событий OnCalcField и OnFiiterRecord и наблюдаться из приложения не могут. А остальные состояния могут устанавливаться в приложении во время выполнения, но не непосредственно, а с использованием различных методов.

Метод Close Закрывает соединение с базой данных, устанавливая свойство Active Набора данных в False. При этом State Переводится в состояние Dslnactive.

Метод Open Открывает соединение с базой данных, устанавливая свойство Active Набора данных в true. При этом State переводится в состояние DsBrowse.

Метод Edit Переводит набор данных в состояние DsEdit.

Методы Insert И InsertRecord Вставляют новую пустую запись в набор дан­ных, выполняют еще ряд операций, о которых вы можете посмотреть в справке C++Builder, и переводят State В состояние dslnsert.

Методы EditKey, SetRange, SetRangeStart, SetRangeEnd И ApplyRange, Свя­занные с поиском записи и с заданием допустимого диапазона изменения данных, переводят State В состояние DsSetKey.

Многие другие методы также устанавливают автоматически различные со­стояния набора данных. При программировании работы с базой данных надо сле­дить за тем, чтобы набор данных вовремя был переведен в соответствующее состоя­ние. Например, если вы стали редактировать запись, не переведя предварительно набор данных в состояние DsEdit Методом то будет сгенерировано исключение

EDatabaseError С сообщением «Dataset not in edit or insert mode» — «Набор дан­Ных не в режиме Edit Или Insert».

Style — свойство TBrush___________________________________________________

Определяет шаблон заполнения кисти Brush.

Класс TBrush

Определение

Enum TBrushStyle {bsSolid, bsClear, bsHorizontal, bsVertical,

BsFDiagonal, bsBDiagonal, bsCross, IssDiagCross};

__ property TBrushStyle Style

Описание

Свойство кисти Style Определяет шаблон, которым рисует кисть Brush, если для нее не задано значение свойства Bitmap.

Возможные значения Style:

Пример

Код

Imagel->Canvas->Brush->Color = clRed;

Imagel->Canvas->Brush->Style = bsDiagCross;

Imagel->Canyas->Ellipse(О, 0, Imagel->Width, Imagel->Height) ,-

Строит на канве компонента Imagel Эллипс, заполненный красной штриховкой

Крест на крест.

Style — свойство TFont

Стиль шрифта.

Класс TFont

Определение

Enum TFontStyle { fsBold, fsltalic, fsUnderline, fsStrikeOut }; typedef SettTFontStyle, fsBold, fsStrikeOut> TFontStyles;

__ property TFontStyles Style

Описание

примерыСвойство Style Задает стиль: характер начертания символов заданного шриф­та. Свойство представляет собой множество или пустое, или содержащее одно и бо­лее следующих значений:

Значение

Описание

FsBold

Полужирный

Fsltalic

Курсив

FsUnderline

Подчеркнутый

FsStrikeout

Перечеркнутый горизонтальной прямой

// Обычный Стиль

Labell->Font->Style = TFontStylesO;

/ / Полужирный

Labell->Font->Style = TFontStyles О<< fsBold;

// Полужирный Курсив

Labell->Font->Style = TFontStyles О<< fsBold << fsltalic; // Задание курсива без изменения других установок Labell->Font->Style = Labell->Font->Style << fsltalic;

Style — свойство ТРеп

Определяет стиль рисования линий пером.

Класс ТРеп Определение

Enum TPenStyle {psSolid, psDash, psDot, psDashDot,

PsDashDotDot, psClear, ρsInsideFrame};

_ property TPenStyle Style

Описание

Свойство пера Style Определяет вид линии. Это свойство может принимать следующие значения:

PsSolid

Сплошная линия

PsDash

Штриховая линия

PsDot

Пунктирная линия

PsDashDot

Штрих-пунктирная линия

PsDashDotDot

Линия, чередующая штрих и два пунктира

IpsClear

Отсутствие линии

PsInsideFrame

Сплошная линия, но при Width > 1 допускающая цвета, от­личные от палитры Windows

Примеры линий всех стилей даны на рис. 3.1

Рис. 3.1

Примеры линий различных стилей

Все стили со штрихами и пунктирами доступны только при Width = 1. В про­тивном случае линии этих стилей рисуются как сплошные.

Стиль PsInsideFrame — единственный, который допускает произвольные цве­та. Цвет линии при остальных стилях округляется до ближайшего из палитры

Windows.

TableName

Свойство, определяющее имя таблицы базы данных.

Класс TTable

Определение

__ property AnsiString TableName

Описание

Свойство TableName Определяет имя таблицы базы данных, которое предва­рительно должно быть задано свойством DatabaseName Набора данных. Во время проектирования TableName В компонентах наборов данных (Table. Query И др.) устанавливается в окне Инспектора Объектов выбором из выпадающего списка. Во время выполнения свойство TableName Может устанавливаться программно.

При задании или изменении TableName Компонент набора данных должен на­ходиться в неактивном состоянии (свойство Active = False). В противном случае будет сгенерировано исключение.

Пример

Следующий код завершает текущее соединение компонента Tablel, Задает но­вую базу данных и таблицу, беря значения из окон редактирования Editl И Edit2 И соединяет компонент с новой таблицей новой базы данных.

Tablel->Active = false;

Tablel->DatabaseName = Editl->Text;

Tablel->TableName = Edit2->Text;

Tablel->Active = true;

См. также примеры в описании свойства Active.

TabOrde r______________________________________________________

Определяет позицию компонента в последовательности табуляции.

Класс TWinControL

Определение

Typedef short TTabOrder;

__ property TTabOrder TabOrder

Описание

Под последовательностью табуляции понимается последовательность, в кото­рой переключается фокус между компонентами окна, когда пользователь последо­вательно нажимает клавишу табуляции Tab. Значение TabOrder, Равное нулю, озна­чает, что при первом появлении формы на экране в фокусе будет этот компонент.

Последовательность табуляции в каждом приложении надо продумывать, что­бы пользователю было легче работать и переходить от одного окна редактирования к другому, от одной кнопки к другой.

Первоначальная последовательность табуляции определяется просто той по­следовательностью, в которой размещались управляющие элементы на экране. Первому элементу присваивается значение TabOrder, Равное 0, второму 1 и т. д.

Если задать какому то управляющему элементу значение TabOrder, Равное -1, то этот элемент выпадает из последовательности табуляции и с помощью кла­виши Tab ему будет невозможно передать фокус.

Каждый управляющий элемент имеет уникальный номер TabOrder Внутри своего родительского компонента. Поэтому изменение значения TabOrder Како­го-то элемента на уже существующее у другого элемента значение приведет к тому, что значения TabOrder Всех последующих элементов автоматически изме­нятся, чтобы не допустить дублирования. Если задать элементу значение Tab- Order, Большее, чем число элементов в родительском компоненте, он просто станет последним в последовательности табуляции.

В среде проектирования C++Builder имеется специальная команда Edit | Tab Order, позволяющая в режиме диалога задать последовательность табуляции всех элементов.

Значение свойства TabOrder Играет роль только тогда, когда свойство компо­нента TabStop Установлено в True И компонент имеет родителя. Например, для формы свойство TabOrder Имеет смысл только в случае, если для формы задан ро­Дитель в виде другой формы.

TabStop________________________________________________________

Определяет возможность передать фокус на элемент нажатием клавиши табу­ляции.

Класс TWinControl

Определение

__ property ŋool TabStop

Описание

Свойство TabStop Разрешает или запрещает останавливать фокус на данном элементе при нажатии пользователем клавиши Tab. Если значение TabStop Равно True, То клавиша Tab будет передавать фокус на этот элемент в последовательности табуляции, определяемой значениями свойства элементов TabOrder. Если значе­ние TabStop Равно False, То элемент недостижим в последовательности табуляции независимо от значенияJTabOrder.

Для формы свойство TabStop Имеет смысл только в случае, если форма имеет родителя в виде другой формы.

Tag

Свойство, используемое пользователем по своему усмотрению.

Класс TComponent

Определение

__ property int Tag

Описание

Свойство Tag системой не используется. Его значение по умолчанию равно 0. Пользователь может определить и использовать Tag по своему усмотрению, поме­щая в него необходимую информацию. Например, можно в процессе проектирова­ния или программно в процессе выполнения задать некоторое значение Tag группе компонентов и затем оперировать с этой группой.

Пример использования свойства Tag см. в разделе «Components».

Text — свойство TComponent______________________________________

Текстовая строка, связанная с управляющим элементом.

Класс TComponent

Определение

__ property AnsiString Text,

Описание

Свойство Text Позволяет прочесть или задать строку, связанную с данным управляющим элементом. По умолчанию значение Text Равно имени компонен­та — его свойству Name. Применяется в основном в компонентах редактирования и в списках.

Text — свойство TField___________________________________________

См. раздел «DisplayText и Text».

TextFlags_______________________________________________________

Определяет способ вывода текста на канву.

Класс TCanvas

Определение

__ property int TextFlags

Описание

Свойство канвы TextFlags Определяет особенности вывода текста на канву ме­тодами TextOut и TextRect. Свойство TextFlags Может формироваться как комби­нация следующих констант:

Константа

Пояснение

I EtO CLIPpEd

Выводится только текст, помещающийся в указан­ной прямоугольной области. В методе TextRect этот флаг устанавливается автоматически. На ме­тод TextOut этот флаг не влияет.

ETOOPAQUE

Текст выводится с непрозрачным цветом фона.

ETO_RTLREADING

Строка текста выводится справа налево. Доступно только с версией Windows Mideast (для стран Вос­тока). I

Константа

Пояснение»

‘ ETO GLYPH INDEX

Текст является массивом кодов символов, который непосредственно передается GDI Windows. Приме­нимо только для шрифтов TrueType, но этот флаг можно применять и для других шрифтов, чтобы указать, что GDI должен обрабатывать текст на­прямую, без языковой обработки. Подробнее см. в документации по GDI Windows.

Etojgnorelanguage

Недокументированный пока флаг Microsoft.

JETO Numericslocal

Недокументированный пока флаг Microsoft.

IETO Numericslatin

Недокументированный пока флаг Microsoft.

Тор

Координата верхнего края компонента в пикселах.

Класс TControL

Определение

__ property int Top

Описание

Свойство Тор определяет координату верхнего края компонента в пикселах. Для компонентов за начало отсчета берется верхняя граница клиентской области родителя (например, панели, если данный компонент расположен на панели, или формы, если компонент расположен непосредственно на форме). Отсчет координа­ты ведется сверху вниз. Для формы координата Тор представляет собой вертикаль­ную координату экрана, отсчитываемую от его верхнего края.

Свойство Тор используется при перемещениях и изменениях размеров компо­Нентов (см. примеры в разделах BoundsRect» И «Components»).

TransparentColor И TransparentMode_______________________________

Определяет, какой цвет в битовой матрице будет прозрачным при ее рисовании.

Класс TCanvas

Определение

__ property TColor TransparentColor

Enum TTransparentMode {tmAuto, tmFixed);

__ property TransparentMode

Описание

Значение свойства канвы TransparentColor Имеет тип TColor И зависит от уста­новки свойства TransparentMode. Если TransparentMode Установлено в TmAuto, то TransparentColor Возвращает цвет пиксела левого нижнего угла изображения. Если вы задаете значение свойства TransparentColor, то TransparentMode Автоматически устанавливается в tmFixed. При этом новый цвет сохраняется вместе с объектом би­товой матрицы и может быть использован позднее. Если вы хотите отменить задан­ное значение TransparentColor, Установите TransparentMode в TmAuto, И тогда TransparentColor Опять будет указывать на цвет левого нижнего пиксела.

UpdateObject____________________________________________________

Определяет объект, используемый для обновления кэшируемых результатов «только для чтения».

Класс TBDEDataSet

Определение

__ property TDataSetUpdateObject* UpdateObject

Описание

Объект TDataSetUpdateObject, Определяемый свойством UpdateObject, Ис­пользуется для обновления результатов, возвращаемых Borland Database Engine (BDE) в режиме «только для чтения». BDE всегда пытается, если возможно, вернуть «живые» данные, которые можно редактировать. Но иногда это невозможно, если, например, делается запрос сразу к нескольким таблицам. В этих случаях требуется компонент UpdateSQL, Который может справляться с обновлением подобных набо­Ров данных. Этот объект и должен быть указан в свойстве UpdateObject.

UpdateRecordTypes

Определяет, какие записи должны быть видимы в наборе данных при кэширо­вании.

Класс TBDEDataSet

Определение

Enum DBTables____ 9 IrtModified, rtlnserted, rtDeleted,

RtUnmodified};

Typedef Set<DBTables________ 9, rtModified, rtUnmodified>

TUpdateRecordTypes;

__ property TUpdateRecordTypes UpdateRecordTypes

Описание

Свойство UpdateRecordTypes Определяет, какие записи должны быть видимы в наборе данных при кэшировании. Свойство представляет собой множество сле­дующих возможных значений:

RtModified

Видимы модифицированные записи

Rtlnserted

Видимы вставленные записи

RtDeleted

Видимы удаленные записи.

TtUnmodifIed

Видимы немодифицированные записи ■

По умолчанию UpdateRecordTypes = [rtModified, rtlnserted, rtUnmodified]. Если, например, добавить в UpdateRecordTypes Значение RtDeleted И удалить все прочие значения, то пользователь увидит все удаленные записи и может решать, следует ли их действительно удалять при занесении результатов в базу данных. Аналогично можно предоставить пользователю возможность видеть, например, только все вставленные или все отредактированные записи.

Определение

___ property bool UpdatesPencling

Описание

Свойство UpdatesPending Определяет, имеются ли в кэше обновленные запи­си, не отправленные в базу данных. Если UpdatesPending = true, Значит имеются отредактированные, удаленные или вставленные записи, причем эти изменения набора данных еще не перенесены в базу данных. В этом случае можно осущест­вить перенос исправлений в базу данных или спросить пользователя о необходимо­сти такого переноса.

Пример

См. пример в гл. 5, в разд. «AfterClose и BeforeClose».

Valid Chars_____________________________________________________

Определяет символы, которые могут использоваться при редактировании зна­чения поля.

Класс TField

Определение

Typedef Set<char, 0, 255> TFieldChars;

_ property TFieldChars ValidChars

Описание

Свойство ValidChars Задается, чтобы ограничить набор символов, используе­мых для редактирования значения поля. Значение ValidChars Используется мето­дом IsValidChar Для проверки допустимости вводимых пользователем символов. В отличие от свойства EditMask, определяющего допустимые символы для каждой позиции, свойство ValidChars Определяет символы, допустимые в любой позиции.

Значение ValidChars Устанавливается по умолчанию автоматически в зависи­мости от типа поля (см. значения по умолчанию в разд. «IsValidChar» в гл. 4). На­пример, для строк допускаются любые символы, для целых типов — только циф­ры. Но вы можете заменить или дополнить эту установку по умолчанию.

Примеры

Пусть вы хотите, чтобы пользователь мог занести в объект поля Fieldl Только цифры от 1 до 3 (может быть, это номер отдела или номер ответа на какой-то во­прос). Тогда задайте значение ValidChars Этого поля равным [‘1’..,3′]. Соответст­вующий оператор можно поместить, например, в обработчике события AfterOpen Набора данных:

FieldOValidChars = Fieldl->ValidChars. Clear() << ‘1’ << ‘2’ « ,3′;

Другой пример. Пусть вы имеете объект поля TablelFam, В значение которого пользователь должен занести фамилию. Тогда целесообразно запретить ввод в это поле цифр, знаков препинания и латинских символов. Для этого достаточно задать значение ValidChars, Равное [‘а’..’я’, ‘А’..’Я’, ‘ В этом множестве символы

Пробела и добавлены для возможности задания составных фамилий. Как и в предыдущем примере, задание этого значения ValidChars Можно осуществить в обработчике события AfterOpen.

И еще один пример. Пусть вы задали необходимые значения ValidChars И имеете в приложении окно редактирования Editl, в которое пользователь дол­жен вводить данные, передаваемые в дальнейшем в объект поля Fieldl. Тогда це­лесообразно запретить пользователю вводить в окно символы, не входящие в мно­жество допустимых для данного поля. Это можно сделать, написав следующий об­работчик события OnKeyPress Окна редактирования Editl:

Void_ fastcall TForml: :EditlKeyPress (TObject *Sender, char &Кеу)

(

If ( ! Fieldl->IsValidChar(Key))

Key = ‘∖0’;

}

В этом обработчике все недопустимые символы подменяются нулевым и не Вводятся в окно.

Value, NewValue, OldValue_______________________________________

Текущее, новое и прежнее значения поля.

Класс TField

Определения

___ property System::Variant Value

___ property System: :Variant NewValue

___ property System: !Variant OldValue // Только Для чтения

Описание

Свойства Value, NewValue И OldValue, А также свойство CurValue Определя­ют значение объекта поля. Свойство OldValue Соответствует тому начальному зна­чению поля, которое было до какого-либо редактирования и занесения новых зна­чений в буфер записи. Value — это текущее значение поля. NewValue — это зна­чение, которое задается полю в случае возникновения проблем при пересылке за­писи методом Post В базу данных.

После чтения записи из базы данных Value И OldValue Совпадают друг с дру­гом. В дальнейшем значение остается неизменным, а значение Value Мо­

Жет изменяться в процессе редактирования записи или программно.

При пересылке записи в базу данных значение NewValue Является пересылае­мым значением. Сначала оно совпадает с Value, Но при пересылке могут возник­нуть проблемы. В этом случае в клиентском наборе данных генерируется событие OnReconciIeError. На стороне сервера компонент-провайдер генерирует событие OnUudateError. В обработчике этого события можно сравнить NewValue — новое которое не удалось переслать, OldValue — прежнее значение до начала редактирования данного поля, и CurValue — текущее значение поля с учетом из­менений, внесенных другими пользователями в базу данных. Значение CurValue Может отличаться от ■ . если другой пользователь изменил значение поля

За время, которое прошло после чтения OldValue. В обработчиках этих событий можно задать новое значение NewValue, Которое бы ликвидировало возникшие проблемы. Значение NewValue Можно также задать отличающимся от Value В об­

Работчике события OnUpdateRecord.

Свойства NewValue И OldValue Можно использовать только при применении Компонента TClientDataSet Или при кэшировании.

Visible — свойство TControl________________________________________________

Определяет, видим или невидим компонент.

Класс TControl

Определение

__ property bool Visible

Описание

Свойство Visible Определяет видимость компонента во время выполнения. Если Visible Делается равным true, то компонент становится видимым; если Visible Делается равным False, То компонент становится невидимым, исчезает для пользователя. Если устанавливается в False Свойство Visible Компонента-контей­нера, то становятся невидимыми и все расположенные на нем дочерние компонен­ты, независимо от значения их свойств Visible. Если свойство Visible Ранее неви­димого компонента-контейнера устанавливается в True, То становятся видимыми и все его дочерние компоненты, у которых Visible = True.

Свойство Visible Позволяет проектировать на одном и том же месте формы не­сколько панелей, соответствующих различным режимам работы приложения, и в нужные моменты делать одну из них видимой, а остальные невидимыми, как в приведенном ниже примере.

Свойство Visible Может также активно использоваться для разделов меню. Очевидно, что обычно не все разделы меню имеют смысл при любых режимах ра­боты приложения. Ненужные разделы можно делать недоступными задавая значе­ния False Их свойствам Enabled. В этом случае они будут видны серыми и недос­тупными, но размер меню не изменится. А если их делать невидимыми, то они видны не будут, оставшиеся разделы меню сомкнутся и все будет выглядеть более компактно.

Прямое задание значений True И False Свойству Visible Можно заменить вызо­вами методов Show И Hide. Первый из них делает компонент видимым и устанав­ливает Visible В True. А второй делает компонент невидимым и устанавливает Visible В False.

Пример

Пусть в приложении в одном и том же месте формы друг на друге расположе­ны две панели: Panell И на Ней Panel2, содержащие какие-то управляющие ком­поненты для разных режимов работы. Рапе12 Расположена на Panell, Которая яв­ляется, таким образом, ее родителем. В обработчик события формы OnCreate Мож­но вставить операторы:

Panel2->Visible = false;

Panell->Visible = true;

Panel2->Parent = Forml;

Panel2->BoundsRect = Panell-S-BoundsRect;

Первый два из них делают панель Рапе12 Невидимой, a Panell — видимой. Впрочем можно было бы обойтись и без этих операторов, если задать в процессе проектирования значения Visible, Равными true для Panell И False Для Рапе12. Третий оператор делает родительским компонентом панели Рапе12 Форму Forml. А четвертый оператор задает панели Рапе12 то же местоположение и размеры, ко­торые имеет панель Panell. Последнее необходимо, поскольку при проектирова­нии ее координаты соответствовали координатному пространству контейнера — клиентской области панели Panell. А теперь ее родитель сменился на форму, и надо ее расположить в том же месте формы, в котором расположена Panell.

Приведенный код можно было бы сократить, если в процессе проектирования размещать панель PaneI2 Не на панели Panell, А в каком-то другом месте непосред­ственно на форме, и задать значения Visible, Равными True Для Panell И False Для Рапе12. Тогда в обработчике события формы OnCreate Достаточно одного оператора:

Panel2->BoundsRect = Panell-S-BoundsRect; изменяющего положение Panel2.

Аналогичный оператор может быть также реализован методом SetBounds:

Panel2->SetBounds(Panell-s-Left, Panell->Top,

Panell-S-Width, Panell->Height) ;

В результате работы одного из приведенных операторов в момент создания формы на ней будет видна панель Panell. В момент, когда ее надо заменить на PaneI2, Можно выполнить операторы:

Panell->Visible = false;

Panel2-s∙Visible = true;

Делающие невидимой первую и видимой вторую панель. Когда надо вернуть на эк­ран изображение Panell, Можно выполнить операторы:

Panel2->Visible = false;

Panell->Visible = true;

Другой способ решения той же задачи приведен в гл. 4, в разд. «BringToFronto.

Visible — свойство TField

Определяет видимость поля в таблицах данных.

Класс TFieLd

Определение

__ property bool Visible

Описание

Свойство Visible определяет видимость поля в таблицах данных DBGrid. Если Visible = false, То соответствующее поле в таблице не видно. Свойство Visible Иг­норируется, если в DBGrid Явно задано значение Columns для данного поля, или Если для отображения используется компонент, отличный от DBGrid.

Width__________________________________________________________

Определяет горизонтальный размер компонента или формы в пикселах.

Класс TCOntrol

Определение

__ property int Width

Описание

Свойство Width Определяет горизонтальный размер компонента или формы в пикселах. Используется для изменения ширины компонента при изменениях размеров окна приложения. На компоненты-таблицы во время выполнения изме­Нение Width Не действует. См. разд. «Client Width» и «ClientRect».

WindowText_____________________________________________________

Содержит строку текста, связанного с компонентом.

Класс TCOntrol

Определение

__ property char* WindowText

Описание

Свойство WindowText Используется, чтобы связать с компонентом некоторую строку текста, которая может заменяться во время выполнения. По умолчанию WindowText — та же самая строка, которая записана в свойстве Text. Однако в классах, производных от TControl. Это может быть изменено. Для окон редакти­рования эта строка соответствует отображаемому в компоненте тексту. Для выпа­дающих списков это текст в окошке редактирования. Для кнопок это имя кнопки. Для остальных компонентов это строка заголовка окна.

XMLData

См. разд. «Data, XMLData — свойства TcustomClientDataSeU

‘∙

*

Глава 4

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *