Справочник по компонентам Delphi. Часть 3 - Обработчики событий TTable

ОГЛАВЛЕНИЕ

 

Обработчики событий TTable

Делятся на две большие группы: вызываемые до (Before) и после (After) методов Open, Insert, Edit, Post, Delete, Cancel и Close. Информацию об этих группах можно получить, используя справочную систему Delphi. Кроме этого сущест­вуют еще два обработчика:

 property OnCalcFields: TDataSetNotifyEvent ; TDataSetNotifyEvent = procedure (DataSet: TDataSet) of object;Используется для определения значений вычисляемых полей и вызывается при чтении записи из базы. При свойстве AutoCalcFields = True этот обработчик вызывается при изменении значений невычисляемых полей, если установлено состояние EdsEdit или Edslnsert. При выполнении процедуры набор данных должен находиться в состоянии CalcFields.
property OnNewRecord: TDataSetNotifyEvent;Реагирует на добавление в набор данных новой записи. Позволяет редактиро­вать новые записи без изменения свойства Modified,

Методы компонента

procedure Addlndex(const Name, Fields: String; Options: TIndexOptions); TIndexOptions = set of (ixPrimary, ixUnique, ixDescending, ixNonMaintained, ixCaseInsensitive);Создает новый индекс для компонента. Параметры: Name — название индекса, Fields — поля индекса, Options — опции типа TIndexOptions (см. примеч. 1).
procedure ApplyRange; Проводит фильтрацию записей таблицы. Подмножество отбора определяется методами SetRangeStart и SetRangeEnd или EditRangeStart и EditRangeEnd.
procedure Append; Предназначена для включения в таблицу новых записей. Метод позиционирует курсор в конец набора, переводит его в состояние Insert и открывает новую пустую запись.
procedure AppendRecord(const Values: array of const) ;Добавляет к таблице новую непустую запись, данные для полей определяются параметром Values. Порядок следования сохраняется. Если число элементов параметра меньше числа полей, то оставшиеся поля устанавливаются в NULL. Типы элементов пара­метра Values должны совпадать с типами полей.
function BatchMove(ASource: TDataSet; AMode: TBatchMode): Longint;Добавляет, удаляет, копирует или обновляет группы записей. Параметры: ASource задает источник записи, AMode — используемый режим. Режим определяется типом TBatchMode: batAppend, batUpdate, batAppendUpdate, batDelete, batCopy. Функция возвращает число обработанных записей.
procedure Cancel; Переводит набор данных в состояние dsBrowse и отменяет любые изменения для текущей записи.
procedure CancelRange; Отменяет фильтрацию записей таблицы, задаваемую функциями ApplyRange и SetRange.
procedure CheckBrowseMode; Производит проверку открытия набора данных и отсутствия предполагаемых изменений. Если набор данных закрыт, выводится соответствующее сообщение об ошибке. Если компонент находится в состоянии dsEdit, dslnsert или dsSetKey, то вызывается метод Post для передачи в базу данных любых накопленных изменений.
procedure ClearFields; Возвращает всем полям текущей записи исходные значения. Набор данных должен находиться в состоянии dsEdit.
 procedure Delete;Удаляет из таблицы текущую запись, устанавливая курсор на последующую.
procedure CreateTable;

Создает новую пустую таблицу. Перед вызовом метода необходимо установить необходимые значения свойств DatabaseName, TableName, TableType, FieldDefs и IndexDefs.

 procedure CursorPosChanged; Используется для передачи сообщения компоненту TDataSet об изменении положения курсора функциями API BDE. Эта процедура используется при определенном свойстве Handle.
procedure DeleteTable; Уничтожает таблицу, определяемую свойствами DatabaseName, TableName, TableType.
procedure DisableControls; Временно приостанавливает соединение набора данных со всеми связанными компонентами TDataSource. В результате прерывается связь с визуальными компонентами. Существует метод обратного действия — EnableControls.
procedure EditKey; Предназначена для корректировки содержимого буфера ключей поиска. Используется только для .поиска на многих полях после вызова метода SetKey. Для перемещения в найденное поле используется метод GotoKey. He очищает буфер ключей поиска после использования.
procedure EditRangeEnd;

Позволяет переопределить порядок отбора записей, установленный методом SetRangeEnd. Модифи­цируется набор ключей конца последовательности. Новый порядок может быть реализован методом ApplyRange. Для таблиц Paradox и dBase метод применим только для индексированных полей, а для баз SQL — для всех колонок, определенных свойством IndexFieldNames.

procedure EditRangeStart; Действует аналогично предыдущему методу, изменяя значение начального ключа.
procedure EmptyTable; Уничтожает все записи таблицы, которая определяется свойствами DatabaseName, TableName и TableType. Для открытой таблицы должно быть включено свойство Exclusive.
procedure EnableControls; Восстанавливает соединение со всеми компонентами TDataSource, связанными с данным компонентом и временно отключенными методом DisableControls.
function FieldByName(const FieldName: String): TField;Возвращает ссылку на экземпляр объекта TField и удобна для работы с конкретным полем. Ее использование не нарушает структуры таблицы, в отличие от применения свойства Fields. Параметром FieldName передается название поля.
function FindField(const FieldName: String): TField;Возвращает ссылку на экземпляр объекта TField, используя имя, передаваемое параметром PieldName. Не изменяет структуру таблицы. В случае отсутствия заданного поля возвращает nil.
function FindKey(const KeyValues: array of const): Boolean;Предназначен для поиска записи по индексу. Параметр KeyValues задает список полей индекса. Метод устанавливает набор данных в состояние SetKey. В случае успеха функция возвращает True и перемещает курсор на наиденную запись, в случае неудачи возвращается False.
procedure FindNearest(const KeyValues: array of const);Находит запись, индекс которой больше или равен заданному параметром KeyValues. Курсор перемещается на найденную запись. Для поиска могут использоваться только строковые поля. По умолчанию используются первичные индексы, задание необходимых значений свойств IndexFieldNames или IndexName позволяет проводить поиск по другим индексам. Для таблиц Paradox и dBase метод применим только к индексированным полям, а для баз SQL — ко всем полям, определенным свойством IndexFieldNames.
procedure First; Устанавливает курсор на первую запись текущего расположения записей набора данных. На результат влияет применение метода SetRangeStart.
procedure FreeBookmark(Bookmark: TBookmark) ; TBookmark = Pointer;Освобождает системные ресурсы, используемые методом GetBookmark. Параметр Bookmark задает идентификатор используемой закладки.
function GetBookmark: TBookmark;Устанавливает закладку на текущей записи, к ней можно вернуться в любой момент при помощи метода GotoBookmark. Возвращает указатель на экземпляр закладки типа TBookmark. Все установ­ленные закладки уничтожаются при закрытии табли­цы или изменении индексов.
procedure GetFieldNames(List TStrings) ;Записывает имена полей набора данных в параметр List.
 procedure GetIndexNames(List TStrings) ; Записывает все индексы набора данных в параметр List.
 procedure GotoBookmark(Bookmark: TBookmark) ; Позиционирует курсор на записи, которой соот­ветствует закладка, указатель на которую передается в параметре Bookmark.
procedure GotoCurrent(Table: TTable);Используется для совмещения курсоров двух экземпляров компонента, которые используют одну и ту же таблицу. Изменяется положение курсора того компонента, который задан параметром Table. Для выполнения метода необходима идентичность свойств DatabaseName и TableName обоих экземпляров компонента.
function GotoKey: Boolean; Перемещает курсор на запись, определяемую ключом. Возвращает True в случае успешного поиска. Используется совместно с методами SetKey или EditKey. Если для ключа используется несколько полей, то их число необходимо задать свойством KeyFieldCount.
procedure GotoNearest;  Используется для перехода к записи, чей индекс равен пли больше значения свойства IndexField. Поиск проводится с первой записи. Используется совместно с методами SetKey и EditKey.
procedure Insert; Переводит набор данных в состояние Insert и вставляет на месте курсора новую пустую запись. При наличии в таблице индексов метод размещает новую запись в соответствие с ними.
 procedure InsertRecord(const Values: array of const); Добавляет в набор данных новую запись, заполняя ее поля значениями, передаваемыми параметром Values. Число величин в параметре может быть меньше, чем полей в таблице, в этом случае недостающие значения будут интерпретироваться как пустые. Типы данных должны совпадать. При наличии в таблице индексов метод размещает новую запись в соответствие с ними.
procedure Last;  Перемещает курсор на последнюю запись текущего порядка расположения записей. На результат влияет использование метода SetRangeEnd.
procedure MoveBy(Distance: Integer) ;

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

 procedure Next;  Перемещает курсор на одну запись к концу таблицы.
procedure Open; Открывает набор данных, находящийся в состоянии Browse. Аналогичным действием обладает свойство Active = Тruе.
procedure Post; Производит передачу текущей записи в базу данных. Результат зависит от состояния набора данных (см. свойство State): в Edit запись модифицируется, в Insert запись вставляется или добавляется в конец таблицы, в SetKey измененные поля помещаются в буфер ключа поиска и для набора данных устанавливается состояние Browse. Метод вызывается автоматически при перемещениях по таблице при помощи методов First, Last, Next, Prior, MoveBy, если набор данных находится в состояниях Edit или Insert. Post вызывается также для методов Append, AppendRecord, Insert, InsertRecord, если есть данные, нуждающиеся в обновлении. Если метод не может записать данные в базу, то набор данных устанавливается в состояние Edit.
procedure Prior; Перемещает курсор на одну строку к началу таблицы.
procedure Refresh; Обновляет набор данных, читая информацию из базы данных. Применение метода может вызвать противоречие с текущим набором данных компонента, так как не все проведенные приложением изменения могут быть переданы в базу или другие пользователи могут изменить используемую таблицу.
procedure SetFields(const Values: array of const) ;Изменяет значения полей таблицы, используя массив данных, передаваемый параметром Values. Для успешного применения метода необходимо установить набор данных в состояние Edit. При значении Values = nil, поля устанавливаются в предопределенные значения.
procedure SetKey; Устанавливает для набора данных состояние SetKey (см. свойство State), которое позволяет осуществлять поиск записей по задаваемым в буфере ключей поиска значениям. Буфер представляет собой набор полей, связанных с табличными ключевыми полями. Метод отличается от процедуры EditKey тем, что уничтожает старое содержимое буфера.
procedure SetRange(const StartValues, EndValues: array of const);Объединяет методы SetRangeStart, SetRangeEnd, ApplyRange и используется для переупорядочивания данных. Параметр StartValues используется для определения начального индексного ключа, а массив EndValues для конечных ключей. В таблицах баз Paradox и dBase метод применим только для индексированных полей, а в SQL — для всех колонок, определенных свойством IndexFieldNames.
procedure SetRangeEnd; Задает набор ключей конца последовательности для последующей фильтрации записей таблицы. Метод очищает набор ранее определенных ключей. Резуль­тат используется методом ApplyRange. В таблицах баз Paradox и dBase метод применим только для индексированных полей, а в SQL — для всех колонок, определенных свойством IndexFieldNames.
procedure SetRangeStart;  Устанавливает курсор BDE в положение текущего курсора компонента. Задает набор ключей начала последовательности. В остальном аналогичен предыдущему методу.
procedure UpdateRecord; Автоматически вызывается после применения метода Post и сообщает всем связанным компонентам TDataSource о факте изменения исходной таблицы в базе данных для последующей передачи изменений визуальным компонентам отображения данных.