Delphi 3 и создание приложений баз данных

Определение текущего столбца во время выполнения программы и проверка правильности индекса


Компонент TDBGrid обладает рядом методов и свойств, которые позволяют:

а) обращаться к полю TField, ассоциированному с текущим столбцом TDBGrid;

б) проверять правильность обращения к тому или иному столбцу TDBGrid.

Свойство property SelectedField: TField; позволяет обратиться к полю, ассоциированному с текущим столбцом в TDBGrid. Поскольку свойство имеет тип TField, можно использовать все свойства и методы компонента TField.

Пример.

Пусть произведен двойной щелчок мышью по некоторой ячейке TDBGrid. Если текущее поле - Doljnost, его значение записывается в компонентEdit1 с помощью такого обработчика события OnDblClick:

procedure TForm!.DBGrid1DbiClick(Sender: TObject);

begin

IF DBGrid1.SelectedField.FieldName = 'Doljnost' THEN Editl.Text := DBGrid1.SelectedField.Text ELSE Editl.Text :=";

end;

Свойство property Selectedlndex: Integer; возвращает номер поля, ассоциированного с текущим столбцом в TDBGrid. Нумерация полей идет от 0. Если возвращено значение -1, никакое поле с данным столбцом не ассоциировано.

Пример,

приведенный выше для свойства SelectedField с использованием Selectedlndex, можно переписать так:

procedure TForm1.DBGrid1DbiClick(Sender: TObject);

begin

IF DBGrid1.Fields[DBGrid1.Selectedlndex].FieldName = 'Doljnost' THEN

Editl.Text := DBGrid1.SelectedField.Text ELSE Editl.Text := ";

end;

Метод function ValidFieldIndex(FieldIndex: Integer): Boolean; возвращает True, если значение Fieldlndex является правильным индексом столбца TDBGrid, и False - в противном случае. Индекс признается правильным, если в TDBGrid показывается информация из поля с индексом Fieldlndex и обращение TDBGrid.Fields[FieldIndex] не вызовет ошибки. Заметим, что в НД, ассоциированном с TDBGrid, поле с индексом Fieldlndex может существовать, а в самом компоненте TDBGrid - нет. В этом случае выдается False. Такая ситуация возможна, если для формирования столбцов TDBGrid использовался редактор столбцов.

Пример.

var IndexOfSomeField : Integer;

IF DBGrid1.ValidFieldIndex(IndexOfSomeField) THEN

Labell.Caption := DBGrid1.Fields[IndexOfSomeField].Text ELSE Labell.Caption := 'Неверный индекс поля';



Содержание раздела