LazReport, Implemented the possibility of navigation on the report, similar to the html page. And sample, Patch from Aleksey Lagunov

git-svn-id: trunk@40752 -
This commit is contained in:
jesus 2013-04-08 19:02:28 +00:00
parent 4470a5e9f0
commit b6c62107a1
10 changed files with 1418 additions and 129 deletions

6
.gitattributes vendored
View File

@ -1868,6 +1868,12 @@ components/lazreport/samples/enduser_reports/sql_demo/sql_demo.lpr svneol=native
components/lazreport/samples/enduser_reports/sql_demo/unit1.lfm svneol=native#text/plain
components/lazreport/samples/enduser_reports/sql_demo/unit1.pas svneol=native#text/plain
components/lazreport/samples/index.txt svneol=native#text/plain
components/lazreport/samples/report_url/report_url.lpi svneol=native#text/plain
components/lazreport/samples/report_url/report_url.lpr svneol=native#text/pascal
components/lazreport/samples/report_url/report_url.lps svneol=native#text/xml
components/lazreport/samples/report_url/unit1.lfm svneol=native#text/plain
components/lazreport/samples/report_url/unit1.pas svneol=native#text/pascal
components/lazreport/samples/report_url/url_demo.lrf svneol=LF#text/xml eol=lf
components/lazreport/samples/stringgrid/project1.lpi svneol=native#text/plain
components/lazreport/samples/stringgrid/project1.lpr svneol=native#text/pascal
components/lazreport/samples/stringgrid/sample.lrf svneol=LF#text/xml eol=lf

View File

@ -0,0 +1,92 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<General>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="report_url"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<Icon Value="0"/>
</General>
<i18n>
<EnableI18N LFM="False"/>
</i18n>
<VersionInfo>
<StringTable ProductVersion=""/>
</VersionInfo>
<BuildModes Count="1">
<Item1 Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
</local>
</RunParams>
<RequiredPackages Count="2">
<Item1>
<PackageName Value="lazreport"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="report_url.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="report_url"/>
</Unit0>
<Unit1>
<Filename Value="unit1.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<Target>
<Filename Value="report_url"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
<Other>
<CompilerMessages>
<MsgFileName Value=""/>
</CompilerMessages>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,21 @@
program report_url;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Unit1
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

View File

@ -0,0 +1,117 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectSession>
<Version Value="9"/>
<BuildModes Active="Default"/>
<Units Count="4">
<Unit0>
<Filename Value="report_url.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="report_url"/>
<UsageCount Value="20"/>
</Unit0>
<Unit1>
<Filename Value="unit1.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="0"/>
<WindowIndex Value="0"/>
<TopLine Value="24"/>
<CursorPos X="6" Y="54"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit1>
<Unit2>
<Filename Value="../../../lazutils/fileutil.pas"/>
<UnitName Value="FileUtil"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/>
<TopLine Value="44"/>
<CursorPos X="4" Y="84"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="../../source/lr_class.pas"/>
<UnitName Value="LR_Class"/>
<EditorIndex Value="1"/>
<WindowIndex Value="0"/>
<TopLine Value="70"/>
<CursorPos X="57" Y="106"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit3>
</Units>
<General>
<ActiveWindowIndexAtStart Value="0"/>
</General>
<JumpHistory Count="15" HistoryIndex="14">
<Position1>
<Filename Value="unit1.pas"/>
<Caret Line="15" Column="39" TopLine="1"/>
</Position1>
<Position2>
<Filename Value="unit1.pas"/>
<Caret Line="19" Column="39" TopLine="1"/>
</Position2>
<Position3>
<Filename Value="unit1.pas"/>
<Caret Line="21" Column="39" TopLine="1"/>
</Position3>
<Position4>
<Filename Value="unit1.pas"/>
<Caret Line="22" Column="39" TopLine="1"/>
</Position4>
<Position5>
<Filename Value="unit1.pas"/>
<Caret Line="24" Column="39" TopLine="1"/>
</Position5>
<Position6>
<Filename Value="unit1.pas"/>
<Caret Line="41" Column="73" TopLine="16"/>
</Position6>
<Position7>
<Filename Value="unit1.pas"/>
<Caret Line="51" Column="24" TopLine="32"/>
</Position7>
<Position8>
<Filename Value="unit1.pas"/>
<Caret Line="62" Column="26" TopLine="60"/>
</Position8>
<Position9>
<Filename Value="unit1.pas"/>
<Caret Line="54" Column="24" TopLine="51"/>
</Position9>
<Position10>
<Filename Value="unit1.pas"/>
<Caret Line="60" Column="48" TopLine="45"/>
</Position10>
<Position11>
<Filename Value="unit1.pas"/>
<Caret Line="23" Column="60" TopLine="2"/>
</Position11>
<Position12>
<Filename Value="unit1.pas"/>
<Caret Line="56" Column="1" TopLine="33"/>
</Position12>
<Position13>
<Filename Value="unit1.pas"/>
<Caret Line="55" Column="1" TopLine="51"/>
</Position13>
<Position14>
<Filename Value="unit1.pas"/>
<Caret Line="53" Column="1" TopLine="24"/>
</Position14>
<Position15>
<Filename Value="unit1.pas"/>
<Caret Line="54" Column="5" TopLine="24"/>
</Position15>
</JumpHistory>
</ProjectSession>
<EditorMacros Count="0"/>
</CONFIG>

View File

@ -0,0 +1,53 @@
object Form1: TForm1
Left = 936
Height = 240
Top = 324
Width = 320
Caption = 'Form1'
ClientHeight = 240
ClientWidth = 320
OnCreate = FormCreate
LCLVersion = '1.1'
object Button1: TButton
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
Left = 118
Height = 27
Top = 96
Width = 85
AutoSize = True
Caption = 'Show Demo'
OnClick = Button1Click
TabOrder = 0
end
object Button2: TButton
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
Left = 123
Height = 27
Top = 136
Width = 74
AutoSize = True
Caption = 'Edit Demo'
OnClick = Button2Click
TabOrder = 1
end
object frReport1: TfrReport
DefaultCopies = 0
InitialZoom = pzDefault
Options = []
PreviewButtons = [pbZoom, pbLoad, pbSave, pbPrint, pbFind, pbHelp, pbExit]
DataType = dtDataSet
OnObjectClick = frReport1ObjectClick
OnMouseOverObject = frReport1MouseOverObject
left = 24
top = 17
ReportForm = {
1A000000
}
end
object frDesigner1: TfrDesigner
left = 72
top = 17
end
end

View File

@ -0,0 +1,74 @@
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LR_Class, LR_Desgn, Forms, Controls, Graphics,
Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
frDesigner1: TfrDesigner;
frReport1: TfrReport;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure frReport1MouseOverObject(View: TfrView; var ACursor: TCursor);
procedure frReport1ObjectClick(View: TfrView);
private
FRepFileName:string;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
uses LazUTF8;
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
FRepFileName:=AppendPathDelim(ExtractFileDir(ParamStrUTF8(0))) + 'url_demo.lrf';
if FileExistsUTF8(FRepFileName) then
frReport1.LoadFromFile(FRepFileName)
else
frReport1.FileName:=FRepFileName;
end;
procedure TForm1.frReport1MouseOverObject(View: TfrView; var ACursor: TCursor);
begin
if Pos('url', UTF8LowerCase(View.Tag))>0 then
ACursor:=crHandPoint;
end;
procedure TForm1.frReport1ObjectClick(View: TfrView);
begin
if Pos('url_ext', UTF8LowerCase(View.Tag))>0 then
ShowMessage('Selected adres: '+View.URLInfo);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
frReport1.ShowReport;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
frReport1.DesignReport;
end;
end.

View File

@ -0,0 +1,891 @@
<?xml version="1.0" encoding="utf-8"?>
<CONFIG>
<LazReport>
<Version Value="26"/>
<Title Value=""/>
<Subject Value=""/>
<KeyWords Value=""/>
<Comments Value=""/>
<ReportCreateDate Value="1899-12-30 00:00:00"/>
<ReportLastChange Value="2013-04-08 16:32:04"/>
<ReportVersionBuild Value=""/>
<ReportVersionMajor Value=""/>
<ReportVersionMinor Value=""/>
<ReportVersionRelease Value=""/>
<ReportAutor Value=""/>
<Pages>
<PrintToDefault Value="False"/>
<DoublePass Value="False"/>
<SelectedPrinter Value="X264dn"/>
<PageCount Value="4"/>
<Page1>
<Name Value="Page1"/>
<ClassName Value="TfrPageReport"/>
<Visible Value="True"/>
<Width Value="595"/>
<Height Value="842"/>
<Script Value=""/>
<PgSize Value="9"/>
<Margins>
<left Value="36"/>
<Top Value="36"/>
<Right Value="36"/>
<Bottom Value="36"/>
</Margins>
<Orientation Value="poPortrait"/>
<UseMargins Value="True"/>
<PrintToPrevPage Value="False"/>
<ColCount Value="1"/>
<ColGap Value="0"/>
<LayoutOrder Value="loColumns"/>
<ObjectCount Value="14"/>
<Object1>
<Name Value="ReportTitle1"/>
<ClassName Value="TfrBandView"/>
<Visible Value="True"/>
<Typ Value="gtBand"/>
<StreamMode Value="0"/>
<Size>
<Left Value="0"/>
<Top Value="36"/>
<Width Value="752"/>
<Height Value="28"/>
</Size>
<Flags Value="48"/>
<Data>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<BandType Value="btReportTitle"/>
<Condition Value=""/>
<DatasetStr Value=""/>
</Object1>
<Object2>
<Name Value="MasterData1"/>
<ClassName Value="TfrBandView"/>
<Visible Value="True"/>
<Typ Value="gtBand"/>
<StreamMode Value="0"/>
<Size>
<Left Value="0"/>
<Top Value="76"/>
<Width Value="752"/>
<Height Value="80"/>
</Size>
<Flags Value="48"/>
<Data>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<BandType Value="btMasterData"/>
<Condition Value=""/>
<DatasetStr Value="1"/>
</Object2>
<Object3>
<Name Value="MasterData2"/>
<ClassName Value="TfrBandView"/>
<Visible Value="True"/>
<Typ Value="gtBand"/>
<StreamMode Value="0"/>
<Size>
<Left Value="0"/>
<Top Value="228"/>
<Width Value="752"/>
<Height Value="112"/>
</Size>
<Flags Value="48"/>
<Data>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<BandType Value="btMasterData"/>
<Condition Value=""/>
<DatasetStr Value="1"/>
</Object3>
<Object4>
<Name Value="Memo4"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="36"/>
<Top Value="44"/>
<Width Value="680"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="Table of content&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="Arial"/>
<Size Value="11"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value="fsBold"/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlCenter"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object4>
<Object5>
<Name Value="Memo5"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="36"/>
<Top Value="88"/>
<Width Value="604"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsDash"/>
<FrameWidth Value="1"/>
<FrameBorders Value="frbBottom"/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="Page 2&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value="url"/>
<FURLInfo Value="@2"/>
<Font>
<Name Value="Arial"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value="fsItalic"/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taLeftJustify"/>
<Layout Value="tlCenter"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object5>
<Object6>
<Name Value="Memo6"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="640"/>
<Top Value="88"/>
<Width Value="72"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsDash"/>
<FrameWidth Value="1"/>
<FrameBorders Value="frbBottom"/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="2&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value="url"/>
<FURLInfo Value="@2"/>
<Font>
<Name Value="Arial"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value="fsItalic"/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlCenter"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object6>
<Object7>
<Name Value="Memo7"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="36"/>
<Top Value="108"/>
<Width Value="604"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsDash"/>
<FrameWidth Value="1"/>
<FrameBorders Value="frbBottom"/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="Page 3&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value="url"/>
<FURLInfo Value="@3"/>
<Font>
<Name Value="Arial"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value="fsItalic"/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taLeftJustify"/>
<Layout Value="tlCenter"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object7>
<Object8>
<Name Value="Memo8"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="640"/>
<Top Value="108"/>
<Width Value="72"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsDash"/>
<FrameWidth Value="1"/>
<FrameBorders Value="frbBottom"/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="3&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value="url"/>
<FURLInfo Value="@3"/>
<Font>
<Name Value="Arial"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value="fsItalic"/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlCenter"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object8>
<Object9>
<Name Value="Memo9"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="36"/>
<Top Value="128"/>
<Width Value="604"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsDash"/>
<FrameWidth Value="1"/>
<FrameBorders Value="frbBottom"/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="Page 4&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value="url"/>
<FURLInfo Value="@4"/>
<Font>
<Name Value="Arial"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value="fsItalic"/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taLeftJustify"/>
<Layout Value="tlCenter"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object9>
<Object10>
<Name Value="Memo10"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="640"/>
<Top Value="128"/>
<Width Value="72"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsDash"/>
<FrameWidth Value="1"/>
<FrameBorders Value="frbBottom"/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="4&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value="url"/>
<FURLInfo Value="@4"/>
<Font>
<Name Value="Arial"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value="fsItalic"/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlCenter"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object10>
<Object11>
<Name Value="Memo11"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="36"/>
<Top Value="228"/>
<Width Value="96"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="URL list&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="helvetica [urw]"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value=""/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taLeftJustify"/>
<Layout Value="tlTop"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object11>
<Object12>
<Name Value="Memo12"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="60"/>
<Top Value="248"/>
<Width Value="188"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="http://www.google.com&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value="url_ext"/>
<FURLInfo Value="http://www.google.com"/>
<Font>
<Name Value="helvetica [urw]"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value=""/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taLeftJustify"/>
<Layout Value="tlTop"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object12>
<Object13>
<Name Value="Memo13"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="60"/>
<Top Value="272"/>
<Width Value="188"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="http://www.linux.org&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value="url_ext"/>
<FURLInfo Value="http://www.linux.org"/>
<Font>
<Name Value="helvetica [urw]"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value=""/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taLeftJustify"/>
<Layout Value="tlTop"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object13>
<Object14>
<Name Value="Memo14"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="60"/>
<Top Value="296"/>
<Width Value="188"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="http://www.yandex.ru&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value="url_ext"/>
<FURLInfo Value="http://www.yandex.ru"/>
<Font>
<Name Value="helvetica [urw]"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value=""/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taLeftJustify"/>
<Layout Value="tlTop"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object14>
</Page1>
<Page2>
<Name Value="Page2"/>
<ClassName Value="TfrPageReport"/>
<Visible Value="True"/>
<Width Value="595"/>
<Height Value="842"/>
<Script Value=""/>
<PgSize Value="9"/>
<Margins>
<left Value="36"/>
<Top Value="36"/>
<Right Value="36"/>
<Bottom Value="36"/>
</Margins>
<Orientation Value="poPortrait"/>
<UseMargins Value="True"/>
<PrintToPrevPage Value="False"/>
<ColCount Value="1"/>
<ColGap Value="0"/>
<LayoutOrder Value="loColumns"/>
<ObjectCount Value="2"/>
<Object1>
<Name Value="ReportTitle2"/>
<ClassName Value="TfrBandView"/>
<Visible Value="True"/>
<Typ Value="gtBand"/>
<StreamMode Value="0"/>
<Size>
<Left Value="0"/>
<Top Value="52"/>
<Width Value="752"/>
<Height Value="40"/>
</Size>
<Flags Value="48"/>
<Data>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<BandType Value="btReportTitle"/>
<Condition Value=""/>
<DatasetStr Value=""/>
</Object1>
<Object2>
<Name Value="Memo1"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="36"/>
<Top Value="52"/>
<Width Value="680"/>
<Height Value="26"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="PAGE 2&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="helvetica [urw]"/>
<Size Value="11"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value="fsBold"/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlCenter"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object2>
</Page2>
<Page3>
<Name Value="Page3"/>
<ClassName Value="TfrPageReport"/>
<Visible Value="True"/>
<Width Value="595"/>
<Height Value="842"/>
<Script Value=""/>
<PgSize Value="9"/>
<Margins>
<left Value="36"/>
<Top Value="36"/>
<Right Value="36"/>
<Bottom Value="36"/>
</Margins>
<Orientation Value="poPortrait"/>
<UseMargins Value="True"/>
<PrintToPrevPage Value="False"/>
<ColCount Value="1"/>
<ColGap Value="0"/>
<LayoutOrder Value="loColumns"/>
<ObjectCount Value="2"/>
<Object1>
<Name Value="Band1"/>
<ClassName Value="TfrBandView"/>
<Visible Value="True"/>
<Typ Value="gtBand"/>
<StreamMode Value="0"/>
<Size>
<Left Value="0"/>
<Top Value="36"/>
<Width Value="752"/>
<Height Value="40"/>
</Size>
<Flags Value="48"/>
<Data>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<BandType Value="btReportTitle"/>
<Condition Value=""/>
<DatasetStr Value=""/>
</Object1>
<Object2>
<Name Value="Memo2"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="36"/>
<Top Value="36"/>
<Width Value="680"/>
<Height Value="26"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="PAGE 3&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="helvetica [urw]"/>
<Size Value="11"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value="fsBold"/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlCenter"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object2>
</Page3>
<Page4>
<Name Value="Page4"/>
<ClassName Value="TfrPageReport"/>
<Visible Value="True"/>
<Width Value="595"/>
<Height Value="842"/>
<Script Value=""/>
<PgSize Value="9"/>
<Margins>
<left Value="36"/>
<Top Value="36"/>
<Right Value="36"/>
<Bottom Value="36"/>
</Margins>
<Orientation Value="poPortrait"/>
<UseMargins Value="True"/>
<PrintToPrevPage Value="False"/>
<ColCount Value="1"/>
<ColGap Value="0"/>
<LayoutOrder Value="loColumns"/>
<ObjectCount Value="2"/>
<Object1>
<Name Value="Band2"/>
<ClassName Value="TfrBandView"/>
<Visible Value="True"/>
<Typ Value="gtBand"/>
<StreamMode Value="0"/>
<Size>
<Left Value="0"/>
<Top Value="84"/>
<Width Value="752"/>
<Height Value="40"/>
</Size>
<Flags Value="48"/>
<Data>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<BandType Value="btReportTitle"/>
<Condition Value=""/>
<DatasetStr Value=""/>
</Object1>
<Object2>
<Name Value="Memo3"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="36"/>
<Top Value="84"/>
<Width Value="680"/>
<Height Value="26"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="556"/>
<FormatStr Value=""/>
<Memo Value="PAGE 4&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="helvetica [urw]"/>
<Size Value="11"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value="fsBold"/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlCenter"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object2>
</Page4>
<FVal>
<Count Value="0"/>
</FVal>
<ParentVars Value=""/>
</Pages>
</LazReport>
</CONFIG>

View File

@ -102,6 +102,8 @@ type
TBeginColumnEvent = procedure(Band: TfrBand) of object;
TPrintColumnEvent = procedure(ColNo: Integer; var Width: Integer) of object;
TManualBuildEvent = procedure(Page: TfrPage) of object;
TObjectClickEvent = procedure(View: TfrView) of object;
TMouseOverObjectEvent = procedure(View: TfrView; var ACursor: TCursor) of object;
TfrHighlightAttr = packed record
FontStyle: Word;
@ -222,6 +224,8 @@ type
fFormat : Integer;
fFormatStr : string;
fFrameTyp : word;
FTag: string;
FURLInfo: string;
function GetLeft: Double;
function GetStretched: Boolean;
function GetTop: Double;
@ -316,6 +320,8 @@ type
published
property Left: double read GetLeft write SetLeft;
property Top: double read GetTop write SetTop;
property Tag: string read FTag write FTag;
property URLInfo: string read FURLInfo write FURLInfo;
property Width: double read GetWidth write SetWidth;
property Height: double read GetHeight write SetHeight;
end;
@ -889,6 +895,10 @@ type
procedure Add(APage: TfrPage);
procedure Insert(Index: Integer; APage: TfrPage);
procedure Delete(Index: Integer);
function DoMouseClick(Index: Integer; pt: TPoint; var AInfo: String): Boolean;
function DoMouseMove(Index: Integer; pt: TPoint; var Cursor: TCursor; var AInfo: String): Boolean;
procedure LoadFromStream(AStream: TStream);
procedure AddPagesFromStream(AStream: TStream; AReadHeader: boolean=true);
procedure LoadFromXML({%H-}XML: TLrXMLConfig; const {%H-}Path: String);
@ -944,6 +954,8 @@ type
private
FDataType: TfrDataType;
FDefaultCopies: Integer;
FMouseOverObject: TMouseOverObjectEvent;
FObjectClick: TObjectClickEvent;
FOnExportFilterSetup: TExportFilterSetup;
FPages: TfrPages;
FEMFPages: TfrEMFPages;
@ -1131,6 +1143,8 @@ type
property OnPrintColumn: TPrintColumnEvent read FOnPrintColumn write FOnPrintColumn;
property OnManualBuild: TManualBuildEvent read FOnManualBuild write FOnManualBuild;
property OnExportFilterSetup: TExportFilterSetup read FOnExportFilterSetup write FOnExportFilterSetup;
property OnObjectClick: TObjectClickEvent read FObjectClick write FObjectClick;
property OnMouseOverObject: TMouseOverObjectEvent read FMouseOverObject write FMouseOverObject;
end;
TfrCompositeReport = class(TfrReport)
@ -1240,9 +1254,10 @@ procedure frSelectHyphenDictionary(ADict: string);
const
lrTemplatePath = 'LazReportTemplate/';
frCurrentVersion = 25;
frCurrentVersion = 26;
// version 2.5: lazreport: added to binary stream ParentBandType variable
// on TfrView, used to extend export facilities
// version 2.6: lazreport: added to binary stream Tag property on TfrView
frSpecCount = 9;
frSpecFuncs: Array[0..frSpecCount - 1] of String = ('PAGE#', '',
@ -1976,6 +1991,8 @@ begin
fFormatStr := From.FormatStr;
fVisible := From.Visible;
fFrames:=From.Frames;
FTag:=From.FTag;
FURLInfo:=From.FURLInfo;
end;
procedure TfrView.CalcGaps;
@ -2032,7 +2049,7 @@ begin
fFrameWidth := SaveFW;
end;
procedure TfrView.ShowBackground;
procedure TfrView.ShowBackGround;
var
fp: TColor;
begin
@ -2182,6 +2199,9 @@ begin
end;
procedure TfrView.Print(Stream: TStream);
var
FTmpTag:string;
begin
{$IFDEF DebugLR}
DebugLn('%s.TfrView.Print()',[name]);
@ -2195,7 +2215,14 @@ begin
Stream.Write(Typ, 1);
if Typ = gtAddIn then
frWriteString(Stream, ClassName);
{ FTmpTag:=FTag;
if (FTag<>'') and (Pos('[', FTag) > 0) then
ExpandVariables(FTag);}
SaveToStream(Stream);
{ FTag:=FTmpTag;}
{$IFDEF DebugLR}
DebugLn('%s.TfrView.Print() end',[name]);
{$ENDIF}
@ -2285,6 +2312,12 @@ begin
ParentBandType := TfrBandType(I);
end;
if frVersion>25 then
begin
FTag := frReadString(Stream);
FURLInfo := frReadString(Stream);
end;
end;
{$IFDEF DebugLR}
DebugLn('%s.TfrView.LoadFromStream end',[name]);
@ -2331,8 +2364,11 @@ begin
Memo.Text := XML.GetValue(Path+'Data/Memo/Value', ''); // TODO Check default
Script.Text:= XML.GetValue(Path+'Data/Script/Value', ''); // TODO Check default
end
else
memo1.text := XML.GetValue(Path+'Data/Memo1/Value', ''); // TODO Check default
else
memo1.text := XML.GetValue(Path+'Data/Memo1/Value', ''); // TODO Check default
FTag:=XML.GetValue(Path+'Tag/Value', '');
FURLInfo:=XML.GetValue(Path+'FURLInfo/Value', '');
end;
procedure TfrView.SaveToStream(Stream: TStream);
@ -2383,6 +2419,9 @@ begin
B := ord(Parent.Typ);
Write(B, 4);
//Tag property stream format 26
frWriteString(Stream, FTag);
frWriteString(Stream, FURLInfo);
end;
{$IFDEF DebugLR}
Debugln('%s.SaveToStream end',[name]);
@ -2427,8 +2466,10 @@ begin
XML.SetValue(Path+'Data/Script/Value', TStrings(Script).Text);
end
else
XML.SetValue(Path+'Data/Memo1/Value', Memo1.Text);
else
XML.SetValue(Path+'Data/Memo1/Value', Memo1.Text);
XML.SetValue(Path+'Tag/Value', FTag);
XML.SetValue(Path+'FURLInfo/Value', FURLInfo);
end;
procedure TfrView.Resized;
@ -7998,6 +8039,71 @@ begin
FPages.Delete(Index);
end;
function TfrEMFPages.DoMouseClick(Index: Integer; pt: TPoint; var AInfo: String
): Boolean;
var
PgInf: PfrPageInfo;
V: TfrView;
i: Integer;
R1:TRect;
begin
Result := False;
PgInf := FPages[Index];
if not Assigned(PgInf) then exit;
AInfo := '';
if not Assigned(PgInf^.Page) then
ObjectsToPage(Index);
for i := 0 to PgInf^.Page.Objects.Count - 1 do
begin
V := TfrView(PgInf^.Page.Objects[i]);
R1:=Rect(Round(V.X), Round(V.Y), Round((V.X + V.DX)), Round((V.Y + V.DY)));
if PtInRect(R1, pt) then
begin
if Assigned(Parent.OnObjectClick) then
begin
Parent.OnObjectClick(V);
Result := True;
AInfo:=V.FURLInfo;
end;
exit;
end;
end;
end;
function TfrEMFPages.DoMouseMove(Index: Integer; pt: TPoint;
var Cursor: TCursor; var AInfo: String): Boolean;
var
PgInf: PfrPageInfo;
V: TfrView;
i: Integer;
R1:TRect;
begin
Result := False;
PgInf := FPages[Index];
if not Assigned(PgInf) then exit;
AInfo := '';
if not Assigned(PgInf^.Page) then
ObjectsToPage(Index);
for i := 0 to PgInf^.Page.Objects.Count - 1 do
begin
V := TfrView(PgInf^.Page.Objects[i]);
R1:=Rect(Round(V.X), Round(V.Y), Round((V.X + V.DX)), Round((V.Y + V.DY)));
if PtInRect(R1, pt) then
begin
if Assigned(Parent.OnMouseOverObject) then
begin
Parent.OnMouseOverObject(V, Cursor);
Result := True;
end;
exit;
end;
end;
end;
procedure TfrEMFPages.LoadFromStream(AStream: TStream);
var
i, o, c: Integer;

View File

@ -3192,6 +3192,8 @@ begin
CurReport:=nil;
Rep:=TfrReport.Create(SaveR.Owner);
Rep.OnMouseOverObject:=SaveR.OnMouseOverObject;
Rep.OnObjectClick:=SaveR.OnObjectClick;
try
Rep.LoadFromXMLStream(TestRepStream);
Rep.ShowReport;
@ -5824,125 +5826,6 @@ begin
frTemplForm.Free;
end;
{
procedure TfrDesignerForm.N20Click(Sender: TObject); // save as
var
s: String;
begin
WasOk := False;
with SaveDialog1 do
begin
Filter := sFormFile + ' (*.frf)|*.frf|' +
sTemplFile + ' (*.frt)|*.frt|' +
sLazFormFile + ' (*.lrf)|*.lrf' +
'';
InitialDir:=ExtractFilePath(ParamStrUTF8(0));
FileName := CurDocName;
FilterIndex := 3;
if Execute then
FCurDocFileType := FilterIndex;
case FCurDocFileType of
dtFastReportForm:
begin
s := ChangeFileExt(FileName, '.frf');
CurReport.SaveToFile(s);
CurDocName := s;
WasOk := True;
end;
dtFastReportTemplate:
begin
s := ExtractFileName(ChangeFileExt(FileName, '.frt'));
if frTemplateDir <> '' then
s := frTemplateDir + PathDelim + s;
frTemplNewForm := TfrTemplNewForm.Create(nil);
with frTemplNewForm do
if ShowModal = mrOk then
begin
CurReport.SaveTemplate(s, Memo1.Lines, Image1.Picture.Bitmap);
WasOk := True;
end;
frTemplNewForm.Free;
end;
dtLazReportForm: // lasreport form xml format
begin
s := ChangeFileExt(FileName, '.lrf');
CurReport.SaveToXMLFile(s);
CurDocName := s;
WasOk := True;
end;
end;
end;
end;
procedure TfrDesignerForm.FileBtn3Click(Sender: TObject); // save
begin
if CurDocName <> sUntitled then
begin
if FCurDocFileType=dtLazReportForm then
CurReport.SaveToXMLFile(curDocName)
else
CurReport.SaveToFile(CurDocName);
// FileModified := False;
Modified := False;
end
else
N20Click(nil);
end;
procedure TfrDesignerForm.FilePreviewExecute(Sender: TObject); // preview
var
v1, v2: Boolean;
TestRepStream:TMemoryStream;
Rep, SaveR:TfrReport;
procedure DoClearFormsName;
var
i:integer;
begin
for i:=0 to CurReport.Pages.Count - 1 do
if CurReport.Pages[i] is TfrPageDialog then
TfrPageDialog(CurReport.Pages[i]).Form.Name:='';
end;
procedure DoResoreFormsName;
var
i:integer;
begin
for i:=0 to CurReport.Pages.Count - 1 do
if CurReport.Pages[i] is TfrPageDialog then
TfrPageDialog(CurReport.Pages[i]).Form.Name:=TfrPageDialog(CurReport.Pages[i]).Name;
end;
begin
if CurReport is TfrCompositeReport then Exit;
Application.ProcessMessages;
SaveR:=CurReport;
TestRepStream:=TMemoryStream.Create;
CurReport.SaveToXMLStream(TestRepStream);
TestRepStream.Position:=0;
DoClearFormsName;
CurReport:=nil;
Rep:=TfrReport.Create(SaveR.Owner);
try
Rep.LoadFromXMLStream(TestRepStream);
Rep.ShowReport;
FreeAndNil(Rep)
except
on E:Exception do
begin
ShowMessage(E.Message);
if Assigned(Rep) then
FreeAndNil(Rep)
end;
end;
TestRepStream.Free;
CurReport:=SaveR;
CurPage := 0;
DoResoreFormsName;
end;
}
procedure TfrDesignerForm.N42Click(Sender: TObject); // var editor
begin
if ShowEvEditor(CurReport) then

View File

@ -80,6 +80,8 @@ type
property OnScrollPage:TNotifyEvent read GetOnScrollPage write SetOnScrollPage;
end;
{ TfrPBox }
TfrPBox = class(TPanel)
public
Preview: TfrPreviewForm;
@ -87,6 +89,7 @@ type
procedure Paint; override;
procedure MouseDown(Button: TMouseButton;
{%H-}Shift: TShiftState; X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure DblClick; override;
property OnMouseWheelDown;
@ -215,10 +218,10 @@ type
implementation
uses LR_Class, LR_Prntr, LR_Srch, LR_PrDlg, Printers, strutils;
{$R *.lfm}
uses LR_Class, LR_Prntr, LR_Srch, LR_PrDlg,Printers;
type
THackControl = class(TWinControl)
@ -480,16 +483,35 @@ end;
procedure TfrPBox.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
i: Integer;
i, k, PP: Integer;
pt: TPoint;
AInfo:string;
begin
if Preview.EMFPages = nil then Exit;
with Preview do
if Button = mbLeft then
begin
Pt:=Point(X - Preview.ofx, Y - Preview.ofy);
for i := 0 to TfrEMFPages(EMFPages).Count - 1 do
if PtInRect(TfrEMFPages(EMFPages)[i]^.r, Point(x - ofx, y - ofy)) then
if PtInRect(TfrEMFPages(EMFPages)[i]^.r, Pt) then
begin
if TfrEMFPages(EMFPages).DoMouseClick(i, Point(Round((pt.X - TfrEMFPages(EMFPages)[i]^.r.Left) / per), Round((pt.Y - TfrEMFPages(EMFPages)[i]^.r.Top) / per)), AInfo) then
begin
K:=Pos ('@', AInfo);
if (K > 0) then
begin
PP:=StrToIntDef(Copy(AInfo, K+1, 255), -1);
if (PP>0) and (K<TfrEMFPages(EMFPages).Count) then
begin
CurPage := PP;
SetToCurPage;
CurPage := PP;
ShowPageNum;
end;
end;
Exit;
end;
CurPage := i + 1;
SetToCurPage;
CurPage := i + 1;
@ -497,7 +519,8 @@ begin
break;
end;
end
else if Button = mbRight then
else
if Button = mbRight then
begin
pt := Self.ClientToScreen(Point(X, Y));
if frDesigner <> nil then
@ -513,6 +536,29 @@ begin
end;
end;
procedure TfrPBox.MouseMove(Shift: TShiftState; X, Y: Integer);
var
E:TfrEMFPages;
i:integer;
P:TPoint;
C:TCursor;
S:string;
begin
if not Assigned(Preview.EMFPages) then Exit;
E:=TfrEMFPages(Preview.EMFPages);
P:=Point(X - Preview.ofx, Y - Preview.ofy);
for i := 0 to E.Count - 1 do
if PtInRect(E[i]^.R, P) then
begin
if E.DoMouseMove(i, Point(Round((P.X - E[i]^.R.Left) / Preview.per), Round((P.Y - E[i]^.r.Top) / Preview.per)), C, S) then
Cursor:=C
else
Cursor:=crDefault;
Break;
end;
inherited MouseMove(Shift, X, Y);
end;
procedure TfrPBox.DblClick;
begin
if Preview.EMFPages = nil then Exit;