Desempolvando mi cajón me he encontrado esta que alguna vez hice:
Código Delphi
[-]
function IsRecordLocked(Table: TTable): Boolean;
var
Locked : BOOL;
hCur : hDBICur;
dbiRes : DBIResult;
begin
Table.UpdateCursorPos;
Check(dbiIsRecordLocked(Table.Handle, Locked));
Result := Locked;
if not Result then
begin
Check(dbiCloneCursor(Table.Handle, false, false, hCur));
try
dbiRes := dbiGetRecord(hCur, dbiWRITELOCK, nil, nil);
if (dbiRes <> DBIERR_NONE) then
begin
if (HiByte(dbiRes) = ERRCAT_LOCKCONFLICT) then
Result := true
else
Check(dbiRes);
end
else
Check(dbiRelRecordLock(hCur, False));
finally
Check(dbiCloseCursor(hCur));
end;
end;
end;
// Saludos