Коллекция - в общем-то, специальный список с конкретизированными под данные нужды методами и свойствами. Вот TFieldDefs - коллекция для определений TFieldDef, рассмотренных в предыдущем шаге.
Это были свойства. А теперь методы.
Описание -
HIDESBASE void __fastcall Add(const AnsiString Name, TFieldType DataType, int Size, bool Required);
Эта функция является obsolete, то есть устаревшей. Она используется в VCL только для совместимости со старыми программами, написанными, скажем для Delphi 2 или, там Delphi 1. Это же не IE, который если новый появляется, то через год у 50% стоит, а через два - у 100%. Я, например, часто встречаю компоненты, написанные для Delphi 2 или Delphi 3. Естественно, C++Builder 4 попадается. Как это ни странно, иногда легче на BCPPB 5 заставить работать эти вещи, чем на Delphi 5.
Что-то я заговорился. Этакое лирическое отступление. Так вот. Параметр Name определяет имя для нового FieldDef, dataType тип поля, Size его размер, ну а Required - обязательно ли присвоение значения этому полю. Теперь буду короче говорить - обязательно ли поле или нет.
Пример использования - Table1->FieldDefs->Add("IntField",ftInteger,4,false);.
Описание -
TFieldDef* __fastcall AddFieldDef(void);
Этот метод возвращает указатель на новый объект типа TFieldDef, а потом уже можно с этим указателем делать все что угодно. Пример:
void TForm1::Example() { TFieldDef* def = Table1->FieldDefs->AddFieldDef(); def->DataType=ftString; //например def->Size=20; def->Required=true;//тоже например }
Описание -
HIDESBASE void __fastcall Update(void);
Обновляет записи в источнике данных (чаще всего таблице).
Описание -
HIDESBASE TFieldDef* __fastcall Find(const AnsiString Name);
Производит поиск по коллекции, сравнивая значения Name полей. Как видно из описания, возвращает указатель на объект найденный. Если он не найден, то... Как это ни странно, возвращается не NULL, а чтобы определить, найден или нет, нужно вызвать метод IndexOf класса TDefCollection (предок TFieldDefs). О нем.
Описание -
int __fastcall IndexOf(const AnsiString AName);
Возвращает индекс данного объекта TFieldDef. Если нет такого, возвращается -1.
Вот и все для этого шага.