mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-10 06:22:49 +02:00

1. Fix AV on set frPrinGrid.Font property 2. Fix set Visible in script for dialog controls 3. Fix show frDataSet in object inspector after delete it from DialogPage 4. In Object Inspector sort compnent names in combobox 5. Fix string with '''' char git-svn-id: trunk@43162 -
142 lines
3.3 KiB
ObjectPascal
142 lines
3.3 KiB
ObjectPascal
|
|
{*****************************************}
|
|
{ }
|
|
{ FastReport v2.3 }
|
|
{ DB related stuff }
|
|
{ }
|
|
{ Copyright (c) 1998-99 by Tzyganenko A. }
|
|
{ }
|
|
{*****************************************}
|
|
|
|
unit LR_DBRel;
|
|
|
|
interface
|
|
|
|
{$I LR_Vers.inc}
|
|
|
|
uses
|
|
SysUtils, Classes, DB;
|
|
|
|
const
|
|
frEmptyBookmark = nil;
|
|
|
|
type
|
|
TfrBookmark = TBookmark;
|
|
|
|
TfrTDataSet =class(TDataSet);
|
|
|
|
TfrTField = class(TField);
|
|
|
|
TfrTBlobField = class(TBlobField);
|
|
|
|
function frIsBlob(Field: TfrTField): Boolean;
|
|
function frIsBookmarksEqual(DataSet: TfrTDataSet; b1, b2: TfrBookmark): Boolean;
|
|
procedure frGetFieldNames(DataSet: TfrTDataSet; List: TStrings);
|
|
function frGetBookmark(DataSet: TfrTDataSet): TfrBookmark;
|
|
procedure frFreeBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
|
|
procedure frGotoBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
|
|
function frGetDataSource(Owner: TComponent; d: TDataSet): TDataSource;
|
|
|
|
function lrGetFieldValue(F:TField):Variant;
|
|
|
|
const
|
|
TypeStringField = [ftString, ftMemo, ftFmtMemo, ftFixedChar, ftWideString,
|
|
ftFixedWideChar, ftWideMemo];
|
|
|
|
TypeNumericField = [ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
|
|
ftTimeStamp];
|
|
|
|
TypeIntegerField = [ftSmallint, ftInteger, ftWord, ftAutoInc, ftLargeint];
|
|
|
|
TypeBooleanField = [ftBoolean];
|
|
|
|
implementation
|
|
uses LR_Utils;
|
|
|
|
function frIsBlob(Field: TfrTField): Boolean;
|
|
begin
|
|
Result := (Field <> nil) and (Field.DataType in [ftBlob..ftTypedBinary]);
|
|
end;
|
|
|
|
procedure frGetFieldNames(DataSet: TfrTDataSet; List: TStrings);
|
|
begin
|
|
if not Assigned(DataSet) then exit;
|
|
if DataSet.FieldCount > 0 then
|
|
DataSet.GetFieldNames(List)
|
|
else
|
|
begin
|
|
{ DataSet.Open;
|
|
DataSet.GetFieldNames(List);
|
|
DataSet.Close;}
|
|
DataSet.FieldDefs.Update;
|
|
DataSet.FieldDefs.GetItemNames(List);
|
|
end;
|
|
end;
|
|
|
|
function frGetBookmark(DataSet: TfrTDataSet): TfrBookmark;
|
|
begin
|
|
Result := DataSet.GetBookmark;
|
|
end;
|
|
|
|
procedure frGotoBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
|
|
begin
|
|
DataSet.GotoBookmark(BookMark);
|
|
end;
|
|
|
|
function frGetDataSource(Owner: TComponent; d: TDataSet): TDataSource;
|
|
var
|
|
i: Integer;
|
|
sl: TStringList;
|
|
ds: TDataSource;
|
|
begin
|
|
sl := TStringList.Create;
|
|
Result := nil;
|
|
frGetComponents(Owner, TDataSource, sl, nil);
|
|
for i := 0 to sl.Count - 1 do
|
|
begin
|
|
ds := frFindComponent(Owner, sl[i]) as TDataSource;
|
|
if (ds <> nil) and (ds.DataSet = d) then
|
|
begin
|
|
Result := ds;
|
|
break;
|
|
end;
|
|
end;
|
|
sl.Free;
|
|
end;
|
|
|
|
function lrGetFieldValue(F: TField): Variant;
|
|
begin
|
|
if Assigned(F) then
|
|
begin
|
|
if F.IsNull then
|
|
begin
|
|
if F.DataType in TypeStringField then
|
|
Result:=''
|
|
else
|
|
if F.DataType in (TypeIntegerField + TypeNumericField) then
|
|
Result:=0
|
|
else
|
|
if F.DataType in TypeBooleanField then
|
|
Result:=false
|
|
else
|
|
Result:=null
|
|
end
|
|
else
|
|
Result:=F.Value;
|
|
end
|
|
else
|
|
Result:=null;
|
|
end;
|
|
|
|
procedure frFreeBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
|
|
begin
|
|
DataSet.FreeBookmark(BookMark);
|
|
end;
|
|
|
|
function frIsBookmarksEqual(DataSet: TfrTDataSet; b1, b2: TfrBookmark): Boolean;
|
|
begin
|
|
Result := DataSet.CompareBookmarks(b1, b2) = 0;
|
|
end;
|
|
|
|
end.
|