📄 jvbdelists.pas
字号:
begin
Result := dsGetRecordCount(Self);
end;
function TJvCustomBDEItems.Locate(const KeyFields: string;
const KeyValues: Variant; Options: TLocateOptions): Boolean;
begin
DoBeforeScroll;
Result := DataSetLocateThrough(Self, KeyFields, KeyValues, Options);
if Result then
begin
DataEvent(deDataSetChange, 0);
DoAfterScroll;
end;
end;
//=== { TJvDBListDataSet } ===================================================
function TJvDBListDataSet.Locate(const KeyFields: string;
const KeyValues: Variant; Options: TLocateOptions): Boolean;
begin
DoBeforeScroll;
Result := DataSetLocateThrough(Self, KeyFields, KeyValues, Options);
if Result then
begin
DataEvent(deDataSetChange, 0);
DoAfterScroll;
end;
end;
function TJvDBListDataSet.GetRecordCount: Integer;
begin
Result := dsGetRecordCount(Self);
end;
//=== { TJvCustomDatabaseItems } =============================================
procedure TJvCustomDatabaseItems.SetItemType(Value: TDBItemType);
begin
if ItemType <> Value then
begin
CheckInactive;
FItemType := Value;
DataEvent(dePropertyChange, 0);
end;
end;
procedure TJvCustomDatabaseItems.SetFileMask(const Value: string);
begin
if FileMask <> Value then
begin
if Active and (FItemType in [dtTables, dtFiles]) then
begin
DisableControls;
try
Close;
FFileMask := Value;
Open;
finally
EnableControls;
end;
end
else
FFileMask := Value;
DataEvent(dePropertyChange, 0);
end;
end;
procedure TJvCustomDatabaseItems.SetExtendedInfo(Value: Boolean);
begin
if FExtended <> Value then
begin
CheckInactive;
FExtended := Value;
DataEvent(dePropertyChange, 0);
end;
end;
procedure TJvCustomDatabaseItems.SetSystemItems(Value: Boolean);
begin
if FSystemItems <> Value then
begin
if Active and (FItemType in [dtTables, dtStoredProcs]) then
begin
DisableControls;
try
Close;
FSystemItems := Value;
Open;
finally
EnableControls;
end;
end
else
FSystemItems := Value;
DataEvent(dePropertyChange, 0);
end;
end;
function TJvCustomDatabaseItems.CreateHandle: HDBICur;
var
WildCard: PChar;
Pattern: array [0..DBIMAXTBLNAMELEN] of Char;
begin
WildCard := nil;
if FileMask <> '' then
WildCard := AnsiToNative(DBLocale, FileMask, Pattern, SizeOf(Pattern) - 1);
case FItemType of
dtTables:
Check(DbiOpenTableList(DBHandle, FExtended, FSystemItems, WildCard, Result));
dtStoredProcs:
if DataBase.IsSQLBased then
Check(DbiOpenSPList(DBHandle, FExtended, FSystemItems, nil, Result))
else
DatabaseError(RsELocalDatabase);
dtFiles:
Check(DbiOpenFileList(DBHandle, WildCard, Result));
dtFunctions:
if DataBase.IsSQLBased then
Check(DbiOpenFunctionList(DBHandle, DBIFUNCOpts(FExtended), @Result))
else
DatabaseError(RsELocalDatabase);
end;
end;
function TJvCustomDatabaseItems.GetItemName: string;
const
cObjListNameField = 'NAME';
cFileNameField = 'FILENAME';
cTabListExtField = 'EXTENSION';
var
Temp: string;
Field: TField;
begin
Result := '';
if not Active then
Exit;
if FItemType = dtFiles then
Field := FindField(cFileNameField)
else
Field := FindField(cObjListNameField);
if Field = nil then
Exit;
Result := Field.AsString;
if FItemType in [dtTables, dtFiles] then
begin
Field := FindField(cTabListExtField);
if Field = nil then
Exit;
Temp := Field.AsString;
if Temp <> '' then
begin
if Temp[1] <> '.' then
Temp := '.' + Temp;
Result := Result + Temp;
end;
end;
end;
procedure TJvCustomTableItems.SetItemType(Value: TTabItemType);
begin
if ItemType <> Value then
begin
CheckInactive;
FItemType := Value;
DataEvent(dePropertyChange, 0);
end;
end;
procedure TJvCustomTableItems.SetPhysTypes(Value: Boolean);
begin
if Value <> PhysTypes then
begin
if Active and (ItemType = dtFields) then
begin
DisableControls;
try
Close;
FPhysTypes := Value;
Open;
finally
EnableControls;
end;
end
else
FPhysTypes := Value;
DataEvent(dePropertyChange, 0);
end;
end;
procedure TJvCustomTableItems.SetTableName(const Value: TFileName);
begin
if Value <> FTableName then
begin
if Active then
begin
DisableControls;
try
Close;
FTableName := Value;
if FTableName <> '' then
Open;
finally
EnableControls;
end;
end
else
FTableName := Value;
DataEvent(dePropertyChange, 0);
end;
end;
function TJvCustomTableItems.CreateHandle: HDBICur;
var
STableName: PChar;
begin
if FTableName = '' then
_DBError(SNoTableName);
STableName := StrAlloc(Length(FTableName) + 1);
try
AnsiToNative(DBLocale, FTableName, STableName, Length(FTableName));
case FItemType of
dtFields:
while not CheckOpen(DbiOpenFieldList(DBHandle, STableName, nil,
FPhysTypes, Result)) do {Retry}
;
dtIndices:
while not CheckOpen(DbiOpenIndexList(DBHandle, STableName, nil,
Result)) do {Retry}
;
dtValChecks:
while not CheckOpen(DbiOpenVchkList(DBHandle, STableName, nil,
Result)) do {Retry}
;
dtRefInt:
while not CheckOpen(DbiOpenRintList(DBHandle, STableName, nil,
Result)) do {Retry}
;
dtSecurity:
while not CheckOpen(DbiOpenSecurityList(DBHandle, STableName, nil,
Result)) do {Retry}
;
dtFamily:
while not CheckOpen(DbiOpenFamilyList(DBHandle, STableName, nil,
Result)) do {Retry}
;
end;
finally
StrDispose(STableName);
end;
end;
//=== { TJvDatabaseDesc } ====================================================
constructor TJvDatabaseDesc.Create(const DatabaseName: string);
var
Buffer: PChar;
begin
inherited Create;
Buffer := StrPCopy(StrAlloc(Length(DatabaseName) + 1), DatabaseName);
try
Check(DbiGetDatabaseDesc(Buffer, @FDescription));
finally
StrDispose(Buffer);
end;
end;
constructor TJvDriverDesc.Create(const DriverType: string);
var
Buffer: PChar;
begin
inherited Create;
Buffer := StrPCopy(StrAlloc(Length(DriverType) + 1), DriverType);
try
Check(DbiGetDriverDesc(Buffer, FDescription));
finally
StrDispose(Buffer);
end;
end;
{$IFNDEF BCB}
//=== { TJvLangDrivList } ====================================================
constructor TJvLangDrivList.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FItemType := bdLangDrivers;
end;
//=== { TJvTableList } =======================================================
function TJvTableList.GetTableName: string;
begin
Result := ItemName;
end;
constructor TJvStoredProcList.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FItemType := dtStoredProcs;
end;
//=== { TJvIndexList } =======================================================
constructor TJvIndexList.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FItemType := dtIndices;
end;
{$ENDIF !BCB}
{$IFDEF UNITVERSIONING}
initialization
RegisterUnitVersion(HInstance, UnitVersioning);
finalization
UnregisterUnitVersion(HInstance);
{$ENDIF UNITVERSIONING}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -