mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-11-04 05:59:49 +01:00 
			
		
		
		
	TAChart: Allow to use reticule for area and bar series.
* Move TLineSeries.GetNearestPoint implementation to TBasicPointSeries class * Add UseReticule property, default it to true for line series * Update demo git-svn-id: trunk@22011 -
This commit is contained in:
		
							parent
							
								
									6603b29d3b
								
							
						
					
					
						commit
						63b043a6c4
					
				@ -51,17 +51,17 @@ object Form1: TForm1
 | 
			
		||||
    Align = alClient
 | 
			
		||||
    ParentColor = False
 | 
			
		||||
    object Chart1LineHor: TLine
 | 
			
		||||
      ShowInLegend = False
 | 
			
		||||
      Pen.Style = psDash
 | 
			
		||||
      Position = 0
 | 
			
		||||
      SeriesColor = clBlack
 | 
			
		||||
      ShowInLegend = False
 | 
			
		||||
    end
 | 
			
		||||
    object Chart1LineVert: TLine
 | 
			
		||||
      ShowInLegend = False
 | 
			
		||||
      LineStyle = lsVertical
 | 
			
		||||
      Pen.Style = psDash
 | 
			
		||||
      Position = 0
 | 
			
		||||
      SeriesColor = clBlack
 | 
			
		||||
      ShowInLegend = False
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
  object Panel1: TPanel
 | 
			
		||||
 | 
			
		||||
@ -1,84 +1,87 @@
 | 
			
		||||
{ This is an automatically generated lazarus resource file }
 | 
			
		||||
 | 
			
		||||
LazarusResources.Add('TForm1','FORMDATA',[
 | 
			
		||||
  'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'U'#1#6'Height'#3#238#1#3'Top'#3#225#0#5'W'
 | 
			
		||||
  +'idth'#3'I'#2#7'Caption'#6#5'Form1'#12'ClientHeight'#3#238#1#11'ClientWidth'
 | 
			
		||||
  +#3'I'#2#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.29'#0#6'TCha'
 | 
			
		||||
  +'rt'#6'Chart1'#4'Left'#2#0#6'Height'#3#136#1#3'Top'#2#0#5'Width'#3'I'#2#8'Ax'
 | 
			
		||||
  +'isList'#14#1#9'Alignment'#7#7'calLeft'#10'Grid.Color'#7#6'clGray'#6'Offset'
 | 
			
		||||
  +#2#0#5'Scale'#2#1#17'Title.Font.Height'#2#245#15'Title.Font.Name'#6#13'MS Sa'
 | 
			
		||||
  +'ns Serif'#0#1#9'Alignment'#7#9'calBottom'#10'Grid.Color'#7#6'clGray'#6'Offs'
 | 
			
		||||
  +'et'#2#0#5'Scale'#2#1#17'Title.Font.Height'#2#245#15'Title.Font.Name'#6#13'M'
 | 
			
		||||
  +'S Sans Serif'#0#0#16'Foot.Brush.Color'#7#9'clBtnFace'#15'Foot.Font.Color'#7
 | 
			
		||||
  +#5'clRed'#16'Foot.Font.Height'#2#243#14'Foot.Font.Name'#6#13'MS Sans Serif'
 | 
			
		||||
  +#15'Foot.Font.Style'#11#6'fsBold'#0#17'Foot.Text.Strings'#1#6#25'This a Left'
 | 
			
		||||
  +'Aligned Footer'#0#18'Legend.Font.Height'#2#245#16'Legend.Font.Name'#6#13'MS'
 | 
			
		||||
  +' Sans Serif'#17'Title.Brush.Color'#7#9'clBtnFace'#16'Title.Font.Color'#7#6
 | 
			
		||||
  +'clBlue'#17'Title.Font.Height'#2#245#15'Title.Font.Name'#6#13'MS Sans Serif'
 | 
			
		||||
  +#18'Title.Text.Strings'#1#6#20'Centered Chart Title'#0#13'Title.Visible'#9#5
 | 
			
		||||
  +'Align'#7#8'alClient'#11'ParentColor'#8#0#5'TLine'#13'Chart1LineHor'#12'Show'
 | 
			
		||||
  +'InLegend'#8#9'Pen.Style'#7#6'psDash'#8'Position'#2#0#11'SeriesColor'#7#7'cl'
 | 
			
		||||
  +'Black'#0#0#5'TLine'#14'Chart1LineVert'#12'ShowInLegend'#8#9'LineStyle'#7#10
 | 
			
		||||
  +'lsVertical'#9'Pen.Style'#7#6'psDash'#8'Position'#2#0#11'SeriesColor'#7#7'cl'
 | 
			
		||||
  +'Black'#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'f'#3'Top'#3#136#1#5
 | 
			
		||||
  +'Width'#3'I'#2#5'Align'#7#8'alBottom'#12'ClientHeight'#2'f'#11'ClientWidth'#3
 | 
			
		||||
  +'I'#2#8'TabOrder'#2#0#0#6'TLabel'#6'lblAdd'#4'Left'#2#13#6'Height'#2#14#3'To'
 | 
			
		||||
  +'p'#2#10#5'Width'#2#24#7'Caption'#6#4'Add:'#11'ParentColor'#8#0#0#6'TLabel'#8
 | 
			
		||||
  +'lblClear'#4'Left'#2#13#6'Height'#2#14#3'Top'#2'('#5'Width'#2#30#7'Caption'#6
 | 
			
		||||
  +#6'Clear:'#11'ParentColor'#8#0#0#6'TLabel'#11'lblAddCount'#4'Left'#3' '#1#6
 | 
			
		||||
  +'Height'#2#14#3'Top'#2#8#5'Width'#2':'#7'Caption'#6#12'Multiple add'#11'Pare'
 | 
			
		||||
  +'ntColor'#8#0#0#6'TLabel'#12'lblMarkStyle'#4'Left'#2'0'#6'Height'#2#14#3'Top'
 | 
			
		||||
  +#2'P'#5'Width'#2'N'#7'Caption'#6#15'Add with marks:'#11'ParentColor'#8#0#0#6
 | 
			
		||||
  +'TLabel'#11'lblReticule'#4'Left'#3'h'#1#6'Height'#2#14#3'Top'#2'P'#5'Width'#2
 | 
			
		||||
  +'+'#7'Caption'#6#9'Reticule:'#11'ParentColor'#8#0#0#7'TButton'#9'btnAddPie'#4
 | 
			
		||||
  +'Left'#2'0'#6'Height'#2#24#3'Top'#2#8#5'Width'#2'4'#25'BorderSpacing.InnerBo'
 | 
			
		||||
  +'rder'#2#4#7'Caption'#6#3'Pie'#7'OnClick'#7#14'btnAddPieClick'#8'TabOrder'#2
 | 
			
		||||
  +#0#0#0#7'TButton'#10'btnAddLine'#4'Left'#3#216#0#6'Height'#2#24#3'Top'#2#8#5
 | 
			
		||||
  +'Width'#2'4'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#4'Line'#7'OnClic'
 | 
			
		||||
  +'k'#7#15'btnAddLineClick'#8'TabOrder'#2#1#0#0#7'TButton'#10'btnAddArea'#4'Le'
 | 
			
		||||
  +'ft'#2'h'#6'Height'#2#24#3'Top'#2#8#5'Width'#2'4'#25'BorderSpacing.InnerBord'
 | 
			
		||||
  +'er'#2#4#7'Caption'#6#4'Area'#7'OnClick'#7#15'btnAddAreaClick'#8'TabOrder'#2
 | 
			
		||||
  +#2#0#0#7'TButton'#9'btnAddBar'#4'Left'#3#160#0#6'Height'#2#24#3'Top'#2#8#5'W'
 | 
			
		||||
  +'idth'#2'4'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'Bar'#7'OnClick'
 | 
			
		||||
  +#7#14'btnAddBarClick'#8'TabOrder'#2#3#0#0#9'TCheckBox'#8'cbLegend'#4'Left'#3
 | 
			
		||||
  +#128#1#6'Height'#2#17#3'Top'#2#8#5'Width'#2'7'#7'Caption'#6#6'Legend'#8'OnCh'
 | 
			
		||||
  +'ange'#7#14'cbLegendChange'#8'TabOrder'#2#4#0#0#9'TCheckBox'#12'cbBottomAxis'
 | 
			
		||||
  +#4'Left'#3#128#1#6'Height'#2#17#3'Top'#2#24#5'Width'#2'M'#7'Caption'#6#11'Bo'
 | 
			
		||||
  +'ttom Axis'#7'Checked'#9#8'OnChange'#7#18'cbBottomAxisChange'#5'State'#7#9'c'
 | 
			
		||||
  +'bChecked'#8'TabOrder'#2#5#0#0#9'TCheckBox'#10'cbLeftAxis'#4'Left'#3#128#1#6
 | 
			
		||||
  +'Height'#2#17#3'Top'#2'('#5'Width'#2'>'#7'Caption'#6#9'Left Axis'#7'Checked'
 | 
			
		||||
  +#9#8'OnChange'#7#16'cbLeftAxisChange'#5'State'#7#9'cbChecked'#8'TabOrder'#2#6
 | 
			
		||||
  +#0#0#9'TCheckBox'#7'cbTitle'#4'Left'#3#240#1#6'Height'#2#17#3'Top'#2#8#5'Wid'
 | 
			
		||||
  +'th'#2'('#7'Caption'#6#5'Title'#7'Checked'#9#8'OnChange'#7#13'cbTitleChange'
 | 
			
		||||
  +#5'State'#7#9'cbChecked'#8'TabOrder'#2#7#0#0#9'TCheckBox'#8'cbFooter'#4'Left'
 | 
			
		||||
  +#3#240#1#6'Height'#2#17#3'Top'#2#24#5'Width'#2'4'#7'Caption'#6#6'Footer'#8'O'
 | 
			
		||||
  +'nChange'#7#14'cbFooterChange'#8'TabOrder'#2#8#0#0#9'TCheckBox'#10'cbInverte'
 | 
			
		||||
  +'d'#4'Left'#3#240#1#6'Height'#2#17#3'Top'#2'('#5'Width'#2'>'#7'Caption'#6#8
 | 
			
		||||
  +'Inverted'#8'OnChange'#7#16'cbInvertedChange'#8'TabOrder'#2#9#0#0#7'TButton'
 | 
			
		||||
  +#11'btnClearBar'#4'Left'#3#160#0#6'Height'#2#24#3'Top'#2'&'#5'Width'#2'4'#25
 | 
			
		||||
  +'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'Bar'#7'OnClick'#7#16'btnClear'
 | 
			
		||||
  +'BarClick'#8'TabOrder'#2#10#0#0#7'TButton'#12'btnClearArea'#4'Left'#2'h'#6'H'
 | 
			
		||||
  +'eight'#2#24#3'Top'#2'&'#5'Width'#2'4'#25'BorderSpacing.InnerBorder'#2#4#7'C'
 | 
			
		||||
  +'aption'#6#4'Area'#7'OnClick'#7#17'btnClearAreaClick'#8'TabOrder'#2#11#0#0#7
 | 
			
		||||
  +'TButton'#12'btnClearLine'#4'Left'#3#216#0#6'Height'#2#24#3'Top'#2'&'#5'Widt'
 | 
			
		||||
  +'h'#2'4'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#4'Line'#7'OnClick'#7
 | 
			
		||||
  +#17'btnClearLineClick'#8'TabOrder'#2#12#0#0#7'TButton'#11'btnClearPie'#4'Lef'
 | 
			
		||||
  +'t'#2'0'#6'Height'#2#24#3'Top'#2'&'#5'Width'#2'4'#25'BorderSpacing.InnerBord'
 | 
			
		||||
  +'er'#2#4#7'Caption'#6#3'Pie'#7'OnClick'#7#16'btnClearPieClick'#8'TabOrder'#2
 | 
			
		||||
  ,#13#0#0#9'TSpinEdit'#10'edAddCount'#4'Left'#3' '#1#6'Height'#2#21#3'Top'#2#24
 | 
			
		||||
  +#5'Width'#2'Z'#8'MaxValue'#4'@B'#15#0#8'MinValue'#2#1#8'TabOrder'#2#14#5'Val'
 | 
			
		||||
  +'ue'#2#1#0#0#9'TCheckBox'#18'cbShowGridCheckBox'#4'Left'#3#128#1#6'Height'#2
 | 
			
		||||
  +#17#3'Top'#2'8'#5'Width'#2'F'#7'Caption'#6#10'Show grid '#7'Checked'#9#8'OnC'
 | 
			
		||||
  +'hange'#7#24'cbShowGridCheckBoxChange'#5'State'#7#9'cbChecked'#8'TabOrder'#2
 | 
			
		||||
  +#15#0#0#9'TCheckBox'#16'cbShowAxisTitles'#4'Left'#3#240#1#6'Height'#2#17#3'T'
 | 
			
		||||
  +'op'#2'8'#5'Width'#2'B'#7'Caption'#6#11'Axis titles'#8'OnChange'#7#22'cbShow'
 | 
			
		||||
  +'AxisTitlesChange'#8'TabOrder'#2#16#0#0#9'TComboBox'#11'cbMarkStyle'#4'Left'
 | 
			
		||||
  +#3#132#0#6'Height'#2#21#3'Top'#2'L'#5'Width'#3#136#0#10'ItemHeight'#2#13#9'I'
 | 
			
		||||
  +'temIndex'#2#5#13'Items.Strings'#1#6#9'smsCustom'#6#7'smsNone'#6#8'smsValue'
 | 
			
		||||
  +#6#10'smsPercent'#6#8'smsLabel'#6#15'smsLabelPercent'#6#13'smsLabelValue'#6#9
 | 
			
		||||
  +'smsLegend'#6#15'smsPercentTotal'#6#20'smsLabelPercentTotal'#6#9'smsXValue'#0
 | 
			
		||||
  +#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#17#4'Text'#6#15'smsLabelPercent'
 | 
			
		||||
  +#0#0#9'TComboBox'#10'cbReticule'#4'Left'#3#160#1#6'Height'#2#21#3'Top'#2'L'#5
 | 
			
		||||
  +'Width'#3#136#0#10'ItemHeight'#2#13#9'ItemIndex'#2#0#13'Items.Strings'#1#6#6
 | 
			
		||||
  +'rmNone'#6#10'rmVertical'#6#12'rmHorizontal'#6#7'rmCross'#0#8'OnChange'#7#16
 | 
			
		||||
  +'cbReticuleChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#18#4'Text'#6#6
 | 
			
		||||
  +'rmNone'#0#0#0#0
 | 
			
		||||
  +#5#0#0#0#0#0#0#0#0#0#0#5'Scale'#5#0#0#0#0#0#0#0#128#255'?'#17'Title.Font.Hei'
 | 
			
		||||
  +'ght'#2#245#15'Title.Font.Name'#6#13'MS Sans Serif'#0#1#9'Alignment'#7#9'cal'
 | 
			
		||||
  +'Bottom'#10'Grid.Color'#7#6'clGray'#6'Offset'#5#0#0#0#0#0#0#0#0#0#0#5'Scale'
 | 
			
		||||
  +#5#0#0#0#0#0#0#0#128#255'?'#17'Title.Font.Height'#2#245#15'Title.Font.Name'#6
 | 
			
		||||
  +#13'MS Sans Serif'#0#0#16'Foot.Brush.Color'#7#9'clBtnFace'#15'Foot.Font.Colo'
 | 
			
		||||
  +'r'#7#5'clRed'#16'Foot.Font.Height'#2#243#14'Foot.Font.Name'#6#13'MS Sans Se'
 | 
			
		||||
  +'rif'#15'Foot.Font.Style'#11#6'fsBold'#0#17'Foot.Text.Strings'#1#6#25'This a'
 | 
			
		||||
  +' LeftAligned Footer'#0#18'Legend.Font.Height'#2#245#16'Legend.Font.Name'#6
 | 
			
		||||
  +#13'MS Sans Serif'#17'Title.Brush.Color'#7#9'clBtnFace'#16'Title.Font.Color'
 | 
			
		||||
  +#7#6'clBlue'#17'Title.Font.Height'#2#245#15'Title.Font.Name'#6#13'MS Sans Se'
 | 
			
		||||
  +'rif'#18'Title.Text.Strings'#1#6#20'Centered Chart Title'#0#13'Title.Visible'
 | 
			
		||||
  +#9#5'Align'#7#8'alClient'#11'ParentColor'#8#0#5'TLine'#13'Chart1LineHor'#9'P'
 | 
			
		||||
  +'en.Style'#7#6'psDash'#8'Position'#5#0#0#0#0#0#0#0#0#0#0#11'SeriesColor'#7#7
 | 
			
		||||
  +'clBlack'#12'ShowInLegend'#8#0#0#5'TLine'#14'Chart1LineVert'#9'LineStyle'#7
 | 
			
		||||
  +#10'lsVertical'#9'Pen.Style'#7#6'psDash'#8'Position'#5#0#0#0#0#0#0#0#0#0#0#11
 | 
			
		||||
  +'SeriesColor'#7#7'clBlack'#12'ShowInLegend'#8#0#0#0#6'TPanel'#6'Panel1'#4'Le'
 | 
			
		||||
  +'ft'#2#0#6'Height'#2'f'#3'Top'#3#136#1#5'Width'#3'I'#2#5'Align'#7#8'alBottom'
 | 
			
		||||
  +#12'ClientHeight'#2'f'#11'ClientWidth'#3'I'#2#8'TabOrder'#2#0#0#6'TLabel'#6
 | 
			
		||||
  +'lblAdd'#4'Left'#2#13#6'Height'#2#14#3'Top'#2#10#5'Width'#2#24#7'Caption'#6#4
 | 
			
		||||
  +'Add:'#11'ParentColor'#8#0#0#6'TLabel'#8'lblClear'#4'Left'#2#13#6'Height'#2
 | 
			
		||||
  +#14#3'Top'#2'('#5'Width'#2#30#7'Caption'#6#6'Clear:'#11'ParentColor'#8#0#0#6
 | 
			
		||||
  +'TLabel'#11'lblAddCount'#4'Left'#3' '#1#6'Height'#2#14#3'Top'#2#8#5'Width'#2
 | 
			
		||||
  +':'#7'Caption'#6#12'Multiple add'#11'ParentColor'#8#0#0#6'TLabel'#12'lblMark'
 | 
			
		||||
  +'Style'#4'Left'#2'0'#6'Height'#2#14#3'Top'#2'P'#5'Width'#2'N'#7'Caption'#6#15
 | 
			
		||||
  +'Add with marks:'#11'ParentColor'#8#0#0#6'TLabel'#11'lblReticule'#4'Left'#3
 | 
			
		||||
  +'h'#1#6'Height'#2#14#3'Top'#2'P'#5'Width'#2'+'#7'Caption'#6#9'Reticule:'#11
 | 
			
		||||
  +'ParentColor'#8#0#0#7'TButton'#9'btnAddPie'#4'Left'#2'0'#6'Height'#2#24#3'To'
 | 
			
		||||
  +'p'#2#8#5'Width'#2'4'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'Pie'#7
 | 
			
		||||
  +'OnClick'#7#14'btnAddPieClick'#8'TabOrder'#2#0#0#0#7'TButton'#10'btnAddLine'
 | 
			
		||||
  +#4'Left'#3#216#0#6'Height'#2#24#3'Top'#2#8#5'Width'#2'4'#25'BorderSpacing.In'
 | 
			
		||||
  +'nerBorder'#2#4#7'Caption'#6#4'Line'#7'OnClick'#7#15'btnAddLineClick'#8'TabO'
 | 
			
		||||
  +'rder'#2#1#0#0#7'TButton'#10'btnAddArea'#4'Left'#2'h'#6'Height'#2#24#3'Top'#2
 | 
			
		||||
  +#8#5'Width'#2'4'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#4'Area'#7'On'
 | 
			
		||||
  +'Click'#7#15'btnAddAreaClick'#8'TabOrder'#2#2#0#0#7'TButton'#9'btnAddBar'#4
 | 
			
		||||
  +'Left'#3#160#0#6'Height'#2#24#3'Top'#2#8#5'Width'#2'4'#25'BorderSpacing.Inne'
 | 
			
		||||
  +'rBorder'#2#4#7'Caption'#6#3'Bar'#7'OnClick'#7#14'btnAddBarClick'#8'TabOrder'
 | 
			
		||||
  +#2#3#0#0#9'TCheckBox'#8'cbLegend'#4'Left'#3#128#1#6'Height'#2#17#3'Top'#2#8#5
 | 
			
		||||
  +'Width'#2'7'#7'Caption'#6#6'Legend'#8'OnChange'#7#14'cbLegendChange'#8'TabOr'
 | 
			
		||||
  +'der'#2#4#0#0#9'TCheckBox'#12'cbBottomAxis'#4'Left'#3#128#1#6'Height'#2#17#3
 | 
			
		||||
  +'Top'#2#24#5'Width'#2'M'#7'Caption'#6#11'Bottom Axis'#7'Checked'#9#8'OnChang'
 | 
			
		||||
  +'e'#7#18'cbBottomAxisChange'#5'State'#7#9'cbChecked'#8'TabOrder'#2#5#0#0#9'T'
 | 
			
		||||
  +'CheckBox'#10'cbLeftAxis'#4'Left'#3#128#1#6'Height'#2#17#3'Top'#2'('#5'Width'
 | 
			
		||||
  +#2'>'#7'Caption'#6#9'Left Axis'#7'Checked'#9#8'OnChange'#7#16'cbLeftAxisChan'
 | 
			
		||||
  +'ge'#5'State'#7#9'cbChecked'#8'TabOrder'#2#6#0#0#9'TCheckBox'#7'cbTitle'#4'L'
 | 
			
		||||
  +'eft'#3#240#1#6'Height'#2#17#3'Top'#2#8#5'Width'#2'('#7'Caption'#6#5'Title'#7
 | 
			
		||||
  +'Checked'#9#8'OnChange'#7#13'cbTitleChange'#5'State'#7#9'cbChecked'#8'TabOrd'
 | 
			
		||||
  +'er'#2#7#0#0#9'TCheckBox'#8'cbFooter'#4'Left'#3#240#1#6'Height'#2#17#3'Top'#2
 | 
			
		||||
  +#24#5'Width'#2'4'#7'Caption'#6#6'Footer'#8'OnChange'#7#14'cbFooterChange'#8
 | 
			
		||||
  +'TabOrder'#2#8#0#0#9'TCheckBox'#10'cbInverted'#4'Left'#3#240#1#6'Height'#2#17
 | 
			
		||||
  +#3'Top'#2'('#5'Width'#2'>'#7'Caption'#6#8'Inverted'#8'OnChange'#7#16'cbInver'
 | 
			
		||||
  +'tedChange'#8'TabOrder'#2#9#0#0#7'TButton'#11'btnClearBar'#4'Left'#3#160#0#6
 | 
			
		||||
  +'Height'#2#24#3'Top'#2'&'#5'Width'#2'4'#25'BorderSpacing.InnerBorder'#2#4#7
 | 
			
		||||
  +'Caption'#6#3'Bar'#7'OnClick'#7#16'btnClearBarClick'#8'TabOrder'#2#10#0#0#7
 | 
			
		||||
  +'TButton'#12'btnClearArea'#4'Left'#2'h'#6'Height'#2#24#3'Top'#2'&'#5'Width'#2
 | 
			
		||||
  +'4'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#4'Area'#7'OnClick'#7#17'b'
 | 
			
		||||
  +'tnClearAreaClick'#8'TabOrder'#2#11#0#0#7'TButton'#12'btnClearLine'#4'Left'#3
 | 
			
		||||
  +#216#0#6'Height'#2#24#3'Top'#2'&'#5'Width'#2'4'#25'BorderSpacing.InnerBorder'
 | 
			
		||||
  +#2#4#7'Caption'#6#4'Line'#7'OnClick'#7#17'btnClearLineClick'#8'TabOrder'#2#12
 | 
			
		||||
  +#0#0#7'TButton'#11'btnClearPie'#4'Left'#2'0'#6'Height'#2#24#3'Top'#2'&'#5'Wi'
 | 
			
		||||
  ,'dth'#2'4'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'Pie'#7'OnClick'#7
 | 
			
		||||
  +#16'btnClearPieClick'#8'TabOrder'#2#13#0#0#9'TSpinEdit'#10'edAddCount'#4'Lef'
 | 
			
		||||
  +'t'#3' '#1#6'Height'#2#21#3'Top'#2#24#5'Width'#2'Z'#8'MaxValue'#4'@B'#15#0#8
 | 
			
		||||
  +'MinValue'#2#1#8'TabOrder'#2#14#5'Value'#2#1#0#0#9'TCheckBox'#18'cbShowGridC'
 | 
			
		||||
  +'heckBox'#4'Left'#3#128#1#6'Height'#2#17#3'Top'#2'8'#5'Width'#2'F'#7'Caption'
 | 
			
		||||
  +#6#10'Show grid '#7'Checked'#9#8'OnChange'#7#24'cbShowGridCheckBoxChange'#5
 | 
			
		||||
  +'State'#7#9'cbChecked'#8'TabOrder'#2#15#0#0#9'TCheckBox'#16'cbShowAxisTitles'
 | 
			
		||||
  +#4'Left'#3#240#1#6'Height'#2#17#3'Top'#2'8'#5'Width'#2'B'#7'Caption'#6#11'Ax'
 | 
			
		||||
  +'is titles'#8'OnChange'#7#22'cbShowAxisTitlesChange'#8'TabOrder'#2#16#0#0#9
 | 
			
		||||
  +'TComboBox'#11'cbMarkStyle'#4'Left'#3#132#0#6'Height'#2#21#3'Top'#2'L'#5'Wid'
 | 
			
		||||
  +'th'#3#136#0#10'ItemHeight'#2#13#9'ItemIndex'#2#5#13'Items.Strings'#1#6#9'sm'
 | 
			
		||||
  +'sCustom'#6#7'smsNone'#6#8'smsValue'#6#10'smsPercent'#6#8'smsLabel'#6#15'sms'
 | 
			
		||||
  +'LabelPercent'#6#13'smsLabelValue'#6#9'smsLegend'#6#15'smsPercentTotal'#6#20
 | 
			
		||||
  +'smsLabelPercentTotal'#6#9'smsXValue'#0#5'Style'#7#14'csDropDownList'#8'TabO'
 | 
			
		||||
  +'rder'#2#17#4'Text'#6#15'smsLabelPercent'#0#0#9'TComboBox'#10'cbReticule'#4
 | 
			
		||||
  +'Left'#3#160#1#6'Height'#2#21#3'Top'#2'L'#5'Width'#3#136#0#10'ItemHeight'#2
 | 
			
		||||
  +#13#9'ItemIndex'#2#0#13'Items.Strings'#1#6#6'rmNone'#6#10'rmVertical'#6#12'r'
 | 
			
		||||
  +'mHorizontal'#6#7'rmCross'#0#8'OnChange'#7#16'cbReticuleChange'#5'Style'#7#14
 | 
			
		||||
  +'csDropDownList'#8'TabOrder'#2#18#4'Text'#6#6'rmNone'#0#0#0#0
 | 
			
		||||
]);
 | 
			
		||||
 | 
			
		||||
@ -102,6 +102,7 @@ begin
 | 
			
		||||
    else Y3 := Y3 - random(5);
 | 
			
		||||
    FArea.AddXY(x3, y3, '', clTAColor);
 | 
			
		||||
  end;
 | 
			
		||||
  FArea.UseReticule := true;
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
procedure TForm1.btnAddBarClick(Sender: TObject);
 | 
			
		||||
 | 
			
		||||
@ -40,12 +40,22 @@ type
 | 
			
		||||
  TBasicPointSeries = class(TChartSeries)
 | 
			
		||||
  private
 | 
			
		||||
    FPrevLabelRect: TRect;
 | 
			
		||||
    procedure SetUseReticule(AValue: Boolean);
 | 
			
		||||
 | 
			
		||||
  protected
 | 
			
		||||
    FUseReticule: Boolean;
 | 
			
		||||
 | 
			
		||||
    procedure DrawLabel(
 | 
			
		||||
      ACanvas: TCanvas; AIndex: Integer; const ADataPoint: TPoint;
 | 
			
		||||
      ADown: Boolean);
 | 
			
		||||
    procedure DrawLabels(ACanvas: TCanvas; ADrawDown: Boolean);
 | 
			
		||||
    function GetNearestPoint(
 | 
			
		||||
      ADistFunc: TPointDistFunc; const APoint: TPoint;
 | 
			
		||||
      out AIndex: Integer; out AImg: TPoint; out AValue: TDoublePoint): Boolean;
 | 
			
		||||
      override;
 | 
			
		||||
    procedure UpdateMargins(ACanvas: TCanvas; var AMargins: TRect); override;
 | 
			
		||||
    property UseReticule: Boolean
 | 
			
		||||
      read FUseReticule write SetUseReticule default false;
 | 
			
		||||
  end;
 | 
			
		||||
 | 
			
		||||
  { TBarSeries }
 | 
			
		||||
@ -78,6 +88,7 @@ type
 | 
			
		||||
    property Depth;
 | 
			
		||||
    property SeriesColor;
 | 
			
		||||
    property Source;
 | 
			
		||||
    property UseReticule;
 | 
			
		||||
  end;
 | 
			
		||||
 | 
			
		||||
  { TPieSeries }
 | 
			
		||||
@ -131,6 +142,7 @@ type
 | 
			
		||||
    property SeriesColor;
 | 
			
		||||
    property Source;
 | 
			
		||||
    property Stairs: Boolean read FStairs write SetStairs default false;
 | 
			
		||||
    property UseReticule;
 | 
			
		||||
  end;
 | 
			
		||||
 | 
			
		||||
  TSeriesPointerDrawEvent = procedure (
 | 
			
		||||
@ -158,10 +170,6 @@ type
 | 
			
		||||
  protected
 | 
			
		||||
    procedure AfterAdd; override;
 | 
			
		||||
    procedure GetLegendItems(AItems: TChartLegendItems); override;
 | 
			
		||||
    function GetNearestPoint(
 | 
			
		||||
      ADistFunc: TPointDistFunc; const APoint: TPoint;
 | 
			
		||||
      out AIndex: Integer; out AImg: TPoint; out AValue: TDoublePoint): Boolean;
 | 
			
		||||
      override;
 | 
			
		||||
    function GetSeriesColor: TColor; override;
 | 
			
		||||
    procedure SetSeriesColor(const AValue: TColor); override;
 | 
			
		||||
  public
 | 
			
		||||
@ -186,6 +194,7 @@ type
 | 
			
		||||
    property ShowPoints: Boolean
 | 
			
		||||
      read FShowPoints write SetShowPoints default false;
 | 
			
		||||
    property Source;
 | 
			
		||||
    property UseReticule default true;
 | 
			
		||||
  end;
 | 
			
		||||
 | 
			
		||||
  // 'TSerie' alias is for compatibility with older versions of TAChart.
 | 
			
		||||
@ -324,6 +333,7 @@ begin
 | 
			
		||||
  FLinePen.OnChange := @StyleChanged;
 | 
			
		||||
  FLineType := ltFromPrevious;
 | 
			
		||||
  FPointer := TSeriesPointer.Create(FChart);
 | 
			
		||||
  FUseReticule := true;
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
destructor TLineSeries.Destroy;
 | 
			
		||||
@ -391,28 +401,6 @@ begin
 | 
			
		||||
  AItems.Add(TLegendItemLine.Create(LinePen, Title));
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
function TLineSeries.GetNearestPoint(
 | 
			
		||||
  ADistFunc: TPointDistFunc; const APoint: TPoint;
 | 
			
		||||
  out AIndex: Integer; out AImg: TPoint; out AValue: TDoublePoint): Boolean;
 | 
			
		||||
var
 | 
			
		||||
  dist, minDist, i: Integer;
 | 
			
		||||
  pt: TPoint;
 | 
			
		||||
begin
 | 
			
		||||
  Result := Count > 0;
 | 
			
		||||
  minDist := MaxInt;
 | 
			
		||||
  for i := 0 to Count - 1 do begin
 | 
			
		||||
    pt := Point(GetXImgValue(i), GetYImgValue(i));
 | 
			
		||||
    dist := ADistFunc(APoint, pt);
 | 
			
		||||
    if dist >= minDist then
 | 
			
		||||
      Continue;
 | 
			
		||||
    minDist := dist;
 | 
			
		||||
    AIndex := i;
 | 
			
		||||
    AImg := pt;
 | 
			
		||||
    AValue.X := GetXValue(i);
 | 
			
		||||
    AValue.Y := GetYValue(i);
 | 
			
		||||
  end;
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
function TLineSeries.GetSeriesColor: TColor;
 | 
			
		||||
begin
 | 
			
		||||
  Result := FLinePen.Color;
 | 
			
		||||
@ -598,6 +586,35 @@ begin
 | 
			
		||||
  end;
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
function TBasicPointSeries.GetNearestPoint(
 | 
			
		||||
  ADistFunc: TPointDistFunc; const APoint: TPoint;
 | 
			
		||||
  out AIndex: Integer; out AImg: TPoint; out AValue: TDoublePoint): Boolean;
 | 
			
		||||
var
 | 
			
		||||
  dist, minDist, i: Integer;
 | 
			
		||||
  pt: TPoint;
 | 
			
		||||
begin
 | 
			
		||||
  Result := UseReticule and (Count > 0);
 | 
			
		||||
  minDist := MaxInt;
 | 
			
		||||
  for i := 0 to Count - 1 do begin
 | 
			
		||||
    pt := Point(GetXImgValue(i), GetYImgValue(i));
 | 
			
		||||
    dist := ADistFunc(APoint, pt);
 | 
			
		||||
    if dist >= minDist then
 | 
			
		||||
      Continue;
 | 
			
		||||
    minDist := dist;
 | 
			
		||||
    AIndex := i;
 | 
			
		||||
    AImg := pt;
 | 
			
		||||
    AValue.X := GetXValue(i);
 | 
			
		||||
    AValue.Y := GetYValue(i);
 | 
			
		||||
  end;
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
procedure TBasicPointSeries.SetUseReticule(AValue: Boolean);
 | 
			
		||||
begin
 | 
			
		||||
  if FUseReticule = AValue then exit;
 | 
			
		||||
  FUseReticule := AValue;
 | 
			
		||||
  UpdateParentChart;
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
procedure TBasicPointSeries.UpdateMargins(ACanvas: TCanvas; var AMargins: TRect);
 | 
			
		||||
var
 | 
			
		||||
  h: Integer;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user