From 88e42b0f5232db62a585324b55bb615a57dbf97d Mon Sep 17 00:00:00 2001 From: ask Date: Sun, 22 Jan 2012 08:33:32 +0000 Subject: [PATCH] TAChart: Add imagelist demo based on code by Werner Pamler git-svn-id: trunk@34850 - --- .gitattributes | 4 + .gitignore | 4 + components/tachart/demo/imagelist/Main.lfm | 197 ++++++++++++++++++ components/tachart/demo/imagelist/Main.pas | 92 ++++++++ .../tachart/demo/imagelist/imagelistdemo.lpi | 96 +++++++++ .../tachart/demo/imagelist/imagelistdemo.lpr | 22 ++ 6 files changed, 415 insertions(+) create mode 100644 components/tachart/demo/imagelist/Main.lfm create mode 100644 components/tachart/demo/imagelist/Main.pas create mode 100644 components/tachart/demo/imagelist/imagelistdemo.lpi create mode 100644 components/tachart/demo/imagelist/imagelistdemo.lpr diff --git a/.gitattributes b/.gitattributes index 5c4394f876..ce85fad078 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2534,6 +2534,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/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 +components/tachart/demo/imagelist/imagelistdemo.lpr svneol=native#text/pascal components/tachart/demo/labels/Main.lfm svneol=native#text/plain components/tachart/demo/labels/Main.pas svneol=native#text/pascal components/tachart/demo/labels/labelsdemo.lpi svneol=native#text/plain diff --git a/.gitignore b/.gitignore index ac6fcc5354..b1e424da02 100644 --- a/.gitignore +++ b/.gitignore @@ -176,6 +176,10 @@ components/tachart/demo/fpvectorial/lib components/tachart/demo/func/*.exe components/tachart/demo/func/*.lps components/tachart/demo/func/lib +components/tachart/demo/imagelist/*.exe +components/tachart/demo/imagelist/*.lps +components/tachart/demo/imagelist/*.res +components/tachart/demo/imagelist/lib components/tachart/demo/labels/*.exe components/tachart/demo/labels/*.lps components/tachart/demo/labels/lib diff --git a/components/tachart/demo/imagelist/Main.lfm b/components/tachart/demo/imagelist/Main.lfm new file mode 100644 index 0000000000..d6ad2dfbae --- /dev/null +++ b/components/tachart/demo/imagelist/Main.lfm @@ -0,0 +1,197 @@ +object frmMain: TfrmMain + Left = 261 + Height = 434 + Top = 153 + Width = 484 + Caption = 'frmMain' + ClientHeight = 434 + ClientWidth = 484 + LCLVersion = '0.9.31' + object Chart1: TChart + Left = 0 + Height = 226 + Top = 38 + Width = 484 + AxisList = < + item + Minors = <> + Title.LabelFont.Orientation = 900 + end + item + Alignment = calBottom + Minors = <> + end> + BackColor = clWhite + Extent.UseXMax = True + Extent.UseXMin = True + Extent.UseYMax = True + Extent.UseYMin = True + Extent.XMax = 5 + Extent.XMin = -5 + Extent.YMax = 1 + Extent.YMin = -1 + Foot.Brush.Color = clBtnFace + Foot.Font.Color = clBlue + Title.Brush.Color = clBtnFace + Title.Font.Color = clBlue + Title.Text.Strings = ( + 'TAChart' + ) + Align = alClient + ParentColor = False + object Chart1FuncSeries1: TFuncSeries + Extent.UseXMax = True + Extent.UseXMin = True + Extent.XMax = 5 + Extent.XMin = -5 + OnCalculate = Chart1FuncSeries1Calculate + Pen.Color = clPurple + end + object Chart1FuncSeries2: TFuncSeries + OnCalculate = Chart1FuncSeries2Calculate + Pen.Color = clLime + end + end + object ListView1: TListView + Left = 0 + Height = 150 + Top = 264 + Width = 484 + Align = alBottom + Color = clBtnFace + Columns = <> + Items.LazData = { + 8C0000000400000000000000FFFFFFFFFFFFFFFF000000000D00000064657369 + 676E206974656D203001000000FFFFFFFFFFFFFFFF000000000D000000646573 + 69676E206974656D203102000000FFFFFFFFFFFFFFFF000000000D0000006465 + 7369676E206974656D203203000000FFFFFFFFFFFFFFFF000000000D00000064 + 657369676E206974656D2033 + } + SmallImages = ChartImageList1 + TabOrder = 1 + end + object ToolBar1: TToolBar + Left = 0 + Height = 38 + Top = 0 + Width = 484 + AutoSize = True + ButtonHeight = 36 + Caption = 'ToolBar1' + EdgeBorders = [ebBottom] + Images = ChartImageList1 + ShowCaptions = True + TabOrder = 2 + object tbAdd: TToolButton + Left = 1 + Top = 0 + Caption = 'Add' + ImageIndex = 1 + OnClick = tbAddClick + end + object tbQuit: TToolButton + Left = 38 + Top = 0 + Caption = 'Quit' + ImageIndex = 0 + OnClick = tbQuitClick + end + object tbSep1: TToolButton + Left = 28 + Top = 0 + Width = 10 + Caption = 'tbSep1' + Style = tbsSeparator + end + end + object StatusBar1: TStatusBar + Left = 0 + Height = 20 + Top = 414 + Width = 484 + Panels = <> + end + object RandomChartSource1: TRandomChartSource + PointsNumber = 10 + RandSeed = 1965225964 + XMax = 5 + XMin = -5 + YMax = 1 + YMin = -1 + left = 191 + top = 159 + end + object ChartImageList1: TChartImageList + Chart = Chart1 + OnPopulate = ChartImageList1Populate + left = 192 + top = 97 + Bitmap = { + 4C69020000001000000010000000003F9300003F9300003F9300003F9424003F + 948A003E93CC004095CC004095CC004095CC004095CC004095CC004095CC0040 + 95CC004095CC00409599FFFFFF00003F9300003F9324003F938A0E4B9CD33F76 + C0EC5D90D4FF3365A9FFA0A0A0FFA9A9A9FFA9A9A9FFAAAAAAFFACACACFFAEAE + AEFFB0B0B0FF003E93CCFFFFFF00003F938A0E4A9CD33E75BFEC5487CBFF3669 + ADFF23569AFF3363A6FFA9A9A9FFBCBCBCFFBDBDBDFFBFBFBFFFC1C1C1FFC4C4 + C4FFC7C7C7FF003C90CCFFFFFF00003D91CC5D90D4FF3568ACFF285B9FFF1A4D + 91FF4477BBFF3361A4FFA9A9A9FFBDBDBDFFBFBFBFFFC1C1C1FFC4C4C4FFC7C7 + C7FFC9C9C9FF003A8DCCFFFFFF00003B8ECC588BCFFF1A4D91FF4376BAFF3265 + A9FF4376BAFF335FA1FFAAAAAAFFBFBFBFFFC1C1C1FFC4C4C4FFC7C7C7FFC9C9 + C9FFCCCCCCFF003789CCFFFFFF0000398BCC5588CCFF275A9EFF4174B8FF3164 + A8FF4174B8FF335D9EFFACACACFFC1C1C1FFC4C4C4FFC7C7C7FFC9C9C9FFCCCC + CCFFD0D0D0FF003485CCFFFFFF00003688CC5386CAFF295CA0FF3F72B6FF3063 + A7FF3F72B6FF335A9AFFAEAEAEFFC4C4C4FFC7C7C7FFC9C9C9FFCCCCCCFFD0D0 + D0FFD3D3D3FF003181CCFFFFFF00003485CC5083C7FF1D5094FF3265A9FF2D60 + A4FF3D70B4FF335897FFB0B0B0FFC7C7C7FFC9C9C9FFCCCCCCFFD0D0D0FFD3D3 + D3FFD5D5D5FF002E7DCCFFFFFF00003181CC4C7FC3FFBBBBBBFF22518CFF2C5F + A3FF3B6EB2FF335593FFB3B3B3FFC9C9C9FFCCCCCCFFD0D0D0FFD3D3D3FFD5D5 + D5FFD8D8D8FF002B78CCFFFFFF00002E7DCC497CC0FF09336FFF215090FF2B5E + A2FF396CB0FF335290FFB5B5B5FFCCCCCCFFD0D0D0FFD3D3D3FFD5D5D5FFD8D8 + D8FFDBDBDBFF002774CCFFFFFF00002B79CC477ABEFF2C5FA3FF376AAEFF2B5E + A2FF376AAEFF33508CFFB8B8B8FFD0D0D0FFD3D3D3FFD5D5D5FFD8D8D8FFDBDB + DBFFDCDCDCFF00246FCCFFFFFF00002875CC4477BBFF2C5FA3FF3568ACFF2B5E + A2FF2E61A5FF334B87FFBBBBBBFFD3D3D3FFD5D5D5FFD8D8D8FFDBDBDBFFDCDC + DCFFDDDDDDFF001F68CCFFFFFF00002571CC4174B8FF2C5FA3FF2D60A4FF2356 + 9AFF3D70B4FF334179FFBEBEBEFFD5D5D5FFD8D8D8FFDBDBDBFFDCDCDCFFDDDD + DDFFDDDDDDFF001258CCFFFFFF0000226DCC3F72B6FF225599FF3B6EB2FF2C51 + 96EC0A1C60D3000749A4000648CC000648CC000648CC000648CC000648CC0006 + 48CC000648CC00074A99FFFFFF00001B64CC4174B8FF2A5094EC0A1A5ED30008 + 4A8A000648240006470000044500000445000004450000044500000445000004 + 45000004450000064800FFFFFF0000105500000B4FCC0007498A000546240005 + 4700000648000006470000044500000445000004450000044500000445000004 + 45000004450000064800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0013A2000014A5000014A8000015A9 + 001A15AA006C15AA00A615AA00C415AA00C415AA00A615AA006C15A9001A14A8 + 000014A5000013A20000FFFFFF00FFFFFF0013A2000014A5000014A8004D1BAD + 08BF42C82FE35FDC4EF56BE35AFD6BE359FD5FDB4EF541C72EE31BAD07BF14A8 + 004D14A5000013A20000FFFFFF00FFFFFF0013A2000014A5004D21AF0ECD5FDA + 4EF663DA52FF5FD64EFF50C73FFF50C73FFF5FD64EFF62D951FF5DD94BF620AE + 0DCD14A5004D13A20000FFFFFF00FFFFFF0013A1001A1AA707BF5CD74BF658CF + 47FF57CE46FF4AC139FFFFFFFF00FFFFFF004AC139FF57CE46FF58CF47FF57D2 + 45F619A606BF13A1001AFFFFFF00FFFFFF00129E006C3DBF2CE354CB43FF4EC5 + 3DFF4EC53DFF44BB33FFFFFFFF00FFFFFF0044BB33FF4EC53DFF4EC53DFF52C9 + 41FF36B925E3129E006CFFFFFF00FFFFFF00119A00A751CB40F547BE36FF3EB5 + 2DFF3EB52DFF37AE26FFEBEBEBFFE2E2E2FF259D14FF239B12FF239B12FF279F + 16FF34B023F5119A00A7FFFFFF00FFFFFF00109600C453CB42FD3CB32BFFF8F8 + F8FFE1E1E1FFD5D5D5FFD7D7D7FFDCDCDCFFE0E0E0FFE4E4E4FFE8E8E8FF22A0 + 11FF2CAA1BFD109600C4FFFFFF00FFFFFF000F9200C450C83FFD33AF22FFD4D4 + D4FFD3D3D3FFD7D7D7FFDCDCDCFFE0E0E0FFE4E4E4FFE8E8E8FFECECECFF22A6 + 11FF28AE17FD0F9200C4FFFFFF00FFFFFF000E8D00A73BBD2BF523B412FF22A8 + 11FF22A811FF22A411FFE0E0E0FFE4E4E4FF22A411FF22A811FF22A811FF22B4 + 11FF21AF11F50E8D00A7FFFFFF00FFFFFF000D89006C22A813E326C015FF22BE + 11FF22BE11FF22B511FFE4E4E4FFE8E8E8FF22B511FF22BE11FF22BE11FF22BE + 11FF17A109E30D89006CFFFFFF00FFFFFF000C85001A0F8A03BF27C017F623C8 + 12FF22C811FF22BC11FFE8E8E8FFECECECFF22BC11FF22C811FF22C811FF1FBC + 0FF60D8902BF0C85001AFFFFFF00FFFFFF000B8300000B7F004D0E8804CD21C4 + 11F623D112FF22D111FF22B611FF22B611FF22D111FF22D111FF1EC20FF60D88 + 03CD0B7F004D0B830000FFFFFF00FFFFFF000B8300000A7D0000076F004D0874 + 02BF139D08E31DC40EF521D411FD21D411FD1DC40EF5139D08E3087402BF076F + 004D0A7D00000B830000FFFFFF00FFFFFF000B8300000A7D0000066D00000360 + 001A025D006C025D00A6025D00C4025D00C4025D00A6025D006C0360001A066D + 00000A7D00000B830000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00 + } + end +end diff --git a/components/tachart/demo/imagelist/Main.pas b/components/tachart/demo/imagelist/Main.pas new file mode 100644 index 0000000000..d3314b3454 --- /dev/null +++ b/components/tachart/demo/imagelist/Main.pas @@ -0,0 +1,92 @@ +unit Main; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, TAGraph, TAChartImageList, TASources, + TAFuncSeries, Forms, Controls, Graphics, Dialogs, ComCtrls; + +type + + { TfrmMain } + + TfrmMain = class(TForm) + Chart1: TChart; + Chart1FuncSeries1: TFuncSeries; + Chart1FuncSeries2: TFuncSeries; + ChartImageList1: TChartImageList; + ListView1: TListView; + RandomChartSource1: TRandomChartSource; + StatusBar1: TStatusBar; + ToolBar1: TToolBar; + tbAdd: TToolButton; + tbQuit: TToolButton; + tbSep1: TToolButton; + procedure Chart1FuncSeries1Calculate(const AX: Double; out AY: Double); + procedure Chart1FuncSeries2Calculate(const AX: Double; out AY: Double); + procedure ChartImageList1Populate(Sender: TObject); + procedure tbAddClick(Sender: TObject); + procedure tbQuitClick(Sender: TObject); + end; + +var + frmMain: TfrmMain; + +implementation + +uses + LCLIntf, TATypes, TASeries; + +{$R *.lfm} + +{ TfrmMain } + +procedure TfrmMain.Chart1FuncSeries1Calculate(const AX: Double; out AY: Double); +begin + AY := Sin(AX); +end; + +procedure TfrmMain.Chart1FuncSeries2Calculate(const AX: Double; out AY: Double); +begin + AY := Cos(AX); +end; + +procedure TfrmMain.ChartImageList1Populate(Sender: TObject); +begin + with ChartImageList1 do + StatusBar1.SimpleText := Format( + 'Now %d images in image list. ' + + 'Among them %d series images starting at index %d', + [Count, SeriesCount, FirstSeriesIndex]); +end; + +procedure TfrmMain.tbAddClick(Sender: TObject); +var + series: TLineSeries; + sty: Integer; +begin + RandomChartSource1.RandSeed := Random(MaxInt); + series := TLineSeries.Create(Self); + series.SeriesColor := RGB(Random(256), Random(256), Random(256)); + series.Pointer.Brush.Color := series.SeriesColor; + sty := Random(Ord(High(TSeriesPointerStyle)) + 5); + series.ShowPoints := sty <= Ord(High(TSeriesPointerStyle)); + if series.ShowPoints then + series.Pointer.Style := TSeriesPointerStyle(sty); + series.ListSource.CopyFrom(RandomChartSource1); + Chart1.AddSeries(series); + with Listview1.Items.Add do begin + Caption := Format('run item %d', [ListView1.Items.Count]); + ImageIndex := ChartImageList1.Count - 1; + end; +end; + +procedure TfrmMain.tbQuitClick(Sender: TObject); +begin + Close; +end; + +end. + diff --git a/components/tachart/demo/imagelist/imagelistdemo.lpi b/components/tachart/demo/imagelist/imagelistdemo.lpi new file mode 100644 index 0000000000..f243ec74b7 --- /dev/null +++ b/components/tachart/demo/imagelist/imagelistdemo.lpi @@ -0,0 +1,96 @@ + + + + + + + + + + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + </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="TAChartLazarusPkg"/> + </Item1> + <Item2> + <PackageName Value="LCL"/> + </Item2> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="imagelistdemo.lpr"/> + <IsPartOfProject Value="True"/> + <UnitName Value="imagelistdemo"/> + </Unit0> + <Unit1> + <Filename Value="Main.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="Main"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="imagelistdemo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <CodeGeneration> + <SmartLinkUnit Value="True"/> + </CodeGeneration> + <Linking> + <LinkSmart Value="True"/> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + <Other> + <CompilerMessages> + <UseMsgFile Value="True"/> + </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> diff --git a/components/tachart/demo/imagelist/imagelistdemo.lpr b/components/tachart/demo/imagelist/imagelistdemo.lpr new file mode 100644 index 0000000000..8fba323361 --- /dev/null +++ b/components/tachart/demo/imagelist/imagelistdemo.lpr @@ -0,0 +1,22 @@ +program imagelistdemo; + +{$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 + Application.Title := 'Chart image list demo'; + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. +