jvcllaz: Remove JvChart again: incomplete, too many bugs.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7182 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2019-11-12 13:47:51 +00:00
parent 4f3966db81
commit 56da43d5e4
13 changed files with 3 additions and 8855 deletions

View File

@ -1,7 +1,6 @@
tjvtabbar.bmp
tjvmoderntabbarpainter.bmp
tjvtabbarxppainter.bmp
tjvchart.bmp
tjvgammapanel.png
tjvgammapanel_150.png
tjvgammapanel_200.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -22,8 +22,7 @@ uses
// JvTabBar, JvTabBarXPPainter,
JvThumbImage, JvThumbnails, JvThumbViews,
JvTimeLine, JvTMTimeLine, JvTimeLineEditor,
JvImagesViewer, JvImageListViewer, JvOwnerDrawViewer,
JvChart;
JvImagesViewer, JvImageListViewer, JvOwnerDrawViewer;
procedure Register;
begin
@ -34,8 +33,7 @@ begin
TJvThumbView, TJvThumbnail, TJvThumbImage,
TJvTimeLine, TJvTMTimeLine,
TJvGammaPanel,
TJvImagesViewer, TJvImageListViewer, TJvOwnerDrawViewer,
TJvChart
TJvImagesViewer, TJvImageListViewer, TJvOwnerDrawViewer
]);
// Timeline

View File

@ -1,98 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="12"/>
<PathDelim Value="\"/>
<General>
<SessionStorage Value="InProjectDir"/>
<Title Value="JvChartDemo"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<XPManifest>
<DpiAware Value="True"/>
</XPManifest>
<Icon Value="0"/>
</General>
<BuildModes>
<Item Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<UseFileFilters Value="True"/>
</PublishOptions>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="0"/>
</RunParams>
<RequiredPackages Count="3">
<Item1>
<PackageName Value="Printer4Lazarus"/>
</Item1>
<Item2>
<PackageName Value="JvCustomLazR"/>
</Item2>
<Item3>
<PackageName Value="LCL"/>
</Item3>
</RequiredPackages>
<Units>
<Unit>
<Filename Value="JvChartDemo.lpr"/>
<IsPartOfProject Value="True"/>
</Unit>
<Unit>
<Filename Value="jvchartdemofm.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="JvChartDemoForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="JvChartDemoFm"/>
</Unit>
<Unit>
<Filename Value="statsclasses.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="StatsClasses"/>
</Unit>
<Unit>
<Filename Value="jvpeneditor.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="PenEditorForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="jvPenEditor"/>
</Unit>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="..\..\bin\$(TargetCPU)-$(TargetOS)\JvChartDemo"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Linking>
<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>

View File

@ -1,20 +0,0 @@
program JvChartDemo;
{$MODE OBJFPC}{$H+}
uses
Interfaces,
Forms, printer4lazarus,
JvChartDemoFm in 'JvChartDemoFm.pas' {JvChartDemoForm},
StatsClasses in 'StatsClasses.pas', jvPenEditor;
{$R *.res}
begin
Application.Initialize;
Application.Title:='JvChartDemo';
Application.Scaled := true;
Application.CreateForm(TJvChartDemoForm, JvChartDemoForm);
Application.Run;
end.

View File

@ -1,621 +0,0 @@
object JvChartDemoForm: TJvChartDemoForm
Left = 436
Height = 453
Top = 278
Width = 785
Caption = 'JEDI JvChart Demo'
ClientHeight = 433
ClientWidth = 785
Color = clWindow
Menu = MainMenu1
OnCreate = FormCreate
OnDestroy = FormDestroy
OnResize = FormResize
Position = poScreenCenter
LCLVersion = '2.1.0.0'
object Chart: TJvChart
Left = 164
Height = 398
Top = 35
Width = 621
Align = alClient
Options.XAxisValuesPerDivision = 10
Options.XAxisLabelAlignment = taLeftJustify
Options.XAxisDateTimeMode = False
Options.XAxisDateTimeDivision = 0
Options.XAxisLegendSkipBy = 2
Options.PenCount = 3
Options.XGap = 0
Options.XOrigin = 0
Options.YOrigin = 0
Options.XStartOffset = 60
Options.PrimaryYAxis.YMax = 20
Options.PrimaryYAxis.YMin = 0
Options.PrimaryYAxis.YLegendDecimalPlaces = 1
Options.SecondaryYAxis.YMax = 140
Options.SecondaryYAxis.YMin = 0
Options.SecondaryYAxis.YLegendDecimalPlaces = 0
Options.SecondaryYAxis.DefaultYLegends = 60
Options.MouseDragObjects = False
Options.Legend = clChartLegendBelow
Options.LegendRowCount = 1
Options.XValueCount = 20
Options.HeaderFont.Color = clWindowText
Options.LegendFont.Color = clWindowText
Options.AxisFont.Color = clWindowText
Options.AxisTitleFont.Height = -16
Options.AxisTitleFont.Orientation = 900
Options.AxisTitleFont.Style = [fsBold]
Options.CursorColor = clBlack
Options.CursorStyle = psDot
OnBeginFloatingMarkerDrag = ChartBeginFloatingMarkerDrag
OnEndFloatingMarkerDrag = ChartEndFloatingMarkerDrag
end
object Splitter1: TSplitter
Left = 159
Height = 398
Top = 35
Width = 5
end
object PanelTop: TPanel
Left = 0
Height = 35
Top = 0
Width = 785
Align = alTop
ClientHeight = 35
ClientWidth = 785
Font.CharSet = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Verdana'
ParentFont = False
TabOrder = 0
object ButtonBarChart: TSpeedButton
Left = 5
Height = 25
Hint = 'Bar Chart'
Top = 5
Width = 25
Flat = True
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
04000000000000010000120B0000120B00001000000000000000000000000000
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333300030003
0003333377737773777333333333333333333FFFFFFFFFFFFFFF770000000000
0000777777777777777733039993BBB3CCC3337F737F737F737F37039993BBB3
CCC3377F737F737F737F33039993BBB3CCC33F7F737F737F737F77079997BBB7
CCC77777737773777377330399930003CCC3337F737F7773737F370399933333
CCC3377F737F3333737F330399933333CCC33F7F737FFFFF737F770700077777
CCC77777777777777377330333333333CCC3337F33333333737F370333333333
0003377F33333333777333033333333333333F7FFFFFFFFFFFFF770777777777
7777777777777777777733333333333333333333333333333333
}
GroupIndex = 1
NumGlyphs = 2
OnClick = ButtonBarChartClick
ShowHint = True
ParentShowHint = False
end
object ButtonLine: TSpeedButton
Left = 58
Height = 25
Hint = 'Line Chart'
Top = 5
Width = 25
Down = True
Flat = True
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
04000000000000010000120B0000120B00001000000000000000000000000000
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00337333733373
3373337F3F7F3F7F3F7F33737373737373733F7F7F7F7F7F7F7F770000000000
000077777777777777773303333333333333337FF333333F33333709333333C3
333337773F3FF373F333330393993C3C33333F7F7F77F7F7FFFF77079797977C
77777777777777777777330339339333C333337FF73373F37F33370C333C3933
933337773F3737F37FF33303C3C33939C9333F7F7F7FF7F777FF7707C7C77797
7C97777777777777777733033C3333333C33337F37F33333373F37033C333333
33C3377F37333333337333033333333333333F7FFFFFFFFFFFFF770777777777
7777777777777777777733333333333333333333333333333333
}
GroupIndex = 1
NumGlyphs = 2
OnClick = ButtonLineClick
ShowHint = True
ParentShowHint = False
end
object ButtonStackedBarAve: TSpeedButton
Left = 345
Height = 25
Hint = 'Stacked Bars with Average'
Top = 7
Width = 25
Enabled = False
Flat = True
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
0400000000000001000000000000000000001000000000000000000000000000
80000080000000808000800000008000800080800000C0C0C000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333300030003
0003333388838883888333333333333333333FFFFFFFFFFFFFFF880000000000
000088888888888888883303999399939993338F838F838F838F38039993BBB3
9993388F838F838F838F3303BBB3BBB399933F8F838F838F838F8808BBB8AAA8
999888888388838883883303AAA300039993338F838F8883838F3803AAA30003
BBB3388F838F3333838F3303AAA30003BBB33F8F838FFFFF838F880800080008
BBB88888888888888388330300030003AAA3338F33333333838F380300030003
0003388F33333333888333030003000300033F8FFFFFFFFFFFFF880888888888
8888888888888888888833333333333333333333333333333333
}
GroupIndex = 1
NumGlyphs = 2
OnClick = ButtonStackedBarAveClick
ShowHint = True
ParentShowHint = False
end
object ButtonStackedBar: TSpeedButton
Left = 111
Height = 25
Hint = 'Stacked Bars'
Top = 5
Width = 26
Flat = True
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
0400000000000001000000000000000000001000000000000000000000000000
80000080000000808000800000008000800080800000C0C0C000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333300030003
0003333388838883888333333333333333333FFFFFFFFFFFFFFF880000000000
000088888888888888883303999399939993338F838F838F838F38039993BBB3
BBB3388F838F838F838F3303BBB3BBB3BBB33F8F838F838F838F8808BBB8AAA8
BBB888888388838883883303AAA30003BBB3338F838F8883838F3803AAA33333
BBB3388F838F3333838F3303AAA33333BBB33F8F838FFFFF838F880800088888
BBB88888888888888388330333333333AAA3338F33333333838F380333333333
0003388F33333333888333033333333333333F8FFFFFFFFFFFFF880888888888
8888888888888888888833333333333333333333333333333333
}
GroupIndex = 1
NumGlyphs = 2
OnClick = ButtonStackedBarClick
ShowHint = True
ParentShowHint = False
end
object ButtonBarAve: TSpeedButton
Left = 32
Height = 25
Hint = 'Bar Chart with Average Line'
Top = 5
Width = 25
Flat = True
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
0400000000000001000000000000000000001000000000000000000000000000
80000080000000808000800000008000800080800000C0C0C000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333300030003
0003333388838883888333333333333333333FFFFFFFFFFFFFFF880000000000
0000888888888888888833039BA39BA39BA3338F838F838F838F38039BA39BA3
9BA3388F838F838F838F33039BA39BA39BA33F8F838F838F838F88089BA89BA8
9BA8888883888388838833039BA390A39BA3338F838F8883838F38039BA30B03
9BA3388F838F3333838F33039BA03B309BA33F8F838FFFFF838F88089B088B88
0BA8888888888888838833039033333390A3338F33333333838F380393333333
9BA3388F3333333388833303333333333B333F8FFFFFFFFFFFFF880888888888
8B88888888888888888833333333333333333333333333333333
}
GroupIndex = 1
NumGlyphs = 2
OnClick = ButtonBarAveClick
ShowHint = True
ParentShowHint = False
end
object ButtonPie: TSpeedButton
Left = 371
Height = 25
Hint = 'Show Pie Chart (one series only)'
Top = 7
Width = 25
Enabled = False
Flat = True
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
04000000000000010000120B0000120B00001000000000000000000000000000
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
3333333333FFFFF3333333333700073333333FFF3777773F3FFF00030990BB03
000077737337F373777733309990BBB0333333373337F3373F3333099990BBBB
033333733337F33373F337999990BBBBB73337F33337F33337F330999990BBBB
B03337F33337FFFFF7F3309999900000003337F33337777777F33099990A0CCC
C03337F3337373F337F3379990AAA0CCC733373F3733373F373333090AAAAA0C
033333737333337373333330AAAAAAA033333FF73F33333733FF00330AAAAA03
3000773373FFFF73377733333700073333333333377777333333333333333333
3333333333333333333333333333333333333333333333333333
}
GroupIndex = 1
NumGlyphs = 2
OnClick = ButtonPieClick
ShowHint = True
ParentShowHint = False
end
object ButtonMarkers: TSpeedButton
Left = 291
Height = 25
Hint = 'Show Markers'
Top = 7
Width = 25
Enabled = False
Flat = True
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
0400000000000001000000000000000000001000000000000000000000000000
80000080000000808000800000008000800080800000C0C0C000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00338333833383
3383338F3F8F3F8F3F8F33838383838383833F8F8F8F8F8F8F8F880000000000
000088888888888888883303333333333333338F33333333333338033393A333
333A388833333333333333033C333C3333333F8FFFFFFFFFFFFF88088888988C
888A88888888888888883303333333333333338F333333333333380A33A33333
3333388833333333333333033333333A33333F8FFFFFFFFFFFFF880888888898
889888888888888888883303933C33333333338F333333333333380333333333
3A33388F3333333333333303C333333333333F8FFFFFFFFFFFFF880888888888
8888888888888888888833333333333333333333333333333333
}
GroupIndex = 1
NumGlyphs = 2
OnClick = ButtonMarkersClick
ShowHint = True
ParentShowHint = False
end
object ButtonDeltaAverage: TSpeedButton
Left = 319
Height = 25
Hint = 'Delta Average'
Top = 7
Width = 25
Enabled = False
Flat = True
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
0400000000000001000000000000000000001000000000000000000000000000
80000080000000808000800000008000800080800000C0C0C000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333300030003
0003333388838883888333333333333333333FFFFFFFFFFFFFFF888000000000
0000888888888888888833333333033333333333333F33333333333333330333
33333333333F3333333333CCCCCC033333333333333F3333333388CCCCCC0333
33333333333F3333333333333333033333333333333F33333333333333330AAA
A3333333333F33333333333333330AAAA3333333333F33333333833333330333
33333333333F3333333333333333099999993333333F33333333333333330999
99993333333F3333333333333333033333333FFFFFFFFFFFFFFF888000000000
0000888888888888888833333333333333333333333333333333
}
GroupIndex = 1
NumGlyphs = 2
OnClick = ButtonDeltaAverageClick
ShowHint = True
ParentShowHint = False
end
object ButtonLineMarker: TSpeedButton
Left = 84
Height = 25
Hint = 'Line with Markers'
Top = 5
Width = 25
Flat = True
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
04000000000000010000120B0000120B00001000000000000000000000000000
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00337333733373
3373337F3F7F3F7F3F7F33737373737373733F7F7F7F7F7F7F7F770000000000
000077777777777777773303333333333333337FF333333F33333709333333C3
333337773F3FF373F333330393993C3C33333F7F7F77F7F7FFFF77079797977C
77777777777777777777330339339333C333337FF73373F37F33370C333C3933
933337773F3737F37FF33303C3C33939C9333F7F7F7FF7F777FF7707C7C79797
7C97777777777777777733033C3393933C33337F37F33333373F37033C333933
33C3377F3733333333733303CCC3393333C33F7FFFFFFFFFFFFF77077C777777
7CCC777777777777777733333333333333C33333333333333333
}
GroupIndex = 1
NumGlyphs = 2
OnClick = ButtonLineMarkerClick
ShowHint = True
ParentShowHint = False
end
object Label1: TLabel
Left = 398
Height = 16
Top = 10
Width = 210
Caption = '(TODO: Fix broken chart types)'
Enabled = False
ParentColor = False
end
object SpeedButtonTestMouseOver: TSpeedButton
Left = 139
Height = 25
Hint = 'Floating Markers Demo (new JAN 2005!)'
Top = 5
Width = 26
Flat = True
Glyph.Data = {
F6000000424DF600000000000000760000002800000010000000100000000100
0400000000008000000000000000000000001000000000000000000000000000
8000008000000080800080000000800080008080000080808000C0C0C0000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00D88888888888
888D79FFFFFFFFFFFF98999FFFFFFFFFF99979CFFFFFFFFFCF987FFCFFFFFFFF
CFF87FFCFFFFFFFCFFF87FFCFFFFFFFCFFF87FFFCFFFFFCFFFF87FFFCFFFFFCF
FFF87FFFCFFFFFCFFFF87FFFFCFFFCFFFFF87FFFFCFFFCFFFFF87FFFFFCFFCFF
FFF87FFFFFC9CFFFFFF87FFFFF999FFFFFF8D77777797777777D
}
GroupIndex = 1
OnClick = SpeedButtonTestMouseOverClick
ShowHint = True
ParentShowHint = False
end
object SpinEdit1: TSpinEdit
Left = 656
Height = 24
Top = 6
Width = 66
MaxValue = 1000
OnChange = SpinEdit1Change
TabOrder = 0
end
end
object ListBox1: TListBox
Left = 0
Height = 398
Top = 35
Width = 159
Align = alLeft
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Courier New'
Items.Strings = (
'<Pen Values>'
)
ItemHeight = 14
OnClick = ListBox1Click
OnDblClick = ListBox1DblClick
ParentFont = False
TabOrder = 1
Visible = False
end
object ColorDialog1: TColorDialog
Color = clBlack
CustomColors.Strings = (
'ColorA=000000'
'ColorB=000080'
'ColorC=008000'
'ColorD=008080'
'ColorE=800000'
'ColorF=800080'
'ColorG=808000'
'ColorH=808080'
'ColorI=C0C0C0'
'ColorJ=0000FF'
'ColorK=00FF00'
'ColorL=00FFFF'
'ColorM=FF0000'
'ColorN=FF00FF'
'ColorO=FFFF00'
'ColorP=FFFFFF'
'ColorQ=C0DCC0'
'ColorR=F0CAA6'
'ColorS=F0FBFF'
'ColorT=A4A0A0'
)
left = 504
top = 160
end
object FontDialog1: TFontDialog
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'System'
MinFontSize = 0
MaxFontSize = 0
Options = []
left = 592
top = 160
end
object MainMenu1: TMainMenu
left = 464
top = 48
object Demo1: TMenuItem
Caption = '&Demo'
object MenuItem2: TMenuItem
Caption = '-'
end
object mnuSetTitle: TMenuItem
Caption = 'Set Title...'
OnClick = mnuSetTitleClick
end
object mnuSetXAxisHeader: TMenuItem
Caption = 'Set X Axis Header...'
OnClick = mnuSetXAxisHeaderClick
end
object mnuSetYAxisHeader: TMenuItem
Caption = 'Set Y Axis Header...'
OnClick = mnuSetYAxisHeaderClick
end
object MenuItem3: TMenuItem
Caption = '-'
end
object mnuFonts: TMenuItem
Caption = 'Fonts'
object mnuSetHeaderFont: TMenuItem
Caption = 'Set Header Font...'
OnClick = mnuSetHeaderFontClick
end
object mnuSetAxisTitlefont: TMenuItem
Caption = 'Set Axis Title Font...'
OnClick = mnuSetAxisTitlefontClick
end
object mnuSetAxisFont: TMenuItem
Caption = 'Set Axis Label Font...'
OnClick = mnuSetAxisFontClick
end
object mnuSetLegendFont: TMenuItem
Caption = 'Set Legend Font...'
OnClick = mnuSetLegendFontClick
end
end
object mnuColors: TMenuItem
Caption = 'Colors'
object mnuSetPaperColor: TMenuItem
Caption = 'Set Paper Color...'
OnClick = mnuSetPaperColorClick
end
object mnuSetDivisionLineColor: TMenuItem
Caption = 'Set Division Line Color...'
OnClick = mnuSetDivisionLineColorClick
end
object mnuSetShadowColor: TMenuItem
Caption = 'Set Shadow Color..'
OnClick = mnuSetShadowColorClick
end
object mnuSetCursorColor: TMenuItem
Caption = 'Set Cursor Color...'
OnClick = mnuSetCursorColorClick
end
object mnuSetHintColor: TMenuItem
Caption = 'Set Hint Color...'
OnClick = mnuSetHintColorClick
end
end
object mnuSetLineWidths: TMenuItem
Caption = 'Line Widths'
object mnuSetAxisLineWidth: TMenuItem
Caption = 'Set Axis Line Width...'
OnClick = mnuSetAxisLineWidthClick
end
object mnuSetPenLineWidth: TMenuItem
Caption = 'Set Pen Line Width...'
OnClick = mnuSetPenLineWidthClick
end
end
object mnuPens: TMenuItem
Caption = 'Pens...'
OnClick = mnuPensClick
end
object mnuSetMarkerSize: TMenuItem
Caption = 'Marker Size...'
OnClick = mnuSetMarkerSizeClick
end
object mnuFillUnderLine: TMenuItem
Caption = 'Fill under line'
OnClick = mnuFillUnderLineClick
end
object mnuLegend: TMenuItem
Caption = 'Legend'
object mnuLegendNone: TMenuItem
Caption = 'None'
GroupIndex = 113
OnClick = mnuLegenClick
end
object mnuLegendRight: TMenuItem
Caption = 'Right'
GroupIndex = 113
OnClick = mnuLegenClick
end
object mnuLegendBelow: TMenuItem
Caption = 'Below'
Checked = True
GroupIndex = 113
OnClick = mnuLegenClick
end
end
object mnuSetXStartOffset: TMenuItem
Caption = 'X Start Offset...'
OnClick = mnuSetXStartOffsetClick
end
object N2: TMenuItem
Caption = '-'
end
object mnuScrolling: TMenuItem
Caption = 'Scrolling'
ShortCut = 16467
OnClick = mnuScrollingClick
end
object CopyToClipboard1: TMenuItem
Caption = 'Copy To Clipboard'
ShortCut = 16451
OnClick = CopyToClipboard1Click
end
object Print1: TMenuItem
Caption = 'Print Chart to Printer'
ShortCut = 16464
OnClick = Print1Click
end
object PrintOptions1: TMenuItem
Caption = '&Print Options'
OnClick = PrintOptions1Click
end
object N1: TMenuItem
Caption = '-'
end
object Generatenewrandomvalues1: TMenuItem
Caption = '&Generate new random values'
ShortCut = 16466
OnClick = Generatenewrandomvalues1Click
end
object ShowgapinLineChart1: TMenuItem
Caption = '&Show gap in Line Chart'
ShortCut = 16455
OnClick = ShowgapinLineChart1Click
end
object mnuDateTimeAxisMode: TMenuItem
Caption = 'Date/Time Axis Mode'
OnClick = mnuDateTimeAxisModeClick
end
object MenuNegValueTest: TMenuItem
AutoCheck = True
Caption = 'Use Positive and Negative Demo Values (-20..+20)'
OnClick = MenuNegValueTestClick
end
object mnuSecondaryAxisMode: TMenuItem
Caption = '&Plot Markers+Values using Alternate Scale (0-120%)'
OnClick = mnuSecondaryAxisModeClick
end
object N4: TMenuItem
Caption = '-'
end
object ShowDataInListbox1: TMenuItem
Caption = '&Show Data in listbox'
ShortCut = 16452
OnClick = ShowDataInListbox1Click
end
object LargeDataset576samples1: TMenuItem
Caption = '&Large Dataset (576 samples)'
ShortCut = 16460
OnClick = LargeDataset576samples1Click
end
object NewFeaturesfor20071: TMenuItem
Caption = 'New Features for 2007'
OnClick = NewFeaturesfor20071Click
end
end
object Help1: TMenuItem
Caption = '&Help'
object About1: TMenuItem
Caption = '&About JvChart Component'
ShortCut = 16449
OnClick = About1Click
end
end
end
object Timer1: TTimer
Enabled = False
Interval = 100
OnTimer = Timer1Timer
left = 344
top = 48
end
object PrinterSetupDialog1: TPrinterSetupDialog
left = 264
top = 160
end
object PrintDialog1: TPrintDialog
left = 392
top = 160
end
end

File diff suppressed because it is too large Load Diff

View File

@ -1,206 +0,0 @@
object PenEditorForm: TPenEditorForm
Left = 347
Height = 302
Top = 128
Width = 505
BorderStyle = bsDialog
Caption = 'PenEditorForm'
ClientHeight = 302
ClientWidth = 505
OnCreate = FormCreate
OnDestroy = FormDestroy
Position = poScreenCenter
LCLVersion = '2.1.0.0'
object btnPenColor: TButton
Left = 232
Height = 25
Top = 232
Width = 64
AutoSize = True
Caption = 'Color...'
OnClick = btnPenColorClick
TabOrder = 0
end
object rgPenStyle: TRadioGroup
Left = 224
Height = 168
Top = 40
Width = 121
AutoFill = True
Caption = 'Style'
ChildSizing.LeftRightSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 148
ClientWidth = 117
Items.Strings = (
'Solid'
'Dash'
'Dot'
'Dash-dot'
'Dash-dot-dot'
'Clear'
)
OnClick = rgPenStyleClick
TabOrder = 1
end
object ButtonPanel1: TButtonPanel
Left = 6
Height = 34
Top = 262
Width = 493
OKButton.Name = 'OKButton'
OKButton.DefaultCaption = True
HelpButton.Name = 'HelpButton'
HelpButton.DefaultCaption = True
CloseButton.Name = 'CloseButton'
CloseButton.DefaultCaption = True
CancelButton.Name = 'CancelButton'
CancelButton.DefaultCaption = True
TabOrder = 2
ShowButtons = [pbOK, pbCancel]
end
object lbPens: TListBox
Left = 8
Height = 216
Top = 8
Width = 200
ItemHeight = 0
OnDrawItem = lbPensDrawItem
OnSelectionChange = lbPensSelectionChange
Style = lbOwnerDrawFixed
TabOrder = 3
end
object btnAdd: TButton
Left = 11
Height = 25
Top = 232
Width = 48
AutoSize = True
Caption = 'Add'
OnClick = btnAddClick
TabOrder = 4
end
object btnDelete: TButton
Left = 64
Height = 25
Top = 232
Width = 59
AutoSize = True
Caption = 'Delete'
OnClick = btnDeleteClick
TabOrder = 5
end
object edPenLegend: TEdit
Left = 304
Height = 23
Top = 8
Width = 185
OnEditingDone = edPenLegendEditingDone
TabOrder = 6
end
object btnClear: TButton
Left = 128
Height = 25
Top = 232
Width = 53
AutoSize = True
Caption = 'Clear'
OnClick = btnClearClick
TabOrder = 7
end
object lblLegend: TLabel
Left = 224
Height = 15
Top = 8
Width = 39
Caption = 'Legend'
ParentColor = False
end
object ColorSample: TShape
Left = 304
Height = 25
Top = 232
Width = 25
end
object rgMarker: TRadioGroup
Left = 376
Height = 136
Top = 40
Width = 112
AutoFill = True
Caption = 'Marker'
ChildSizing.LeftRightSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 116
ClientWidth = 108
Items.Strings = (
'None'
'Diamond'
'Circle'
'Square'
'Cross'
)
OnClick = rgMarkerClick
TabOrder = 8
end
object rgAxis: TRadioGroup
Left = 376
Height = 64
Top = 192
Width = 113
AutoFill = True
Caption = 'y Axis'
ChildSizing.LeftRightSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 44
ClientWidth = 109
Items.Strings = (
'Primary'
'Secondary'
)
OnClick = rgAxisClick
TabOrder = 9
end
object ColorDialog: TColorDialog
Color = clBlack
CustomColors.Strings = (
'ColorA=000000'
'ColorB=000080'
'ColorC=008000'
'ColorD=008080'
'ColorE=800000'
'ColorF=800080'
'ColorG=808000'
'ColorH=808080'
'ColorI=C0C0C0'
'ColorJ=0000FF'
'ColorK=00FF00'
'ColorL=00FFFF'
'ColorM=FF0000'
'ColorN=FF00FF'
'ColorO=FFFF00'
'ColorP=FFFFFF'
'ColorQ=C0DCC0'
'ColorR=F0CAA6'
'ColorS=F0FBFF'
'ColorT=A4A0A0'
)
left = 144
top = 88
end
end

View File

@ -1,349 +0,0 @@
unit jvPenEditor;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
ButtonPanel, Contnrs, Types,
JvChart;
type
TPenObj = class
Legend: String;
Color: TColor;
Style: TPenStyle;
Marker: TJvChartPenMarkerKind;
SecondaryAxis: Boolean;
end;
{ TPenEditorForm }
TPenEditorForm = class(TForm)
btnPenColor: TButton;
btnAdd: TButton;
btnDelete: TButton;
btnClear: TButton;
ButtonPanel1: TButtonPanel;
ColorDialog: TColorDialog;
edPenLegend: TEdit;
lblLegend: TLabel;
lbPens: TListBox;
rgAxis: TRadioGroup;
rgMarker: TRadioGroup;
rgPenStyle: TRadioGroup;
ColorSample: TShape;
procedure btnAddClick(Sender: TObject);
procedure btnClearClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
procedure btnPenColorClick(Sender: TObject);
procedure edPenLegendEditingDone(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure lbPensDrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
procedure lbPensSelectionChange(Sender: TObject; User: boolean);
procedure rgAxisClick(Sender: TObject);
procedure rgMarkerClick(Sender: TObject);
procedure rgPenStyleClick(Sender: TObject);
private
FPens: TObjectList;
procedure ControlsToPen(AIndex: Integer);
procedure PenToControls(AIndex: Integer);
function GetCurrentPen: TPenObj;
public
procedure ApplyToChart(AChart: TJvChart);
procedure UseChart(AChart: TJvChart);
end;
implementation
{$R *.lfm}
uses
Math, LCLType;
{ TPenEditorForm }
procedure TPenEditorForm.ApplyToChart(AChart: TJvChart);
var
i: Integer;
pen: TPenObj;
begin
Assert(AChart <> nil);
AChart.Options.PenCount := FPens.Count;
AChart.Options.PenLegends.Clear;
for i := 0 to FPens.Count - 1 do
begin
pen := TPenObj(FPens[i]);
AChart.Options.PenLegends.Add(pen.Legend);
AChart.Options.PenColor[i] := pen.Color;
AChart.Options.PenStyle[i] := pen.Style;
AChart.Options.PenMarkerKind[i] := pen.Marker;
end;
end;
procedure TPenEditorForm.btnAddClick(Sender: TObject);
var
pen: TPenObj;
begin
pen := TPenObj.Create;
pen.Legend := '';
pen.Style := psSolid;
pen.Color := clBlack;
pen.Marker := pmkNone;
pen.SecondaryAxis := false;
FPens.Add(pen);
lbPens.Items.Add('');
end;
procedure TPenEditorForm.btnClearClick(Sender: TObject);
begin
FPens.Clear;
lbPens.Items.Clear;
end;
procedure TPenEditorForm.btnDeleteClick(Sender: TObject);
begin
if lbPens.ItemIndex = -1 then
exit;
FPens.Delete(lbPens.ItemIndex);
lbPens.Items.Delete(lbPens.ItemIndex);
end;
procedure TPenEditorForm.btnPenColorClick(Sender: TObject);
var
pen: TPenObj;
begin
pen := GetCurrentPen;
if pen = nil then
exit;
ColorDialog.Color := pen.Color;
if ColorDialog.Execute then begin
pen.Color := ColorDialog.Color;
lbPens.Invalidate;
end;
end;
procedure TPenEditorForm.ControlsToPen(AIndex: Integer);
var
pen: TPenObj;
begin
if AIndex = -1 then
exit;
pen := TPenObj(FPens[AIndex]);
pen.Legend := edPenLegend.Text;
if rgPenStyle.ItemIndex = rgPenStyle.Items.Count-1 then
pen.Style := psClear
else
pen.Style := TPenStyle(rgPenStyle.ItemIndex);
pen.Marker := TJvChartPenMarkerKind(rgMarker.ItemIndex);
pen.Color := ColorSample.Brush.Color;
pen.SecondaryAxis := rgAxis.ItemIndex = 1;
end;
procedure TPenEditorForm.edPenLegendEditingDone(Sender: TObject);
var
pen: TPenObj;
begin
pen := GetCurrentPen;
if pen = nil then
exit;
pen.Legend := edPenLegend.Text;
lbPens.Invalidate;
end;
procedure TPenEditorForm.FormCreate(Sender: TObject);
begin
FPens := TObjectList.Create;
end;
procedure TPenEditorForm.FormDestroy(Sender: TObject);
begin
FPens.Free;
end;
function TPenEditorForm.GetCurrentPen: TPenObj;
begin
if lbPens.ItemIndex = -1 then
Result := nil
else
Result := TPenObj(FPens[lbPens.ItemIndex]);
end;
procedure TPenEditorForm.lbPensDrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
var
R: TRect;
pen: TPenObj;
x, y, dx, dy: Integer;
begin
pen := TPenObj(FPens[Index]);
lbPens.Canvas.Font.Assign(lbPens.Font);
// Background
if [odSelected, odFocused] * State <> [] then
begin
lbPens.Canvas.Brush.Color := clHighlight;
lbPens.Canvas.Font.Color := clHighlightText;
end else
begin
lbPens.Canvas.Brush.Color := lbPens.Color;
lbPens.Canvas.Font.Color := lbPens.Font.Color;
end;
lbPens.Canvas.FillRect(ARect);
// Line
R := ARect;
R.Right := R.Left + 50;
InflateRect(R, -2, -2);
lbPens.Canvas.Pen.Style := pen.Style;
lbPens.Canvas.Pen.Color := pen.Color;
lbPens.Canvas.Line(R.Left, (R.Top + R.Bottom) div 2, R.Right, (R.Top + R.Bottom) div 2);
// Marker
x := (R.Left + R.Right) div 2;
y := (R.Top + R.Bottom) div 2;
dx := (R.Bottom - R.Top) div 2;
dy := dx;
lbPens.Canvas.Pen.Style := psSolid;
case pen.Marker of
pmkNone: ;
pmkDiamond:
begin
lbPens.Canvas.Brush.Color := pen.Color;
lbPens.Canvas.Brush.Style := bsSolid;
lbPens.Canvas.Polygon([Point(x, y-dy), Point(x-dx, y), Point(x, y+dy), Point(x+dx, y)]);
end;
pmkCircle:
begin
lbPens.Canvas.Brush.Style := bsClear;
lbPens.Canvas.Ellipse(x-dx, y-dy, x+dx, y+dy);
end;
pmkSquare:
begin
lbPens.Canvas.Brush.Style := bsClear;
lbPens.Canvas.Rectangle(x-dx, y-dy, x+dx, y+dy);
end;
pmkCross:
begin
lbPens.Canvas.Line(x-dx, y, x+dx, y);
lbPens.Canvas.Line(x, y-dy, x, y+dy);
end;
else
raise Exception.Create('Marker style not supported.');
end;
// Text
lbPens.Canvas.Brush.Style := bsClear;
lbPens.Canvas.TextOut(R.Right + 2, (R.Top + R.Bottom - lbPens.Canvas.TextHeight('Rg')) div 2, pen.Legend);
// Focus rect
if odFocused in State then
lbPens.Canvas.DrawFocusRect(ARect);
end;
procedure TPenEditorForm.lbPensSelectionChange(Sender: TObject; User: boolean);
begin
PenToControls(lbPens.ItemIndex);
end;
procedure TPenEditorForm.PenToControls(AIndex: Integer);
var
pen: TPenObj;
begin
if AIndex = -1 then
exit;
pen := TPenObj(FPens[AIndex]);
edPenLegend.Text := pen.Legend;
if pen.Style = psClear then
rgPenStyle.ItemIndex := rgPenStyle.Items.Count-1
else
rgPenStyle.ItemIndex := ord(pen.Style);
rgMarker.ItemIndex := ord(pen.Marker);
rgAxis.ItemIndex := IfThen(pen.SecondaryAxis, 1, 0);
ColorSample.Brush.Color := pen.Color;
edPenLegend.Enabled := true;
rgPenStyle.Enabled := true;
rgMarker.Enabled := true;
rgAxis.Enabled := true;
btnPenColor.Enabled := true;
ColorSample.Visible := true;
end;
procedure TPenEditorForm.rgAxisClick(Sender: TObject);
var
pen: TPenObj;
begin
pen := GetCurrentPen;
if pen = nil then
exit;
pen.SecondaryAxis := rgAxis.ItemIndex = 1;
end;
procedure TPenEditorForm.rgMarkerClick(Sender: TObject);
var
pen: TPenObj;
begin
pen := GetCurrentPen;
if pen = nil then
exit;
pen.Marker := TJvChartPenMarkerKind(rgMarker.ItemIndex);
lbPens.Invalidate;
end;
procedure TPenEditorForm.rgPenStyleClick(Sender: TObject);
var
pen: TPenObj;
begin
pen := GetCurrentPen;
if pen = nil then
exit;
if rgPenStyle.itemIndex = rgPenStyle.Items.Count -1 then
pen.Style := psClear
else
pen.Style := TPenStyle(rgPenStyle.ItemIndex);
lbPens.Invalidate;
end;
procedure TPenEditorForm.UseChart(AChart: TJvChart);
var
i: Integer;
pen: TPenObj;
begin
Assert(AChart <> nil);
FPens.Clear;
lbPens.Items.Clear;
for i := 0 to AChart.Options.PenLegends.Count - 1 do
begin
pen := TPenObj.Create;
pen.Legend := AChart.Options.PenLegends[i];
pen.Color := AChart.Options.PenColor[i];
pen.Style := AChart.Options.PenStyle[i];
pen.Marker := AChart.Options.PenMarkerKind[i];
pen.SecondaryAxis := AChart.Options.PenSecondaryAxisFlag[i];;
FPens.Add(pen);
lbPens.Items.Add('');
end;
edPenLegend.Enabled := false;
rgPenStyle.Enabled := false;
rgMarker.Enabled := false;
rgAxis.Enabled := false;
btnPenColor.Enabled := false;
ColorSample.Visible := false;
end;
end.

View File

@ -1,258 +0,0 @@
{-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.
The Original Code is: JvChartDemoFm.Pas, released on 2002-10-04.
The Initial Developer of the Original Code is AABsoft and Mårten Henrichson.
(C) 1996 AABsoft and Mårten Henrichson.
All Rights Reserved.
Contributor(s): -
Last Modified: 2004-01-07
Modified 2003 Warren Postma
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.delphi-jedi.org
Description:
TStatArray - Statistics, Rolling average helper class.
Known Issues:
This version is part of JvChartDemo.
-----------------------------------------------------------------------------}
{$MODE OBJFPC}{$H+}
unit StatsClasses;
interface
type
TStatArray = class
protected
//FFirst:Boolean;
FGrows: Boolean; // false=rolling average (circular buffer mode), true=average or sd of any number of samples (array grows without limit)
FValues: Array of Double;
FLength: Integer; // Array absolute size (may still be no data even if this is >0)
FIndex: Integer; // Where will the next sample be stored into the array?
FCount: Integer; // How many valid samples are in the array right now?
procedure SetLen(aLength:Integer);
public
constructor Create; overload;
constructor Create(initialLength:Integer); overload;
destructor Destroy; override;
procedure AddValue(aValue:Double);
function Average:Double;
function StandardDeviation:Double;
property Grows:Boolean read FGrows write FGrows; // false=rolling average, true=average ALL samples (grows to fit)
property Length:Integer read FLength write SetLen;
property Count:Integer read FCount;
//property First:Boolean read FFirst;
procedure Reset; // Clear everything!
end;
implementation
uses
SysUtils, // FloatToStr
Math; // VCL's statistics routines. StdDev, etc.
// Begin Rolling Average
constructor TStatArray.Create; // overload;
begin
//FFirst := true;
FLength := 0;
FIndex := 0;
FCount:= 0;
FGrows := true;
SetLength(FValues,0);
end;
procedure TStatArray.Reset;
var
i:Integer;
begin
FIndex := 0;
FCount := 0;
for i := 0 to FLength-1 do begin
FValues[i] := -999.0; // debug helper.
end;
//FFirst := true;
end;
constructor TStatArray.Create(initialLength:Integer); // overload;
begin
// FFirst := true;
SetLength(FValues,initialLength);
if (initialLength>0) then
FGrows := false
else
FGrows := true;
FLength := initialLength;
FIndex := 0;
FCount:= 0;
end;
destructor TStatArray.Destroy;
begin
SetLength(FValues,0);
end;
function TStatArray.Average:Double;
var
last,i:Integer;
sum:Double;
begin
if FCount <= 0 then begin
result := 0;
end else begin
sum := 0;
if (FCount>FLength) then
last :=FLength-1
else
last :=FCount-1;
for i := 0 to last do begin
sum := sum + FValues[i];
end;
result := sum / (last+1);
end;
end;
function TStatArray.StandardDeviation:Double;
var
i:Integer;
// sum:Double;
TempArray:Array of Double;
begin
if (FCount <= 0) then
result := 0
else if (FCount >= FLength) then begin
result := Math.StdDev( FValues )
end else begin
SetLength(TempArray,FCount);
for i := 0 to FCount-1 do begin
TempArray[i] := FValues[i];
end;
result := Math.StdDev( TempArray );
SetLength(TempArray,0);
end;
end;
procedure TStatArray.AddValue(aValue:Double);
//var
// i:Integer;
begin
(*if FFirst then begin
FFirst := false;
FIndex := 0;
FValues[0] := aValue;
FCount := 1;
end else begin*)
// First time in we might need to create an array:
if FIndex>=Length then begin
Assert(FGrows); // Illegal condition.
FLength := FIndex+1;
SetLength( FValues,FLength); // uninitialized, as of yet.
end;
FValues[FIndex] := aValue;
Inc(FIndex);
Inc(FCount);
if (not FGrows) then begin // circular?
if (FIndex>=FLength) then begin
FIndex := 0;
//FCount := FLength;//FCount does not exceed FLength in wraparounds.
end;
end else begin // grow after, in doublings of size, scales better!
if (FIndex>=FLength) then begin
FLength := FLength * 2;
SetLength( FValues,FLength); // uninitialized, as of yet.
{$ifdef DEBUG_ASSERTIONS}
Assert(FLength<20000); // Debug limit
{$endif}
end;
end;
end;
procedure TStatArray.SetLen(aLength:Integer);
begin
if(aLength<1) then
aLength := 1;
FLength := aLength;
SetLength(FValues, FLength);
end;
// End Stats
{$ifdef UNIT_TESTS}
procedure StatsUnitTests;
var
diff:Double;
a1:TStatArray;
procedure _outs(s:String);
begin
OutputDebugString(PChar(s));
end;
procedure _outd(d:Double);
begin
OutputDebugString(PChar(FloatToStr(d)));
end;
begin
_outs('StatsUnitTests begins');
a1 := TStatArray.Create(0); // Growing array.
a1.AddValue( 3.5 );
a1.AddValue( 1.5 );
a1.AddValue( 25.5 );
a1.AddValue( 100.5 );
_outd( a1.Average );
diff := Abs(((3.5+1.5+25.5+100.5)/4.0)-a1.Average);
Assert(diff<0.001);
a1.Reset;
Assert(Abs(a1.Average)<0.0001);
a1.AddValue( 3.5 );
a1.AddValue( 1.5 );
a1.AddValue( 25.5 );
a1.AddValue( 100.5 );
_outd( a1.Average );
diff := Abs(((3.5+1.5+25.5+100.5)/4.0)-a1.Average);
Assert(diff<0.001);
_outd( a1.StandardDeviation );
Assert(trunc(a1.StandardDeviation)=46);
_outs('StatsUnitTests ends');
end;
initialization
StatsUnitTests;
{$endif}
end.

View File

@ -16,7 +16,7 @@
TimeLine, OutlookBar, Thumbnail viewer, ImageViewer, ImageListViewer, OwnerDrawViewer"/>
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
<Version Major="1" Release="6"/>
<Files Count="14">
<Files Count="13">
<Item1>
<Filename Value="..\run\JvCustomControls\jvtimeline.pas"/>
<UnitName Value="JvTimeLine"/>
@ -69,10 +69,6 @@ TimeLine, OutlookBar, Thumbnail viewer, ImageViewer, ImageListViewer, OwnerDrawV
<Filename Value="..\run\JvCustomControls\jvgammapanel.pas"/>
<UnitName Value="JvGammaPanel"/>
</Item13>
<Item14>
<Filename Value="..\run\JvCustomControls\jvchart.pas"/>
<UnitName Value="JvChart"/>
</Item14>
</Files>
<RequiredPkgs Count="2">
<Item1>

File diff suppressed because it is too large Load Diff