From eff0b4642654556a5a01a580b6f17250a169152d Mon Sep 17 00:00:00 2001 From: wp Date: Tue, 4 Jul 2017 20:50:04 +0000 Subject: [PATCH] TAChart: Add html demo. git-svn-id: trunk@55444 - --- .gitattributes | 4 + components/tachart/demo/html/htmldemo.lpi | 81 +++++++++ components/tachart/demo/html/htmldemo.lpr | 21 +++ components/tachart/demo/html/main.lfm | 193 ++++++++++++++++++++++ components/tachart/demo/html/main.pas | 91 ++++++++++ 5 files changed, 390 insertions(+) create mode 100644 components/tachart/demo/html/htmldemo.lpi create mode 100644 components/tachart/demo/html/htmldemo.lpr create mode 100644 components/tachart/demo/html/main.lfm create mode 100644 components/tachart/demo/html/main.pas diff --git a/.gitattributes b/.gitattributes index 25bc775124..118f1e8ec5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4345,6 +4345,10 @@ components/tachart/demo/func/funcdemo.lpi svneol=native#text/plain components/tachart/demo/func/funcdemo.lpr svneol=native#text/plain components/tachart/demo/func/main.lfm svneol=native#text/plain components/tachart/demo/func/main.pas svneol=native#text/plain +components/tachart/demo/html/htmldemo.lpi svneol=native#text/plain +components/tachart/demo/html/htmldemo.lpr svneol=native#text/plain +components/tachart/demo/html/main.lfm svneol=native#text/plain +components/tachart/demo/html/main.pas svneol=native#text/plain components/tachart/demo/imagelist/Main.lfm svneol=native#text/plain components/tachart/demo/imagelist/Main.pas svneol=native#text/pascal components/tachart/demo/imagelist/imagelistdemo.lpi svneol=native#text/plain diff --git a/components/tachart/demo/html/htmldemo.lpi b/components/tachart/demo/html/htmldemo.lpi new file mode 100644 index 0000000000..1d8bdf8e7d --- /dev/null +++ b/components/tachart/demo/html/htmldemo.lpi @@ -0,0 +1,81 @@ + + + + + + + + + + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="2"> + <Item1> + <PackageName Value="TAChartLazarusPkg"/> + </Item1> + <Item2> + <PackageName Value="LCL"/> + </Item2> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="htmldemo.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="main.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="MainForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="htmldemo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Debugging> + <UseExternalDbgSyms Value="True"/> + </Debugging> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/components/tachart/demo/html/htmldemo.lpr b/components/tachart/demo/html/htmldemo.lpr new file mode 100644 index 0000000000..b6afb5fdcb --- /dev/null +++ b/components/tachart/demo/html/htmldemo.lpr @@ -0,0 +1,21 @@ +program htmldemo; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, main, tachartlazaruspkg + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TMainForm, MainForm); + Application.Run; +end. + diff --git a/components/tachart/demo/html/main.lfm b/components/tachart/demo/html/main.lfm new file mode 100644 index 0000000000..c78b34a912 --- /dev/null +++ b/components/tachart/demo/html/main.lfm @@ -0,0 +1,193 @@ +object MainForm: TMainForm + Left = 280 + Height = 432 + Top = 130 + Width = 655 + Caption = 'HTML demo' + ClientHeight = 432 + ClientWidth = 655 + OnCreate = FormCreate + LCLVersion = '1.9.0.0' + object BottomPanel: TPanel + Left = 8 + Height = 91 + Top = 333 + Width = 647 + Align = alBottom + AutoSize = True + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 + BorderSpacing.Bottom = 8 + BevelOuter = bvNone + ClientHeight = 91 + ClientWidth = 647 + TabOrder = 0 + object CgHTML: TCheckGroup + Left = 0 + Height = 78 + Top = 8 + Width = 221 + AutoFill = True + AutoSize = True + BorderSpacing.InnerBorder = 4 + Caption = 'HTML' + ChildSizing.LeftRightSpacing = 6 + ChildSizing.TopBottomSpacing = 6 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.EnlargeVertical = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsScaleChilds + ChildSizing.ShrinkVertical = crsScaleChilds + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 3 + ClientHeight = 58 + ClientWidth = 217 + Columns = 3 + Items.Strings = ( + 'title' + 'footer' + 'legend' + 'x axis title' + 'y axis title' + ) + OnItemClick = CgHTMLItemClick + TabOrder = 0 + Data = { + 050000000202020202 + } + end + object Button1: TButton + AnchorSideTop.Control = BottomPanel + AnchorSideRight.Control = BottomPanel + AnchorSideRight.Side = asrBottom + Left = 518 + Height = 25 + Top = 8 + Width = 121 + Anchors = [akTop, akRight] + AutoSize = True + BorderSpacing.Top = 8 + BorderSpacing.Right = 8 + Caption = 'Copy to clipboard' + OnClick = Button1Click + TabOrder = 1 + end + object Button2: TButton + AnchorSideLeft.Control = Button1 + AnchorSideTop.Control = Button1 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Button1 + AnchorSideRight.Side = asrBottom + Left = 518 + Height = 25 + Top = 37 + Width = 121 + Anchors = [akTop, akLeft, akRight] + AutoSize = True + BorderSpacing.Top = 4 + Caption = 'Save to WMF' + OnClick = Button2Click + TabOrder = 2 + end + object Button3: TButton + AnchorSideLeft.Control = Button1 + AnchorSideTop.Control = Button2 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Button1 + AnchorSideRight.Side = asrBottom + Left = 518 + Height = 25 + Top = 66 + Width = 121 + Anchors = [akTop, akLeft, akRight] + AutoSize = True + BorderSpacing.Top = 4 + Caption = 'Save to SVG' + OnClick = Button3Click + TabOrder = 3 + end + end + object Chart: TChart + Left = 8 + Height = 317 + Top = 8 + Width = 639 + AxisList = < + item + Grid.Color = clSilver + Grid.Style = psSolid + Minors = <> + Title.LabelFont.Height = -16 + Title.LabelFont.Orientation = 900 + Title.Visible = True + Title.Caption = 'Area, cm<sup>2</cm>' + Title.TextFormat = tfHTML + end + item + Grid.Color = clSilver + Grid.Style = psSolid + Grid.Visible = False + Alignment = calBottom + Minors = <> + Title.LabelFont.Height = -16 + Title.Visible = True + Title.Caption = 'Angle α' + Title.TextFormat = tfHTML + end> + BackColor = clWhite + Foot.Alignment = taLeftJustify + Foot.Brush.Color = clBtnFace + Foot.Brush.Style = bsClear + Foot.Font.Color = clBlue + Foot.Text.Strings = ( + '<u>Reference</u>:' + 'W. Shakespeare, <i>"J. Non-reproducible Results"</i>, <b>38</b>, 512 (2017)' + ) + Foot.TextFormat = tfHTML + Foot.Visible = True + Legend.TextFormat = tfHTML + Legend.Visible = True + Title.Brush.Color = clBtnFace + Title.Brush.Style = bsClear + Title.Font.Color = clBlue + Title.Font.Height = -19 + Title.Font.Style = [fsBold] + Title.Text.Strings = ( + 'Plot of area (cm<sup>2</sup>) <i>vs.</i> angle α' + ) + Title.TextFormat = tfHTML + Title.Visible = True + Align = alClient + BorderSpacing.Around = 8 + Color = clWhite + object RedSeries: TLineSeries + Title = '<font color="red">Red</font> series' + LinePen.Color = clRed + Source = RedSource + end + object BlueSeries: TLineSeries + Title = '<font color="blue">Blue</font> series' + LinePen.Color = clBlue + Source = BlueSource + end + end + object RedSource: TRandomChartSource + PointsNumber = 20 + RandSeed = 1926906778 + XMax = 90 + XMin = 0 + YMax = 10 + YMin = 4 + left = 121 + top = 52 + end + object BlueSource: TRandomChartSource + PointsNumber = 30 + RandSeed = 1926958054 + XMax = 90 + XMin = 0 + YMax = 8 + YMin = 0 + left = 120 + top = 111 + end +end diff --git a/components/tachart/demo/html/main.pas b/components/tachart/demo/html/main.pas new file mode 100644 index 0000000000..bff9b37768 --- /dev/null +++ b/components/tachart/demo/html/main.pas @@ -0,0 +1,91 @@ +unit main; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, TAGraph, TASeries, TASources, Forms, Controls, + Graphics, Dialogs, ExtCtrls, StdCtrls; + +type + + { TMainForm } + + TMainForm = class(TForm) + Button1: TButton; + Button2: TButton; + Button3: TButton; + Chart: TChart; + CgHTML: TCheckGroup; + RedSource: TRandomChartSource; + BlueSource: TRandomChartSource; + RedSeries: TLineSeries; + BlueSeries: TLineSeries; + BottomPanel: TPanel; + procedure Button1Click(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure Button3Click(Sender: TObject); + procedure CgHTMLItemClick(Sender: TObject; Index: integer); + procedure FormCreate(Sender: TObject); + private + + public + + end; + +var + MainForm: TMainForm; + +implementation + +{$R *.lfm} + +uses + TAChartUtils, TADrawerWMF, TADrawerSVG; + +{ TMainForm } + +procedure TMainForm.Button1Click(Sender: TObject); +begin + Chart.CopyToClipboardBitmap; +end; + +procedure TMainForm.Button2Click(Sender: TObject); +begin + with Chart do + Draw(TWindowsMetafileDrawer.Create('test.wmf'), Rect(0, 0, Width, Height)); + ShowMessage('Chart saved to file "test.wmf"'); +end; + +procedure TMainForm.Button3Click(Sender: TObject); +begin + Chart.SaveToSVGFile('test.svg'); + ShowMessage('Chart saved to file "test.svg"'); +end; + +procedure TMainForm.CgHTMLItemClick(Sender: TObject; Index: integer); +var + tf: TChartTextFormat; +begin + if CgHTML.Checked[Index] then tf := tfHTML else tf := tfNormal; + case Index of + 0: Chart.Title.TextFormat := tf; + 1: Chart.Foot.TextFormat := tf; + 2: Chart.Legend.TextFormat := tf; + 3: Chart.BottomAxis.Title.TextFormat := tf; + 4: Chart.LeftAxis.Title.TextFormat := tf; + end; +end; + +procedure TMainForm.FormCreate(Sender: TObject); +begin + CgHTML.Checked[0] := Chart.Title.TextFormat = tfHTML; + CgHTML.Checked[1] := Chart.Foot.TextFormat = tfHTML; + CgHTML.Checked[2] := Chart.Legend.TextFormat = tfHTML; + CgHTML.Checked[3] := Chart.BottomAxis.Title.TextFormat = tfHTML; + CgHTML.Checked[4] := Chart.LeftAxis.Title.TextFormat = tfHTML; +end; + +end. +