Упаковка таблиц Paradox и dBase
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Упаковка таблиц Paradox & dBase
Процедура упаковки таблиц Paradox & dBase. В процедуру передается TTable c любым состоянием свойства Active. Состояние Active после выполнения процедуры остается предыдущим. Процедура предусматривает отключение всех визуальных DbControls, с последующим их подключением. Зависимости: Bde, Db, DbTables Автор: Александр,
Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
, Кореновск
Copyright: Из исходного кода Database Workshop 4.12 (c)2002 Degisy Software Дата: 23 мая 2002 г. ***************************************************** }
procedure Bde_PackTable(DataSet: TDataSet);
var
hDb: hDBIDb;
Tbl: TTable;
Props: CURProps;
CrDesc: CRTblDesc;
Save: Boolean;
begin
if (DataSet is TTable) then
begin
Tbl := TTable(DataSet);
Save := Tbl.Active;
Tbl.Active := True;
try
Check(DbiGetCursorProps(Tbl.Handle, Props));
if (Props.szTableType = szPARADOX) then
begin
FillChar(CrDesc, SizeOf(CRTblDesc), 0);
StrCopy(CrDesc.szTblName, Props.szName);
StrCopy(CrDesc.szTblType, Props.szTableType);
CrDesc.bPack := True;
Check(DbiGetObjFromObj(hDBIObj(Tbl.Handle), objDATABASE, hDBIObj(hDb)));
Tbl.DisableControls;
Tbl.Active := False;
Check(DbiDoRestructure(hDb, 1, @CrDesc, nil, nil, nil, False));
end
else if (Props.szTableType = szDBASE) then
begin
Tbl.Active := True;
Check(DbiPackTable(Tbl.DBHandle, Tbl.Handle, nil, szDBASE, True));
end;
finally
Tbl.Active := Save;
Tbl.EnableControls;
end;
end;
end;
|
Пример использования:
Bde_PackTable(Table1); |