RxFPC: add controls for lazreport

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4118 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2015-05-07 12:30:59 +00:00
parent 98916ce6c7
commit a491df97d6
8 changed files with 706 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,2 @@
rm lrrxdbdialogcontrols_img.inc
/usr/local/share/lazarus/tools/lazres lrrxdbdialogcontrols_img.inc TlrRxDBLookupComboBox.bmp TlrRxDateEdit.bmp

View File

@ -0,0 +1,435 @@
unit lrRxControls;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Controls, LR_Class, LRDialogControls, Graphics, LResources,
rxlookup, DB;
type
{ TlrRxDBLookupComboBox }
TlrRxDBLookupComboBox = class(TlrVisualControl)
private
FKeyField:string;
FListField:string;
FListSource:string;
function GetKeyField: string;
function GetListField: string;
function GetListSource: string;
function GetText: Variant;
procedure SetKeyField(AValue: string);
procedure SetListField(AValue: string);
procedure SetListSource(AValue: string);
procedure RxDBLookupComboBox1CloseUp(Sender: TObject; SearchResult:boolean);
procedure SetText(AValue: Variant);
protected
procedure PaintDesignControl; override;
function CreateControl:TControl;override;
procedure AfterLoad;override;
procedure AfterCreate;override;
public
constructor Create(AOwnerPage:TfrPage); override;
procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override;
procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override;
procedure Assign(Source: TPersistent); override;
published
property KeyField:string read GetKeyField write SetKeyField;
property ListField:string read GetListField write SetListField;
property ListSource:string read GetListSource write SetListSource;
property Color;
property Enabled;
property Text:Variant read GetText write SetText;
property OnClick;
end;
{ TlrRxDateEdit }
TlrRxDateEdit = class(TlrVisualControl)
private
function GetDate: TDateTime;
procedure SetDate(AValue: TDateTime);
protected
procedure PaintDesignControl; override;
function CreateControl:TControl;override;
public
constructor Create(AOwnerPage:TfrPage); override;
procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override;
procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override;
published
property Color;
property Enabled;
property Date:TDateTime read GetDate write SetDate;
property OnClick;
end;
implementation
uses DBPropEdits, LR_DBRel, LR_Utils, PropEdits, duallist, rxstrutils, tooledit,
LCLIntf, LCLType, Forms, LR_DBComponent;
procedure DoRegsiterControl(var cmpBMP:TBitmap; lrClass:TlrVisualControlClass);
begin
if not assigned(cmpBMP) then
begin
cmpBMP := TBitmap.Create;
cmpBMP.LoadFromLazarusResource(lrClass.ClassName);
frRegisterObject(lrClass, cmpBMP, lrClass.ClassName, nil, otlUIControl, nil);
end;
end;
var
lrBMP_LRDBLookupComboBox:TBitmap = nil;
lrBMP_LRRxDateEdit:TBitmap = nil;
procedure InitLRComp;
begin
DoRegsiterControl(lrBMP_LRDBLookupComboBox, TlrRxDBLookupComboBox);
DoRegsiterControl(lrBMP_LRRxDateEdit, TlrRxDateEdit);
end;
{ TlrRxDateEdit }
function TlrRxDateEdit.GetDate: TDateTime;
begin
Result:=TRxDateEdit(FControl).Date;
end;
procedure TlrRxDateEdit.SetDate(AValue: TDateTime);
begin
TRxDateEdit(FControl).Date:=AValue;
end;
procedure TlrRxDateEdit.PaintDesignControl;
var
AY, aH:integer;
R1:TRect;
begin
AY:=(DRect.Top + DRect.Bottom) div 2;
aH:=Canvas.TextHeight(Text) div 2;
Canvas.Frame3d(DRect, 1, bvLowered);
Canvas.Brush.Color := FControl.Color;
Canvas.FillRect(DRect);
Canvas.Font:=FControl.Font;
Canvas.TextRect(DRect, DRect.Left + 3, AY - aH, Text);
R1:=DRect;
R1.Left:=R1.Right - 16;
DrawFrameControl(Canvas.Handle, R1, DFC_BUTTON, DFCS_BUTTONPUSH);
end;
function TlrRxDateEdit.CreateControl: TControl;
begin
Result:=TRxDateEdit.Create(nil);
end;
constructor TlrRxDateEdit.Create(AOwnerPage: TfrPage);
begin
inherited Create(AOwnerPage);
BaseName := 'lrRxDateEdit';
AutoSize:=true;
end;
procedure TlrRxDateEdit.LoadFromXML(XML: TLrXMLConfig; const Path: String);
begin
inherited LoadFromXML(XML, Path);
end;
procedure TlrRxDateEdit.SaveToXML(XML: TLrXMLConfig; const Path: String);
begin
inherited SaveToXML(XML, Path);
end;
{ TlrRxDBLookupComboBox }
function TlrRxDBLookupComboBox.GetKeyField: string;
begin
Result:=FKeyField;
end;
function TlrRxDBLookupComboBox.GetListField: string;
begin
Result:=FListField;
end;
function TlrRxDBLookupComboBox.GetListSource: string;
begin
Result:=FListSource;
end;
function TlrRxDBLookupComboBox.GetText: Variant;
begin
Result:=TRxDBLookupCombo(FControl).KeyValue;
end;
procedure TlrRxDBLookupComboBox.SetKeyField(AValue: string);
begin
if FKeyField=AValue then Exit;
FKeyField:=AValue;
TRxDBLookupCombo(FControl).LookupField:=AValue;
end;
procedure TlrRxDBLookupComboBox.SetListField(AValue: string);
begin
if FListField=AValue then Exit;
FListField:=AValue;
TRxDBLookupCombo(FControl).LookupDisplay:=AValue;
end;
procedure TlrRxDBLookupComboBox.SetListSource(AValue: string);
var
D:TDataSet;
begin
if FListSource=AValue then Exit;
FListSource:=AValue;
D:=frFindComponent(nil, AValue) as TDataSet;
if Assigned(D) then
begin
TRxDBLookupCombo(FControl).LookupSource:=frGetDataSource(OwnerForm, D);
end;
end;
procedure TlrRxDBLookupComboBox.RxDBLookupComboBox1CloseUp(Sender: TObject;
SearchResult: boolean);
begin
{ if Assigned(TDBLookupComboBox(FControl).ListSource) and Assigned(TDBLookupComboBox(FControl).ListSource.DataSet) then
TDBLookupComboBox(FControl).ListSource.DataSet.Locate(TDBLookupComboBox(FControl).KeyField, TDBLookupComboBox(FControl).KeyValue, []);
}
end;
procedure TlrRxDBLookupComboBox.SetText(AValue: Variant);
begin
TRxDBLookupCombo(FControl).KeyValue:=AValue;
end;
procedure TlrRxDBLookupComboBox.PaintDesignControl;
var
AY, aH:integer;
R1:TRect;
begin
AY:=(DRect.Top + DRect.Bottom) div 2;
aH:=Canvas.TextHeight(Name) div 2;
Canvas.Frame3d(DRect, 1, bvLowered);
Canvas.Brush.Color := FControl.Color;
Canvas.FillRect(DRect);
Canvas.Font:=FControl.Font;
Canvas.TextRect(DRect, DRect.Left + 3, AY - aH, Name);
R1:=DRect;
R1.Left:=R1.Right - 16;
DrawFrameControl(Canvas.Handle, R1, DFC_BUTTON, DFCS_BUTTONPUSH);
end;
function TlrRxDBLookupComboBox.CreateControl: TControl;
begin
Result:=TRxDBLookupCombo.Create(nil);
TRxDBLookupCombo(Result).DisplayAllFields:=true;
TRxDBLookupCombo(Result).OnClosePopup:=@RxDBLookupComboBox1CloseUp;
end;
procedure TlrRxDBLookupComboBox.AfterLoad;
var
D:TDataSet;
i:integer;
begin
inherited AfterLoad;
D:=frFindComponent(nil, FListSource) as TDataSet;
if Assigned(D) then
begin
if Assigned(D.Owner) then
begin
try
TRxDBLookupCombo(FControl).LookupSource:=frGetDataSource(D.Owner, D);
finally
end;
end
else
begin
for i:=0 to OwnerPage.Objects.Count-1 do
begin
if TfrObject(OwnerPage.Objects[i]) is TLRDataSetControl then
begin
if TLRDataSetControl(OwnerPage.Objects[i]).DataSet = D then
begin
TRxDBLookupCombo(FControl).LookupSource:=TLRDataSetControl(OwnerPage.Objects[i]).lrDataSource;
break;
end;
end;
end;
end;
end;
end;
procedure TlrRxDBLookupComboBox.AfterCreate;
begin
inherited AfterCreate;
TRxDBLookupCombo(FControl).OnChange:=FControl.OnClick;
FControl.OnClick:=nil;
end;
constructor TlrRxDBLookupComboBox.Create(AOwnerPage: TfrPage);
begin
inherited Create(AOwnerPage);
BaseName:='lrRxDBLookupComboBox';
end;
procedure TlrRxDBLookupComboBox.LoadFromXML(XML: TLrXMLConfig;
const Path: String);
begin
inherited LoadFromXML(XML, Path);
KeyField:=XML.GetValue(Path+'KeyField/Value'{%H-}, '');
ListField:=XML.GetValue(Path+'ListField/Value'{%H-}, '');
FListSource:=XML.GetValue(Path+'ListSource/Value'{%H-}, '');
end;
procedure TlrRxDBLookupComboBox.SaveToXML(XML: TLrXMLConfig; const Path: String
);
begin
inherited SaveToXML(XML, Path);
XML.SetValue(Path+'KeyField/Value'{%H-}, FKeyField);
XML.SetValue(Path+'ListField/Value'{%H-}, FListField);
XML.SetValue(Path+'ListSource/Value'{%H-}, FListSource);
end;
procedure TlrRxDBLookupComboBox.Assign(Source: TPersistent);
begin
inherited Assign(Source);
if Source is TlrRxDBLookupComboBox then
begin
KeyField:=TlrRxDBLookupComboBox(Source).KeyField;
ListSource:=TlrRxDBLookupComboBox(Source).ListSource;
ListField:=TlrRxDBLookupComboBox(Source).ListField;
end;
end;
type
{ TlrDBLookupComboBoxListSourceProperty }
TlrDBLookupComboBoxListSourceProperty = class(TFieldProperty)
public
procedure FillValues(const Values: TStringList); override;
end;
{ TlrDBLookupComboBoxFiledsProperty }
TlrDBLookupComboBoxFiledsProperty = class(TFieldProperty)
public
procedure FillValues(const Values: TStringList); override;
end;
{ TlrLookupDisplayProperty }
TlrLookupDisplayProperty = class(TlrDBLookupComboBoxFiledsProperty)
public
function GetAttributes: TPropertyAttributes; override;
procedure Edit; override;
end;
{ TlrLookupDisplayProperty }
function TlrLookupDisplayProperty.GetAttributes: TPropertyAttributes;
begin
Result:=inherited GetAttributes + [paDialog]
end;
procedure TlrLookupDisplayProperty.Edit;
var
DualListDialog1: TDualListDialog;
Cmp1:TlrRxDBLookupComboBox;
procedure DoInitFill;
var
i,j:integer;
LookupDisplay:string;
begin
LookupDisplay:=Cmp1.ListField;
if LookupDisplay<>'' then
begin
StrToStrings(LookupDisplay, DualListDialog1.List2, ';');
for i:=DualListDialog1.List1.Count-1 downto 0 do
begin
j:=DualListDialog1.List2.IndexOf(DualListDialog1.List1[i]);
if j>=0 then
DualListDialog1.List1.Delete(i);
end;
end;
end;
function DoFillDone:string;
var
i:integer;
begin
for i:=0 to DualListDialog1.List2.Count-1 do
Result:=Result + DualListDialog1.List2[i]+';';
if Result<>'' then
Result:=Copy(Result, 1, Length(Result)-1);
end;
procedure DoSetCaptions;
begin
DualListDialog1.Label1Caption:='All fields';
DualListDialog1.Label2Caption:='Fields is LookupDisplay';
DualListDialog1.Title:='Fill fields in LookupDisplay property';
end;
begin
Cmp1:=nil;
if GetComponent(0) is TlrRxDBLookupComboBox then
Cmp1:=TlrRxDBLookupComboBox(GetComponent(0));
DualListDialog1:=TDualListDialog.Create(Application);
try
DoSetCaptions;
FillValues(DualListDialog1.List1 as TStringList);
DoInitFill;
if DualListDialog1.Execute then
begin
if Assigned(Cmp1) then
Cmp1.ListField:=DoFillDone
end;
finally
FreeAndNil(DualListDialog1);
end;
end;
procedure TlrDBLookupComboBoxFiledsProperty.FillValues(const Values: TStringList
);
var
L:TlrRxDBLookupComboBox;
begin
if (GetComponent(0) is TlrRxDBLookupComboBox) then
begin
L:=GetComponent(0) as TlrRxDBLookupComboBox;
if Assigned(TRxDBLookupCombo(L.Control).LookupSource) then
frGetFieldNames(TfrTDataSet(TRxDBLookupCombo(L.Control).LookupSource.DataSet) , Values);
end;
end;
procedure TlrDBLookupComboBoxListSourceProperty.FillValues(
const Values: TStringList);
begin
if (GetComponent(0) is TlrRxDBLookupComboBox) then
frGetComponents(nil, TDataSet, Values, nil);
end;
initialization
{$I lrrxdbdialogcontrols_img.inc}
InitLRComp;
RegisterPropertyEditor(TypeInfo(string), TlrRxDBLookupComboBox, 'ListSource', TlrDBLookupComboBoxListSourceProperty);
RegisterPropertyEditor(TypeInfo(string), TlrRxDBLookupComboBox, 'KeyField', TlrDBLookupComboBoxFiledsProperty);
RegisterPropertyEditor(TypeInfo(string), TlrRxDBLookupComboBox, 'ListField', TlrLookupDisplayProperty);
finalization
if Assigned(lrBMP_LRDBLookupComboBox) then
FreeAndNil(lrBMP_LRDBLookupComboBox);
end.

View File

@ -0,0 +1,166 @@
LazarusResources.Add('TlrRxDBLookupComboBox','BMP',[
'BMv'#6#0#0#0#0#0#0'6'#4#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#8#0#0#0#0#0'@'#2#0
+#0#196#14#0#0#196#14#0#0#0#1#0#0#0#1#0#0#0#0#0#0'3'#0#0#0'f'#0#0#0#153#0#0#0
+#204#0#0#0#255#0#0#0#0'3'#0#0'33'#0#0'f3'#0#0#153'3'#0#0#204'3'#0#0#255'3'#0
+#0#0'f'#0#0'3f'#0#0'ff'#0#0#153'f'#0#0#204'f'#0#0#255'f'#0#0#0#153#0#0'3'#153
+#0#0'f'#153#0#0#153#153#0#0#204#153#0#0#255#153#0#0#0#204#0#0'3'#204#0#0'f'
+#204#0#0#153#204#0#0#204#204#0#0#255#204#0#0#0#255#0#0'3'#255#0#0'f'#255#0#0
+#153#255#0#0#204#255#0#0#255#255#0#0#0#0'3'#0'3'#0'3'#0'f'#0'3'#0#153#0'3'#0
+#204#0'3'#0#255#0'3'#0#0'33'#0'333'#0'f33'#0#153'33'#0#204'33'#0#255'33'#0#0
+'f3'#0'3f3'#0'ff3'#0#153'f3'#0#204'f3'#0#255'f3'#0#0#153'3'#0'3'#153'3'#0'f'
+#153'3'#0#153#153'3'#0#204#153'3'#0#255#153'3'#0#0#204'3'#0'3'#204'3'#0'f'
+#204'3'#0#153#204'3'#0#204#204'3'#0#255#204'3'#0#0#255'3'#0'3'#255'3'#0'f'
+#255'3'#0#153#255'3'#0#204#255'3'#0#255#255'3'#0#0#0'f'#0'3'#0'f'#0'f'#0'f'#0
+#153#0'f'#0#204#0'f'#0#255#0'f'#0#0'3f'#0'33f'#0'f3f'#0#153'3f'#0#204'3f'#0
+#255'3f'#0#0'ff'#0'3ff'#0'fff'#0#153'ff'#0#204'ff'#0#255'ff'#0#0#153'f'#0'3'
+#153'f'#0'f'#153'f'#0#153#153'f'#0#204#153'f'#0#255#153'f'#0#0#204'f'#0'3'
+#204'f'#0'f'#204'f'#0#153#204'f'#0#204#204'f'#0#255#204'f'#0#0#255'f'#0'3'
+#255'f'#0'f'#255'f'#0#153#255'f'#0#204#255'f'#0#255#255'f'#0#0#0#153#0'3'#0
+#153#0'f'#0#153#0#153#0#153#0#204#0#153#0#255#0#153#0#0'3'#153#0'33'#153#0'f'
+'3'#153#0#153'3'#153#0#204'3'#153#0#255'3'#153#0#0'f'#153#0'3f'#153#0'ff'#153
+#0#153'f'#153#0#204'f'#153#0#255'f'#153#0#0#153#153#0'3'#153#153#0'f'#153#153
+#0#153#153#153#0#204#153#153#0#255#153#153#0#0#204#153#0'3'#204#153#0'f'#204
+#153#0#153#204#153#0#204#204#153#0#255#204#153#0#0#255#153#0'3'#255#153#0'f'
+#255#153#0#153#255#153#0#204#255#153#0#255#255#153#0#0#0#204#0'3'#0#204#0'f'
+#0#204#0#153#0#204#0#204#0#204#0#255#0#204#0#0'3'#204#0'33'#204#0'f3'#204#0
+#153'3'#204#0#204'3'#204#0#255'3'#204#0#0'f'#204#0'3f'#204#0'ff'#204#0#153'f'
+#204#0#204'f'#204#0#255'f'#204#0#0#153#204#0'3'#153#204#0'f'#153#204#0#153
+#153#204#0#204#153#204#0#255#153#204#0#0#204#204#0'3'#204#204#0'f'#204#204#0
+#153#204#204#0#204#204#204#0#255#204#204#0#0#255#204#0'3'#255#204#0'f'#255
+#204#0#153#255#204#0#204#255#204#0#255#255#204#0#0#0#255#0'3'#0#255#0'f'#0
+#255#0#153#0#255#0#204#0#255#0#255#0#255#0#0'3'#255#0'33'#255#0'f3'#255#0#153
+'3'#255#0#204'3'#255#0#255'3'#255#0#0'f'#255#0'3f'#255#0'ff'#255#0#153'f'#255
+#0#204'f'#255#0#255'f'#255#0#0#153#255#0'3'#153#255#0'f'#153#255#0#153#153
+#255#0#204#153#255#0#255#153#255#0#0#204#255#0'3'#204#255#0'f'#204#255#0#153
+#204#255#0#204#204#255#0#255#204#255#0#0#255#255#0'3'#255#255#0'f'#255#255#0
+#153#255#255#0#204#255#255#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#216#216#216#216
+#216#216#216#216#216#216#216#216#216#216#216#216#216#216#216#216#216#216#216
+#216#216#216#216#216#216#216#216#216#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#216#216
+#216#216#216#216#216#216#216#0#215#215#215#215#215#215#215#215#215#215#215
+#215#215#0#216#216#216#216#216#216#216#216#216#0#215#3#3#3#3#3#3#3#3#3#3#215
+#215#0#216#216#216#216#216#3#216#216#216#0#215#215#215#215#215#215#215#215
+#215#215#215#215#215#0#216#216#216#216#216#3#3#216#216#0#215#3#3#3#3#3#3#3#3
+#3#215#215#215#0#216#216#216#216#3#3#3#3#216#0#3#3#3#3#3#3#3#3#3#3#3#3#3#0
+#216#216#216#3#216#3#3#216#216#0#3#215#215#215#215#215#215#215#215#215#215#3
+#3#0#216#216#216#3#216#3#216#216#216#0#3#3#3#3#3#3#3#3#3#3#3#3#3#0#216#216
+#216#3#216#216#216#216#216#0#215#3#3#3#3#3#3#3#3#3#215#215#215#0#216#216#216
+#3#216#216#216#216#216#0#215#215#215#215#215#215#215#215#215#215#215#215#215
+#0#216#216#216#3#216#216#216#0#216#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#216#216#216
+#3#216#216#0'l'#0#172#215#215#215#215#215#215#215#215#215#0#172#172#172#0#216
+#216#216#3#216#216#0'l'#129#0#172#3#3#3#3#3#3#3#215#0#215#0#172#0#216#216#216
+#3#216#216#0'll'#129#0#172#215#215#215#215#215#215#215#0#215#215#172#0#216
+#216#216#3#216#0#129'lll'#180#0#172#0#0#0#0#0#0#0#0#0#0#0#216#216#216#216#216
+#0#172#172'l'#180#180#180#0#216#216#216#216#216#216#216#216#216#3#216#216#216
+#216#216#0#172#172#215#215#180#180#180#180#0#216#216#216#216#216#216#216#216
+#3#216#216#216#216#0#172#172#215#215#215#215#0#0#0#216#216#216#3#216#216#216
+#216#216#3#216#216#216#0#172#172#215#215#215#0#0#216#216#216#216#216#3#3#216
+#216#216#216#216#3#216#216#0#172#172#215#215#215#0#216#216#216#216#216#216#3
+#3#3#3#3#3#3#3#216#216#216#0#172#215#215#215#0#180#216#216#216#216#216#216
+#216#3#3#216#216#216#216#216#216#216#216#216#0#215#215#0#180#216#216#216#216
+#216#216#216#216#216#3#216#216#216#216#216#216#216#216#216#216#0#0#216#216
+#216#216#216#216#216#216#216#216#216#216#216#216#216#216#216#216#216#216
]);
LazarusResources.Add('TlrRxDateEdit','BMP',[
'BMz'#9#0#0#0#0#0#0'z'#0#0#0'l'#0#0#0#24#0#0#0#24#0#0#0#1#0' '#0#3#0#0#0#0#9#0
+#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255#0#0#255#0#0#0#0#0#0
+#255#1#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0
+#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0
+#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0
+#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0
+#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#128#128#128#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#1#0
+#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#128#128#128#255#192#192#192
+#255#192#192#192#255#192#192#192#255#192#192#192#255#192#192#192#255#192#192
+#192#255#192#192#192#255#192#192#192#255#192#192#192#255#192#192#192#255#192
+#192#192#255#192#192#192#255#192#192#192#255#192#192#192#255#192#192#192#255
+#0#0#0#255#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#128#128
+#128#255#192#192#192#255#192#192#192#255#0#0#0#255#128#0#0#255#0#0#0#255#128
+#0#0#255#0#0#0#255#128#0#0#255#128#0#0#255#0#0#0#255#128#0#0#255#0#0#0#255
+#128#0#0#255#0#0#0#255#192#192#192#255#0#0#0#255#0#0#1#0#0#0#1#0#0#0#1#0#0#0
+#1#0#0#0#1#0#0#0#1#0#0#0#1#0#128#128#128#255#192#192#192#255#192#192#192#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#192#192#192#255#0#0#0#255#0#0#1#0#0
+#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#128#128#128#255#192#192#192
+#255#192#192#192#255#255#255#255#255#255#255#255#255#0#0#128#255#0#0#128#255
+#0#0#128#255#255#255#255#255#0#0#128#255#0#0#128#255#0#0#128#255#192#192#192
+#255#255#255#255#255#255#255#255#255#192#192#192#255#0#0#0#255#0#0#1#0#0#0#1
+#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#128#128#128#255#192#192#192#255
+#192#192#192#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#128#255
+#255#255#255#255#255#255#255#255#192#192#192#255#255#255#255#255#192#192#192
+#255#0#0#128#255#255#255#255#255#255#255#255#255#192#192#192#255#0#0#0#255#0
+#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#128#128#128#255#192
+#192#192#255#192#192#192#255#255#255#255#255#255#255#255#255#255#255#255#255
+#0#0#128#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#0#0#128#255#255#255#255#255#255#255#255#255#192#192#192#255
+#0#0#0#255#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#128#128
+#128#255#192#192#192#255#192#192#192#255#255#255#255#255#255#255#255#255#255
+#255#255#255#0#0#128#255#255#255#255#255#255#255#255#255#0#0#128#255#0#0#128
+#255#0#0#128#255#192#192#192#255#255#255#255#255#255#255#255#255#192#192#192
+#255#0#0#0#255#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#128
+#128#128#255#192#192#192#255#192#192#192#255#255#255#255#255#255#255#255#255
+#0#0#128#255#0#0#128#255#255#255#255#255#255#255#255#255#0#0#128#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#192
+#192#192#255#0#0#0#255#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1
+#0#128#128#128#255#192#192#192#255#192#192#192#255#255#255#255#255#255#255
+#255#255#255#255#255#255#0#0#128#255#255#255#255#255#255#255#255#255#0#0#128
+#255#0#0#128#255#0#0#128#255#0#0#128#255#255#255#255#255#255#255#255#255#192
+#192#192#255#0#0#0#255#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1
+#0#128#128#128#255#192#192#192#255#192#192#192#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#192#192#192#255#0#0#0#255#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0
+#0#1#0#0#0#1#0#0#0#1#0#128#128#128#255#192#192#192#255#192#192#192#255#255
+#255#255#255#192#192#192#255#192#192#192#255#192#192#192#255#192#192#192#255
+#192#192#192#255#192#192#192#255#192#192#192#255#192#192#192#255#192#192#192
+#255#192#192#192#255#255#255#255#255#192#192#192#255#0#0#0#255#0#0#1#0#0#0#1
+#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#128#128#128#255#192#192#192#255
+#192#192#192#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#192#192#192#255
+#0#0#0#255#0#0#1#0#0#0#1#0#128#128#128#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#128#128#128#255#192#192#192#255#192#192#192
+#255#192#192#192#255#192#192#192#255#192#192#192#255#192#192#192#255#192#192
+#192#255#192#192#192#255#192#192#192#255#192#192#192#255#192#192#192#255#192
+#192#192#255#192#192#192#255#192#192#192#255#192#192#192#255#0#0#0#255#0#0#1
+#0#0#0#1#0#128#128#128#255#0#0#0#255#192#192#192#255#192#192#192#255#192#192
+#192#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
,#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#1#0#0#0#1#0#128#128#128#255#0#0#0#255#255
+#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#255#255#255#255#0#0#0
+#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#0#0#0#255#255
+#255#255#255#0#0#0#255#0#0#1#0#0#0#1#0#128#128#128#255#0#0#0#255#255#255#255
+#255#255#255#255#255#255#255#255#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#1#0#0#0#1#0#128
+#128#128#255#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#192#192#192#255#255#255#255#255#192#192#192
+#255#0#0#0#255#0#0#0#255#192#192#192#255#128#128#128#255#192#192#192#255#255
+#255#255#255#0#0#1#0#0#0#1#0#0#0#1#0#128#128#128#255#0#0#0#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#192
+#192#192#255#255#255#255#255#192#192#192#255#192#192#192#255#192#192#192#255
+#192#192#192#255#128#128#128#255#192#192#192#255#255#255#255#255#0#0#1#0#0#0
+#1#0#0#0#1#0#128#128#128#255#0#0#0#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#192#192#192#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#192#192#192#255#255#255#255#255#0#0#1#0#0#0#1#0#0#0#1#0#128#128#128
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#255#0#0#1#0#0#0#1#0
+#0#0#1#0#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0
+#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0
+#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0
+#1#0#0#0#1#0#0#0#1#0
]);

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<Package Version="4">
<Name Value="rx_LazReport"/>
<Type Value="RunAndDesignTime"/>
<CompilerOptions>
<Version Value="11"/>
<SearchPaths>
<IncludeFiles Value="."/>
<OtherUnitFiles Value="."/>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)/"/>
</SearchPaths>
</CompilerOptions>
<Files Count="3">
<Item1>
<Filename Value="rxlazreport.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="RxLazReport"/>
</Item1>
<Item2>
<Filename Value="lrrxcontrols.pas"/>
<UnitName Value="lrRxControls"/>
</Item2>
<Item3>
<Filename Value="lrrxdbdialogcontrols_img.inc"/>
<Type Value="Include"/>
</Item3>
</Files>
<RequiredPkgs Count="4">
<Item1>
<PackageName Value="lr_DialogDesign"/>
</Item1>
<Item2>
<PackageName Value="rxnew"/>
</Item2>
<Item3>
<PackageName Value="lazreport"/>
</Item3>
<Item4>
<PackageName Value="IDEIntf"/>
</Item4>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
</PublishOptions>
</Package>
</CONFIG>

View File

@ -0,0 +1,21 @@
{ This file was automatically created by Lazarus. Do not edit!
This source is only used to compile and install the package.
}
unit rx_LazReport;
interface
uses
RxLazReport, lrRxControls, LazarusPackageIntf;
implementation
procedure Register;
begin
RegisterUnit('RxLazReport', @RxLazReport.Register);
end;
initialization
RegisterPackage('rx_LazReport', @Register);
end.

View File

@ -0,0 +1,32 @@
unit RxLazReport;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs;
type
TRxLazReport = class(TComponent)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;
procedure Register;
implementation
uses lrRxControls;
procedure Register;
begin
RegisterComponents('LazReport',[TRxLazReport]);
end;
end.