Динамическое создание компонента TTable
Решение 1
Любой компонент можно создать и без (вне) формы или любого другого дочернего компонента. Для этого в методе Create надо указать параметр nil:
FSession := TSession.Create(nil);
FDatabase := TDatabase.Create(nil);
FSession.SessionName := 'DBSession'
FDatabase.Connected := False;
FDatabase.AliasName := Database;
FDatabase.DatabaseName := USER_DATABASE;
FDatabase.SessionName := FSession.SessionName;
FUserTBL := TTable.Create(nil);
FUserTBL.DatabaseName := FDatabase.DatabaseName;
FUserTBL.SessionName := FSession.SessionName;
FUserTBL.TableName := USERTBL;
FUserTBL.IndexName := USERSpIndex;
FUserSource := TDataSource.Create(nil);
FUserSource.DataSet := FUserTBL;
Решение 2
Можно использовать TTable, не размещая компонент на форме:
function TForm1.TotalPopulation: double;
var
Tbl: TTable;
begin
Result := 0.0;
Tbl := TTable.Create(nil);
try
Tbl.DatabaseName := 'DBDEMOS';
Tbl.TableName := 'COUNTRY';
Tbl.Open;
Tbl.First;
while not Tbl.EOF do begin
Result := Result + Tbl.FieldByName('Population').AsFloat;
Tbl.Next;
end;
Tbl.Close;
finally
Tbl.Free;
end;
end;