Есть множество причин, для чего может понадобиться запрос на
получение структуры используемой программой таблицы. Одна из причин
- необходимость во время выполнения программы создавать
TField-компоненты, работающие с полями таблицы. Полученная
информация о структуре таблицы как раз и ложится в основу создания
TField-компонентов.
Приведенный ниже пример демонстрирует технологию полного
воспроизведения доступных полей в компоненте TTable или TQuery.
Программа извлекает информацию о доступных полях и отображает ее в
компоненте TListBox; эта информация необходима для динамического
построения потомков TField. В данном примере источником данных
служит компонент TTable, но той же цели может служить и TQuery
(TTable и TQuery для доступа к полям таблицы используют одно и то же
свойство Fields).
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
F: TFieldDef;
D: string;
begin
Table1.Active := True;
ListBox1.Items.Clear;
with Table1 do
begin
for i := 0 to FieldDefs.Count - 1 do
begin
F := FieldDefs.Items[i];
case F.DataType of
ftUnknown: D := 'Unknown';
ftString: D := 'String';
ftSmallint: D := 'SmallInt';
ftInteger: D := 'Integer';
ftWord: D := 'Word';
ftBoolean: D := 'Boolean';
ftFloat: D := 'Float';
ftCurrency: D := 'Currency';
ftBCD: D := 'BCD';
ftDate: D := 'Date';
ftTime: D := 'Time';
ftDateTime: D := 'DateTime';
ftBytes: D := 'Bytes';
ftVarBytes: D := '';
ftBlob: D := 'BLOB';
ftMemo: D := 'Memo';
ftGraphic: D := 'Graphic';
else
D := '';
end;
ListBox1.Items.Add(F.Name + ', ' + D);
end;
end;
Table1.Active := False;
end;
|
|