diff --git a/components/lazreport/source/languages/lr_const.cs.po b/components/lazreport/source/languages/lr_const.cs.po
index aac9c46bc2..9e13f3249c 100644
--- a/components/lazreport/source/languages/lr_const.cs.po
+++ b/components/lazreport/source/languages/lr_const.cs.po
@@ -857,6 +857,10 @@ msgstr "Formulář FastReportu"
msgid "Force new page"
msgstr "Vynutit novou stránku"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr ""
diff --git a/components/lazreport/source/languages/lr_const.de.po b/components/lazreport/source/languages/lr_const.de.po
index b85a37036a..58c7d6898f 100644
--- a/components/lazreport/source/languages/lr_const.de.po
+++ b/components/lazreport/source/languages/lr_const.de.po
@@ -839,6 +839,10 @@ msgstr "FastReport-Formular"
msgid "Force new page"
msgstr "Neue Seite erzwingen"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr "Sie haben bereits eine TfrDesigner Komponente"
diff --git a/components/lazreport/source/languages/lr_const.es.po b/components/lazreport/source/languages/lr_const.es.po
index cccf61d6c5..311b95acd4 100644
--- a/components/lazreport/source/languages/lr_const.es.po
+++ b/components/lazreport/source/languages/lr_const.es.po
@@ -832,6 +832,10 @@ msgstr "Formulario FastReport"
msgid "Force new page"
msgstr "Forzar página nueva"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr ""
diff --git a/components/lazreport/source/languages/lr_const.fr.po b/components/lazreport/source/languages/lr_const.fr.po
index b3c9aa459a..8fe5faca5b 100644
--- a/components/lazreport/source/languages/lr_const.fr.po
+++ b/components/lazreport/source/languages/lr_const.fr.po
@@ -843,6 +843,10 @@ msgstr "Fiches FastReport"
msgid "Force new page"
msgstr "Forcer une nouvelle page"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr ""
diff --git a/components/lazreport/source/languages/lr_const.id.po b/components/lazreport/source/languages/lr_const.id.po
index a5dde11256..3478326a09 100644
--- a/components/lazreport/source/languages/lr_const.id.po
+++ b/components/lazreport/source/languages/lr_const.id.po
@@ -832,6 +832,10 @@ msgstr "Formulir FastReport"
msgid "Force new page"
msgstr "Paksa halaman baru"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr ""
diff --git a/components/lazreport/source/languages/lr_const.it.po b/components/lazreport/source/languages/lr_const.it.po
index d90a4fde4b..743b36af75 100644
--- a/components/lazreport/source/languages/lr_const.it.po
+++ b/components/lazreport/source/languages/lr_const.it.po
@@ -835,6 +835,10 @@ msgstr "Form FastReport"
msgid "Force new page"
msgstr "Forza nuova pagina"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr ""
diff --git a/components/lazreport/source/languages/lr_const.lt.po b/components/lazreport/source/languages/lr_const.lt.po
index abc3955665..89691ec1bc 100644
--- a/components/lazreport/source/languages/lr_const.lt.po
+++ b/components/lazreport/source/languages/lr_const.lt.po
@@ -834,6 +834,10 @@ msgstr "FastReport forma"
msgid "Force new page"
msgstr "Naujas lapas"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr ""
diff --git a/components/lazreport/source/languages/lr_const.pl.po b/components/lazreport/source/languages/lr_const.pl.po
index ef5dc8c173..ad8d162ec1 100644
--- a/components/lazreport/source/languages/lr_const.pl.po
+++ b/components/lazreport/source/languages/lr_const.pl.po
@@ -835,6 +835,10 @@ msgstr "Formularz FastReport"
msgid "Force new page"
msgstr "Wymuś nową stronę"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr ""
diff --git a/components/lazreport/source/languages/lr_const.po b/components/lazreport/source/languages/lr_const.po
index 87ae50b777..39dada4149 100644
--- a/components/lazreport/source/languages/lr_const.po
+++ b/components/lazreport/source/languages/lr_const.po
@@ -815,6 +815,10 @@ msgstr ""
msgid "Force new page"
msgstr ""
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr ""
diff --git a/components/lazreport/source/languages/lr_const.pt_BR.po b/components/lazreport/source/languages/lr_const.pt_BR.po
index 074612e5dd..a8514e5ea6 100644
--- a/components/lazreport/source/languages/lr_const.pt_BR.po
+++ b/components/lazreport/source/languages/lr_const.pt_BR.po
@@ -833,6 +833,10 @@ msgstr "Formulário FastReport"
msgid "Force new page"
msgstr "Forçar nova página"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr "Você já tem um componente TfrDesigner"
diff --git a/components/lazreport/source/languages/lr_const.ru.po b/components/lazreport/source/languages/lr_const.ru.po
index f349cd17e0..ab4fb458ec 100644
--- a/components/lazreport/source/languages/lr_const.ru.po
+++ b/components/lazreport/source/languages/lr_const.ru.po
@@ -831,6 +831,10 @@ msgstr "Форма FastReport"
msgid "Force new page"
msgstr "С новой страницы"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr "Экземпляр компонента TfrDesigner уже имеется"
diff --git a/components/lazreport/source/languages/lr_const.uk.po b/components/lazreport/source/languages/lr_const.uk.po
index 54342a88a8..0688d75d62 100644
--- a/components/lazreport/source/languages/lr_const.uk.po
+++ b/components/lazreport/source/languages/lr_const.uk.po
@@ -835,6 +835,10 @@ msgstr "Форма FastReport"
msgid "Force new page"
msgstr "З нової сторінки"
+#: lr_const.sfrdesignerdatainsp
+msgid "Data inspector"
+msgstr ""
+
#: lr_const.sfrdesignerexists
msgid "You already have one TfrDesigner component"
msgstr ""
diff --git a/components/lazreport/source/lazreport.lpk b/components/lazreport/source/lazreport.lpk
index ae109b3f12..da300fa327 100644
--- a/components/lazreport/source/lazreport.lpk
+++ b/components/lazreport/source/lazreport.lpk
@@ -30,7 +30,7 @@ Lazarus Port: Olivier Guilbaud, Jesus Reyes A.
See license.txt and license-lazreport.txt for details.
"/>
-
+
@@ -288,6 +288,14 @@ See license.txt and license-lazreport.txt for details.
+
+
+
+
+
+
+
+
diff --git a/components/lazreport/source/lazreport.pas b/components/lazreport/source/lazreport.pas
index 39bdd6f7da..1cf1cdc855 100644
--- a/components/lazreport/source/lazreport.pas
+++ b/components/lazreport/source/lazreport.pas
@@ -13,7 +13,7 @@ uses
LR_GEdit, LR_GrpEd, LR_IFlds, LR_Pars, LR_pgopt, LR_PGrid, LR_PrDlg,
LR_Prntr, LR_progr, lr_propedit, LR_Register, LR_RRect, LR_Shape, LR_Utils,
LR_Var, LR_Vared, LR_View, LR_Newrp, Barcode, LR_DBRel, LR_DBComponent,
- lr_hyphen, LR_Intrp, fr3tolrf, LazarusPackageIntf;
+ lr_hyphen, LR_Intrp, fr3tolrf, lr_design_ins_filed, LazarusPackageIntf;
implementation
diff --git a/components/lazreport/source/lr_const.pas b/components/lazreport/source/lr_const.pas
index 22c2c846b3..db9facec31 100644
--- a/components/lazreport/source/lr_const.pas
+++ b/components/lazreport/source/lr_const.pas
@@ -565,6 +565,7 @@ resourcestring
sFRDesignerForm_Line = 'Line style';
sFRDesignerForm_Modified = 'Modified';
sFRDesignerExists = 'You already have one TfrDesigner component';
+ sFRDesignerDataInsp = 'Data inspector';
//--- InspForm resources ------------------------------------------------------
sObjectInspector ='Object inspector';
diff --git a/components/lazreport/source/lr_desgn.lfm b/components/lazreport/source/lr_desgn.lfm
index 1c4fb27940..0231015cc0 100644
--- a/components/lazreport/source/lr_desgn.lfm
+++ b/components/lazreport/source/lr_desgn.lfm
@@ -5019,6 +5019,9 @@ inherited frDesignerForm: TfrDesignerForm
GroupIndex = 1
OnClick = Pan2Click
end
+ object MenuItem2: TMenuItem
+ Action = tlsDBFields
+ end
end
object MastMenu: TMenuItem
Caption = 'Tools'
@@ -5339,8 +5342,13 @@ inherited frDesignerForm: TfrDesignerForm
Caption = 'Before print script...'
OnExecute = FileBeforePrintScriptExecute
end
+ object tlsDBFields: TAction
+ Category = 'Tools'
+ Caption = 'Data inspector'
+ OnExecute = tlsDBFieldsExecute
+ end
end
- object ActionsImageList: TImageList[15]
+ object ActionsImageList: TImageList
left = 328
top = 156
Bitmap = {
diff --git a/components/lazreport/source/lr_desgn.pas b/components/lazreport/source/lr_desgn.pas
index 3101cb496d..4c0373ad14 100644
--- a/components/lazreport/source/lr_desgn.pas
+++ b/components/lazreport/source/lr_desgn.pas
@@ -244,6 +244,8 @@ type
TfrDesignerForm = class(TfrReportDesigner)
acDuplicate: TAction;
+ MenuItem2: TMenuItem;
+ tlsDBFields: TAction;
FileBeforePrintScript: TAction;
FileOpen: TAction;
FilePreview: TAction;
@@ -440,6 +442,10 @@ type
procedure DoClick(Sender: TObject);
procedure ClB1Click(Sender: TObject);
procedure GB1Click(Sender: TObject);
+ procedure ScrollBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
+ procedure ScrollBox1DragOver(Sender, Source: TObject; X, Y: Integer;
+ State: TDragState; var Accept: Boolean);
+ procedure tlsDBFieldsExecute(Sender: TObject);
procedure ZB1Click(Sender: TObject);
procedure ZB2Click(Sender: TObject);
procedure PgB1Click(Sender: TObject);
@@ -614,6 +620,7 @@ type
procedure ToggleFrames(View: TfrView; Data: PtrInt);
procedure DuplicateView(View: TfrView; Data: PtrInt);
procedure ResetDuplicateCount;
+ function lrDesignAcceptDrag(const Source: TObject): TControl;
protected
procedure SetModified(AValue: Boolean);override;
public
@@ -662,7 +669,7 @@ uses
LR_Pgopt, LR_GEdit, LR_Templ, LR_Newrp, LR_DsOpt, LR_Const,
LR_Prntr, LR_Hilit, LR_Flds, LR_Dopt, LR_Ev_ed, LR_BndEd, LR_VBnd,
LR_BTyp, LR_Utils, LR_GrpEd, LR_About, LR_IFlds, LR_DBRel,LR_DBSet,
- DB;
+ DB, lr_design_ins_filed;
type
THackView = class(TfrView)
@@ -2971,6 +2978,9 @@ begin
PageView.PopupMenu := Popup1;
PageView.ShowHint := True;
+ PageView.OnDragDrop:=@ScrollBox1DragDrop;
+ PageView.OnDragOver:=@ScrollBox1DragOver;
+
ColorSelector := TColorSelector.Create(Self);
ColorSelector.OnColorSelected := @ColorSelected;
ColorSelector.Hide;
@@ -4639,6 +4649,17 @@ begin
FreeThenNil(FDuplicateList);
end;
+function TfrDesignerForm.lrDesignAcceptDrag(const Source: TObject): TControl;
+begin
+ if Source is TControl then
+ Result:=Source as TControl
+ else
+ if Source is TDragControlObject then
+ Result:=(Source as TDragControlObject).Control
+ else
+ Result:=nil;
+end;
+
{$endif}
procedure TfrDesignerForm.SetModified(AValue: Boolean);
@@ -6117,6 +6138,89 @@ begin
ShowGrid := GB1.Down;
end;
+procedure TfrDesignerForm.ScrollBox1DragDrop(Sender, Source: TObject; X,
+ Y: Integer);
+var
+ Control :TControl;
+ t : TfrMemoView;
+ dx, dy:integer;
+begin
+ Control:=lrDesignAcceptDrag(Source);
+ if Assigned(lrFieldsList) and (Control = lrFieldsList.lbFieldsList) then
+ begin
+
+ Objects.Add(frCreateObject(gtMemo, '', Page));
+ t:=TfrMemoView(Objects.Last);
+ if Assigned(t) then
+ begin
+ t.MonitorFontChanges;
+ t.Memo.Text:='['+lrFieldsList.SelectedField+']';
+
+ t.CreateUniqueName;
+ t.Canvas:=Canvas;
+
+ GetDefaultSize(dx, dy);
+
+ t.x := X;
+ t.y := Y;
+ t.dx := DX;
+ t.dy := DY;
+
+ {$ifdef ppaint}
+ PageView.NPEraseSelection;
+ {$endif}
+ Unselect;
+
+ t.FrameWidth := LastFrameWidth;
+ t.FrameColor := LastFrameColor;
+ t.FillColor := LastFillColor;
+ t.Selected := True;
+
+ if t.Typ <> gtBand then
+ t.Frames:=LastFrames;
+
+ t.Font.Name := LastFontName;
+ t.Font.Size := LastFontSize;
+ t.Font.Color := LastFontColor;
+ t.Font.Style := frSetFontStyle(LastFontStyle);
+ t.Adjust := LastAdjust;
+
+ SelNum := 1;
+ PageView.NPRedrawViewCheckBand(t);
+
+ SelectionChanged;
+ AddUndoAction(acInsert);
+
+ if Page is TfrPageReport then
+ OB1.Down := True
+ else
+ OB7.Down := True
+
+ end;
+ end;
+end;
+
+procedure TfrDesignerForm.ScrollBox1DragOver(Sender, Source: TObject; X,
+ Y: Integer; State: TDragState; var Accept: Boolean);
+var
+ Control :TControl;
+begin
+ Accept:= false;
+ if Page is TfrPageDialog then Exit;
+ Control:=lrDesignAcceptDrag(Source);
+ if Assigned(lrFieldsList) then
+ Accept:= (Control = lrFieldsList.lbFieldsList);
+end;
+
+procedure TfrDesignerForm.tlsDBFieldsExecute(Sender: TObject);
+begin
+ if Assigned(lrFieldsList) then
+ FreeThenNil(lrFieldsList)
+ else
+ lrFieldsList:=TlrFieldsList.Create(Self);
+ tlsDBFields.Checked:=Assigned(lrFieldsList);
+end;
+
procedure TfrDesignerForm.GB2Click(Sender: TObject);
begin
GridAlign := GB2.Down;
diff --git a/components/lazreport/source/lr_utils.pas b/components/lazreport/source/lr_utils.pas
index 333bb59642..e311055954 100644
--- a/components/lazreport/source/lr_utils.pas
+++ b/components/lazreport/source/lr_utils.pas
@@ -68,6 +68,7 @@ function lrDateTimeToStr(ADate:TDateTime):string;
function lrStrToDateTime(AValue: string): TDateTime;
function lrExpandVariables(const S:string):string;
procedure lrNormalizeLocaleFloats(DisableLocale: boolean);
+function lrConfigFolderName(ACreatePath: boolean): string;
// utf8 tools
function UTF8Desc(S:string; var Desc: string): Integer;
@@ -81,7 +82,7 @@ function UTF8CountWords(const str:string; out WordCount,SpcCount,SpcSize:Integer
implementation
-uses LR_Class, LR_Const, LR_Pars;
+uses LR_Class, LR_Const, LR_Pars, FileUtil, LazUtilsStrConsts;
var
PreviousFormatSettings: TFormatSettings;
@@ -748,6 +749,14 @@ begin
DefaultFormatSettings := PreviousFormatSettings;
end;
+function lrConfigFolderName(ACreatePath: boolean): string;
+begin
+ Result:=AppendPathDelim(GetAppConfigDirUTF8(false, ACreatePath))+'LazReport';
+
+ if ACreatePath and not ForceDirectoriesUTF8(Result) then
+ raise EInOutError.Create(SysUtils.Format(lrsUnableToCreateConfigDirectoryS,[Result]));
+end;
+
function UTF8Desc(S: string; var Desc: string): Integer;
var
i,b: Integer;