mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 12:19:16 +02:00
TAChart: Refactoring of TChartCombobox and demo.
git-svn-id: trunk@54123 -
This commit is contained in:
parent
349fdc7200
commit
efd873b33e
@ -48,7 +48,11 @@ object Form1: TForm1
|
||||
Title = 'Line'
|
||||
ZPosition = 1
|
||||
LinePen.Color = clBlue
|
||||
LinePen.Width = 2
|
||||
Pointer.Brush.Color = clSkyBlue
|
||||
Pointer.HorizSize = 5
|
||||
Pointer.Style = psCircle
|
||||
Pointer.VertSize = 5
|
||||
ShowPoints = True
|
||||
Source = RandomChartSource1
|
||||
end
|
||||
@ -144,7 +148,7 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
OnChange = CbLineSerLinePenStyleChange
|
||||
OnChange = LinePenChange
|
||||
end
|
||||
object CbLineSerLinePenWidth: TChartComboBox
|
||||
AnchorSideLeft.Control = CbLineSerLinePenStyle
|
||||
@ -165,7 +169,7 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
OnChange = CbLineSerLinePenWidthChange
|
||||
OnChange = LinePenChange
|
||||
end
|
||||
object Label1: TLabel
|
||||
AnchorSideLeft.Control = GbLineSerLines
|
||||
@ -192,7 +196,7 @@ object Form1: TForm1
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object CbLineSerPenColor: TColorBox
|
||||
object CbLineSerLinePenColor: TColorBox
|
||||
AnchorSideLeft.Control = CbLineSerLinePenWidth
|
||||
AnchorSideTop.Control = CbLineSerLinePenWidth
|
||||
AnchorSideTop.Side = asrBottom
|
||||
@ -208,13 +212,13 @@ object Form1: TForm1
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 10
|
||||
ItemHeight = 16
|
||||
OnChange = CbLineSerPenColorChange
|
||||
OnChange = LinePenChange
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
end
|
||||
object Label4: TLabel
|
||||
AnchorSideLeft.Control = Label1
|
||||
AnchorSideTop.Control = CbLineSerPenColor
|
||||
AnchorSideTop.Control = CbLineSerLinePenColor
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 8
|
||||
Height = 15
|
||||
@ -234,7 +238,7 @@ object Form1: TForm1
|
||||
Anchors = []
|
||||
Caption = 'Show'
|
||||
Checked = True
|
||||
OnChange = CbShowLinesChange
|
||||
OnChange = LinePenChange
|
||||
ParentFont = False
|
||||
State = cbChecked
|
||||
TabOrder = 0
|
||||
@ -272,7 +276,7 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
OnChange = CbLineSerPointerStyleChange
|
||||
OnChange = LinePointerChange
|
||||
end
|
||||
object Label5: TLabel
|
||||
AnchorSideLeft.Control = GbLineSerPointer
|
||||
@ -326,7 +330,7 @@ object Form1: TForm1
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Top = 8
|
||||
ItemHeight = 16
|
||||
OnChange = CbLineSerPointerBorderColorChange
|
||||
OnChange = LinePointerChange
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
end
|
||||
@ -344,7 +348,7 @@ object Form1: TForm1
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Top = 8
|
||||
ItemHeight = 16
|
||||
OnChange = CbLineSerPointerBrushColorChange
|
||||
OnChange = LinePointerChange
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
@ -360,7 +364,7 @@ object Form1: TForm1
|
||||
Alignment = taRightJustify
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 10
|
||||
OnChange = EdLineSerPointerSizeChange
|
||||
OnChange = LinePointerChange
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
Value = 4
|
||||
@ -387,7 +391,7 @@ object Form1: TForm1
|
||||
Anchors = []
|
||||
Caption = 'Show'
|
||||
Checked = True
|
||||
OnChange = CbShowPointsChange
|
||||
OnChange = LinePointerChange
|
||||
ParentFont = False
|
||||
State = cbChecked
|
||||
TabOrder = 0
|
||||
@ -424,7 +428,7 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
OnChange = CbBarSerPenStyleChange
|
||||
OnChange = BarPenChange
|
||||
end
|
||||
object CbBarSerPenWidth: TChartComboBox
|
||||
AnchorSideTop.Control = CbBarSerPenStyle
|
||||
@ -443,7 +447,7 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
OnChange = CbBarSerPenWidthChange
|
||||
OnChange = BarPenChange
|
||||
end
|
||||
object Label8: TLabel
|
||||
AnchorSideLeft.Control = GbBarSerPen
|
||||
@ -484,7 +488,7 @@ object Form1: TForm1
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 10
|
||||
ItemHeight = 16
|
||||
OnChange = CbBarSerPenColorChange
|
||||
OnChange = BarPenChange
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
@ -543,7 +547,7 @@ object Form1: TForm1
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 10
|
||||
ItemHeight = 16
|
||||
OnChange = CbBarSerBrushColorChange
|
||||
OnChange = BarBrushChange
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
@ -574,12 +578,12 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
OnChange = CbBarSerBrushStyleChange
|
||||
OnChange = BarBrushChange
|
||||
end
|
||||
end
|
||||
end
|
||||
object Page3: TPage
|
||||
object GbBarSerBrush1: TGroupBox
|
||||
object GbAreaSerBrush: TGroupBox
|
||||
Left = 0
|
||||
Height = 82
|
||||
Top = 4
|
||||
@ -595,7 +599,7 @@ object Form1: TForm1
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
object Label13: TLabel
|
||||
AnchorSideLeft.Control = GbBarSerBrush1
|
||||
AnchorSideLeft.Control = GbAreaSerBrush
|
||||
AnchorSideTop.Control = CbAreaSerBrushColor
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 8
|
||||
@ -620,7 +624,7 @@ object Form1: TForm1
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 10
|
||||
ItemHeight = 16
|
||||
OnChange = CbAreaSerBrushColorChange
|
||||
OnChange = AreaBrushChange
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
@ -637,7 +641,7 @@ object Form1: TForm1
|
||||
ParentFont = False
|
||||
end
|
||||
object CbAreaSerBrushStyle: TChartComboBox
|
||||
AnchorSideTop.Control = GbBarSerBrush1
|
||||
AnchorSideTop.Control = GbAreaSerBrush
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 80
|
||||
Height = 22
|
||||
@ -651,10 +655,10 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
OnChange = CbAreaSerBrushStyleChange
|
||||
OnChange = AreaBrushChange
|
||||
end
|
||||
end
|
||||
object GbBarSerPen1: TGroupBox
|
||||
object GbAreaSerContour: TGroupBox
|
||||
Left = 0
|
||||
Height = 112
|
||||
Top = 94
|
||||
@ -670,7 +674,7 @@ object Form1: TForm1
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
object CbAreaSerContourStyle: TChartComboBox
|
||||
AnchorSideTop.Control = GbBarSerPen1
|
||||
AnchorSideTop.Control = GbAreaSerContour
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 80
|
||||
Height = 22
|
||||
@ -683,7 +687,7 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
OnChange = CbAreaSerContourStyleChange
|
||||
OnChange = AreaContourChange
|
||||
end
|
||||
object CbAreaSerContourWidth: TChartComboBox
|
||||
AnchorSideTop.Control = CbAreaSerContourStyle
|
||||
@ -702,10 +706,10 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
OnChange = CbAreaSerContourWidthChange
|
||||
OnChange = AreaContourChange
|
||||
end
|
||||
object Label11: TLabel
|
||||
AnchorSideLeft.Control = GbBarSerPen1
|
||||
AnchorSideLeft.Control = GbAreaSerContour
|
||||
AnchorSideTop.Control = CbAreaSerContourStyle
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 8
|
||||
@ -742,7 +746,7 @@ object Form1: TForm1
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 10
|
||||
ItemHeight = 16
|
||||
OnChange = CbAreaSerContourColorChange
|
||||
OnChange = AreaContourChange
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
@ -759,7 +763,7 @@ object Form1: TForm1
|
||||
ParentFont = False
|
||||
end
|
||||
end
|
||||
object GbBarSerPen2: TGroupBox
|
||||
object GbAreaSerLines: TGroupBox
|
||||
Left = 0
|
||||
Height = 112
|
||||
Top = 214
|
||||
@ -775,7 +779,7 @@ object Form1: TForm1
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
object CbAreaSerLinesStyle: TChartComboBox
|
||||
AnchorSideTop.Control = GbBarSerPen2
|
||||
AnchorSideTop.Control = GbAreaSerLines
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 80
|
||||
Height = 22
|
||||
@ -788,7 +792,7 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
OnChange = CbAreaSerLinesStyleChange
|
||||
OnChange = AreaLinesChange
|
||||
end
|
||||
object CbAreaSerLinesWidth: TChartComboBox
|
||||
AnchorSideTop.Control = CbAreaSerLinesStyle
|
||||
@ -807,10 +811,10 @@ object Form1: TForm1
|
||||
ItemIndex = 0
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
OnChange = CbAreaSerLinesWidthChange
|
||||
OnChange = AreaLinesChange
|
||||
end
|
||||
object Label18: TLabel
|
||||
AnchorSideLeft.Control = GbBarSerPen2
|
||||
AnchorSideLeft.Control = GbAreaSerLines
|
||||
AnchorSideTop.Control = CbAreaSerLinesStyle
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 8
|
||||
@ -847,7 +851,7 @@ object Form1: TForm1
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 10
|
||||
ItemHeight = 16
|
||||
OnChange = CbAreaSerLinesColorChange
|
||||
OnChange = AreaLinesChange
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
|
@ -40,13 +40,13 @@ type
|
||||
CbBarSerBrushStyle: TChartComboBox;
|
||||
ChartListbox1: TChartListbox;
|
||||
CbShow: TCheckBox;
|
||||
CbLineSerPenColor: TColorBox;
|
||||
CbLineSerLinePenColor: TColorBox;
|
||||
ChartToolset1: TChartToolset;
|
||||
ChartToolset1DataPointClickTool1: TDataPointClickTool;
|
||||
CbShowPoints: TCheckBox;
|
||||
GbBarSerBrush1: TGroupBox;
|
||||
GbBarSerPen1: TGroupBox;
|
||||
GbBarSerPen2: TGroupBox;
|
||||
GbAreaSerBrush: TGroupBox;
|
||||
GbAreaSerContour: TGroupBox;
|
||||
GbAreaSerLines: TGroupBox;
|
||||
GbLineSerLines: TGroupBox;
|
||||
GbBarSerPen: TGroupBox;
|
||||
GbLineSerPointer: TGroupBox;
|
||||
@ -83,34 +83,20 @@ type
|
||||
RandomChartSource3: TRandomChartSource;
|
||||
EdLineSerPointerSize: TSpinEdit;
|
||||
Splitter1: TSplitter;
|
||||
procedure CbAreaSerBrushColorChange(Sender: TObject);
|
||||
procedure CbAreaSerBrushStyleChange(Sender: TObject);
|
||||
procedure CbAreaSerContourColorChange(Sender: TObject);
|
||||
procedure CbAreaSerContourStyleChange(Sender: TObject);
|
||||
procedure CbAreaSerContourWidthChange(Sender: TObject);
|
||||
procedure CbAreaSerLinesColorChange(Sender: TObject);
|
||||
procedure CbAreaSerLinesStyleChange(Sender: TObject);
|
||||
procedure CbAreaSerLinesWidthChange(Sender: TObject);
|
||||
procedure CbBarSerBrushColorChange(Sender: TObject);
|
||||
procedure CbBarSerBrushStyleChange(Sender: TObject);
|
||||
procedure CbBarSerPenStyleChange(Sender: TObject);
|
||||
procedure CbBarSerPenWidthChange(Sender: TObject);
|
||||
procedure CbBarSerPenColorChange(Sender: TObject);
|
||||
procedure CbLineSerPointerBorderColorChange(Sender: TObject);
|
||||
procedure CbLineSerLinePenStyleChange(Sender: TObject);
|
||||
procedure CbLineSerLinePenWidthChange(Sender: TObject);
|
||||
procedure CbLineSerPenColorChange(Sender: TObject);
|
||||
procedure CbLineSerPointerBrushColorChange(Sender: TObject);
|
||||
procedure CbLineSerPointerStyleChange(Sender: TObject);
|
||||
procedure AreaBrushChange(Sender: TObject);
|
||||
procedure AreaContourChange(Sender: TObject);
|
||||
procedure AreaLinesChange(Sender: TObject);
|
||||
procedure BarBrushChange(Sender: TObject);
|
||||
procedure BarPenChange(Sender: TObject);
|
||||
procedure LinePenChange(Sender: TObject);
|
||||
procedure LinePointerChange(Sender: TObject);
|
||||
procedure CbShowChange(Sender: TObject);
|
||||
procedure CbShowLinesChange(Sender: TObject);
|
||||
procedure CbShowPointsChange(Sender: TObject);
|
||||
procedure ChartListbox1Click(Sender: TObject);
|
||||
procedure ChartToolset1DataPointClickTool1PointClick(ATool: TChartTool;
|
||||
APoint: TPoint);
|
||||
procedure EdLineSerPointerSizeChange(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
private
|
||||
FLockChanges: Integer;
|
||||
|
||||
public
|
||||
|
||||
@ -124,174 +110,115 @@ implementation
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
FPCanvas, TACustomSeries;
|
||||
FPCanvas, TAChartUtils, TACustomSeries;
|
||||
|
||||
|
||||
{ TAreaSeries }
|
||||
|
||||
procedure TForm1.CbAreaSerBrushColorChange(Sender: TObject);
|
||||
procedure TForm1.AreaBrushChange(Sender: TObject);
|
||||
var
|
||||
ser: TAreaSeries;
|
||||
begin
|
||||
if FLockChanges > 0 then
|
||||
exit;
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TAreaSeries;
|
||||
ser.AreaBrush.Color := CbAreaSerBrushColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbAreaSerBrushStyleChange(Sender: TObject);
|
||||
var
|
||||
ser: TAreaSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TAreaSeries;
|
||||
ser.AreaBrush.Style := CbAreaSerBrushStyle.BrushStyle;
|
||||
if CbAreaSerBrushStyle.BrushStyle = bsImage then
|
||||
// Must be AFTER assigning Brush.Style.
|
||||
ser.AreaBrush.Style := CbAreaserBrushStyle.BrushStyle;
|
||||
if CbAreaSerBrushStyle.BrushStyle in [bsImage, bsPattern] then
|
||||
// Must be AFTER assigning brush style because that sets Brush.Bitmap to nil
|
||||
ser.AreaBrush.Bitmap := CbAreaSerBrushStyle.BrushBitmap;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbAreaSerContourColorChange(Sender: TObject);
|
||||
procedure TForm1.AreaContourChange(Sender: TObject);
|
||||
var
|
||||
ser: TAreaSeries;
|
||||
begin
|
||||
if FLockChanges > 0 then
|
||||
exit;
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TAreaSeries;
|
||||
ser.AreaContourPen.Color := CbAreaSerContourColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbAreaSerContourStyleChange(Sender: TObject);
|
||||
var
|
||||
ser: TAreaSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TAreaSeries;
|
||||
ser.AreaContourPen.Style := CbAreaSerContourStyle.PenStyle;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbAreaSerContourWidthChange(Sender: TObject);
|
||||
var
|
||||
ser: TAreaSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TAreaSeries;
|
||||
ser.AreaContourPen.Width := CbAreaSerContourWidth.PenWidth;
|
||||
ser.AreaContourPen.Style := CbAreaSerContourStyle.PenStyle;
|
||||
if ser.AreaContourPen.Style = psPattern then
|
||||
CbAreaSerContourStyle.SetPenPattern(ser.AreaContourPen);
|
||||
end;
|
||||
|
||||
procedure TForm1.CbAreaSerLinesColorChange(Sender: TObject);
|
||||
procedure TForm1.AreaLinesChange(Sender: TObject);
|
||||
var
|
||||
ser: TAreaSeries;
|
||||
begin
|
||||
if FLockChanges > 0 then
|
||||
exit;
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TAreaSeries;
|
||||
ser.AreaLinesPen.Color := CbAreaSerLinesColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbAreaSerLinesStyleChange(Sender: TObject);
|
||||
var
|
||||
ser: TAreaSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TAreaSeries;
|
||||
ser.AreaLinesPen.Style := CbAreaSerLinesStyle.PenStyle;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbAreaSerLinesWidthChange(Sender: TObject);
|
||||
var
|
||||
ser: TAreaSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TAreaSeries;
|
||||
ser.AreaLinesPen.Width := CbAreaSerLinesWidth.PenWidth;
|
||||
ser.AreaLinesPen.Style := CbAreaSerLinesStyle.PenStyle;
|
||||
if ser.AreaLinesPen.Style = psPattern then
|
||||
CbAreaSerLinesStyle.SetPenPattern(ser.AreaLinesPen);
|
||||
end;
|
||||
|
||||
|
||||
{ TBarSeries }
|
||||
|
||||
procedure TForm1.CbBarSerBrushColorChange(Sender: TObject);
|
||||
procedure TForm1.BarBrushChange(Sender: TObject);
|
||||
var
|
||||
ser: TBarSeries;
|
||||
ser: TbarSeries;
|
||||
begin
|
||||
if FLockChanges > 0 then
|
||||
exit;
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TBarSeries;
|
||||
ser.BarBrush.Color := CbBarSerBrushColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbBarSerBrushStyleChange(Sender: TObject);
|
||||
var
|
||||
ser: TBarSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TBarSeries;
|
||||
ser.BarBrush.Style := CbBarSerBrushStyle.BrushStyle;
|
||||
if CbBarSerBrushStyle.BrushStyle = bsImage then
|
||||
// Must be AFTER assigning Brush.Style.
|
||||
if CbBarSerBrushStyle.BrushStyle in [bsImage, bsPattern] then
|
||||
// Must be AFTER assigning brush style
|
||||
ser.BarBrush.Bitmap := CbBarSerBrushStyle.BrushBitmap;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbBarSerPenStyleChange(Sender: TObject);
|
||||
var
|
||||
ser: TBarSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TBarSeries;
|
||||
ser.BarPen.Style := CbBarSerPenStyle.PenStyle;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbBarSerPenWidthChange(Sender: TObject);
|
||||
procedure TForm1.BarPenChange(Sender: TObject);
|
||||
var
|
||||
ser: TBarSeries;
|
||||
begin
|
||||
if FLockChanges > 0 then
|
||||
exit;
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TBarSeries;
|
||||
ser.BarPen.Color := CbBarSerPenColor.Selected;
|
||||
ser.BarPen.Width := CbBarSerPenWidth.PenWidth;
|
||||
ser.BarPen.Style := CbBarSerPenStyle.PenStyle;
|
||||
if ser.BarPen.Style = psPattern then
|
||||
CbBarSerPenStyle.SetPenPattern(ser.BarPen);
|
||||
end;
|
||||
|
||||
{ Line series }
|
||||
|
||||
procedure TForm1.CbLineSerLinePenStyleChange(Sender: TObject);
|
||||
var
|
||||
ser: TLineSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TLineSeries;
|
||||
CbLineSerLinePenStyle.SetPenPattern(ser.LinePen);
|
||||
ser.LinePen.Cosmetic := CbLineSerLinePenStyle.Cosmetic;
|
||||
ser.LinePen.Style := CbLineSerLinePenStyle.PenStyle;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbLineSerLinePenWidthChange(Sender: TObject);
|
||||
procedure TForm1.LinePenChange(Sender: TObject);
|
||||
var
|
||||
ser: TLineSeries;
|
||||
begin
|
||||
if FLockChanges > 0 then
|
||||
exit;
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TLineSeries;
|
||||
ser.LinePen.Color := CbLineSerLinePenColor.Selected;
|
||||
ser.LinePen.Width := CbLineSerLinePenWidth.PenWidth;
|
||||
ser.LinePen.Style := CbLineSerLinePenStyle.PenStyle;
|
||||
if ser.LinePen.Style = psPattern then
|
||||
CbLineSerLinePenStyle.SetPenPattern(ser.LinePen);
|
||||
ser.ShowLines := cbShowLines.Checked;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbBarSerPenColorChange(Sender: TObject);
|
||||
var
|
||||
ser: TBarSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TBarSeries;
|
||||
ser.BarPen.Color := CbBarSerPenColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbLineSerPenColorChange(Sender: TObject);
|
||||
var
|
||||
ser: TLineSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TLineSeries;
|
||||
ser.LinePen.Color := CbLineSerPenColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbLineSerPointerBorderColorChange(Sender: TObject);
|
||||
procedure TForm1.LinePointerChange(Sender: TObject);
|
||||
var
|
||||
ser: TLineSeries;
|
||||
begin
|
||||
if FLockChanges > 0 then
|
||||
exit;
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TLineSeries;
|
||||
ser.Pointer.Pen.Color := CbLineSerPointerBorderColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbLineSerPointerBrushColorChange(Sender: TObject);
|
||||
var
|
||||
ser: TLineSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TLineSeries;
|
||||
ser.Pointer.Brush.Color := CbLineSerPointerBrushColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbLineSerPointerStyleChange(Sender: TObject);
|
||||
var
|
||||
ser: TLineSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TLineSeries;
|
||||
ser.Pointer.Style := CbLineSerPointerStyle.PointerStyle;
|
||||
ser.Pointer.HorizSize := EdLineSerPointerSize.Value;
|
||||
ser.Pointer.VertSize := EdLineSerPointerSize.Value;
|
||||
ser.ShowPoints := CbShowPoints.Checked;
|
||||
end;
|
||||
|
||||
|
||||
@ -305,22 +232,6 @@ begin
|
||||
ser.Active := CbShow.Checked;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbShowLinesChange(Sender: TObject);
|
||||
var
|
||||
ser: TLineSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TLineSeries;
|
||||
ser.ShowLines := CbShowLines.Checked;
|
||||
end;
|
||||
|
||||
procedure TForm1.CbShowPointsChange(Sender: TObject);
|
||||
var
|
||||
ser: TLineSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TLineSeries;
|
||||
ser.ShowPoints := CbShowPoints.Checked;
|
||||
end;
|
||||
|
||||
procedure TForm1.ChartListbox1Click(Sender: TObject);
|
||||
var
|
||||
ser: TCustomChartSeries;
|
||||
@ -328,26 +239,34 @@ begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex];
|
||||
if ser is TLineSeries then begin
|
||||
Notebook1.PageIndex := 0;
|
||||
CbShowLines.Checked := TLineSeries(ser).ShowLines;
|
||||
CbLineSerLinePenStyle.SetPenPattern(TLineSeries(ser).LinePen);
|
||||
CbLineSerLinePenstyle.Cosmetic := TLineSeries(ser).LinePen.Cosmetic;
|
||||
CbLineSerLinePenStyle.Cosmetic := TLineSeries(ser).LinePen.Cosmetic;
|
||||
CbLineSerLinePenStyle.PenStyle := TLineSeries(ser).LinePen.Style;
|
||||
CbLineSerLinePenWidth.PenWidth := TLineSeries(ser).LinePen.Width;
|
||||
CbLineSerPenColor.Selected := TLineSeries(ser).LinePen.Color;
|
||||
CbLineSerLinePenColor.Selected := TLineSeries(ser).LinePen.Color;
|
||||
|
||||
inc(FLockChanges);
|
||||
CbShowPoints.Checked := TLineSeries(ser).ShowPoints;
|
||||
EdLineSerPointerSize.Value := TLineSeries(ser).Pointer.HorizSize;
|
||||
CbLineSerPointerStyle.PointerStyle := TLineSeries(ser).Pointer.Style;
|
||||
CbLineSerPointerBorderColor.Selected := TLineSeries(ser).Pointer.Pen.Color;
|
||||
CblineSerPointerBrushColor.Selected := TLineSeries(ser).Pointer.Brush.Color;
|
||||
EdLineSerPointerSize.Value := TLineSeries(ser).Pointer.HorizSize;
|
||||
dec(FLockChanges); // Not clear why this is necessary - should work without it
|
||||
// LinePointerChange(nil);
|
||||
end
|
||||
else if ser is TBarSeries then begin
|
||||
else
|
||||
if ser is TBarSeries then begin
|
||||
Notebook1.PageIndex := 1;
|
||||
CbBarSerPenStyle.PenStyle := TBarSeries(ser).BarPen.Style;
|
||||
CbBarSerPenWidth.PenWidth := TBarseries(ser).BarPen.Width;
|
||||
CbBarSerPenColor.Selected := TBarSeries(ser).BarPen.Color;
|
||||
CbBarSerBrushColor.Selected := TBarSeries(ser).BarBrush.Color;
|
||||
CbBarSerBrushStyle.BrushStyle := TBarSeries(ser).BarBrush.Style;
|
||||
end else if ser is TAreaSeries then begin
|
||||
end
|
||||
else if ser is TAreaSeries then begin
|
||||
Notebook1.PageIndex := 2;
|
||||
CbAreaSerBrushColor.Selected := TAreaseries(ser).AreaBrush.Color;
|
||||
CbAreaSerBrushColor.Selected := TAreaSeries(ser).AreaBrush.Color;
|
||||
CbAreaSerBrushStyle.BrushStyle := TAreaSeries(ser).AreaBrush.Style;
|
||||
CbAreaSerContourStyle.PenStyle := TAreaSeries(ser).AreaContourPen.Style;
|
||||
CbAreaSerContourWidth.PenWidth := TAreaSeries(ser).AreaContourPen.Width;
|
||||
@ -365,6 +284,7 @@ procedure TForm1.ChartToolset1DataPointClickTool1PointClick(ATool: TChartTool;
|
||||
var
|
||||
ser: TChartSeries;
|
||||
begin
|
||||
Unused(APoint);
|
||||
ser := TChartSeries(TDataPointClickTool(ATool).Series);
|
||||
if ser <> nil then begin
|
||||
ChartListbox1.ItemIndex := ChartListbox1.FindSeriesIndex(ser);
|
||||
@ -372,16 +292,9 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.EdLineSerPointerSizeChange(Sender: TObject);
|
||||
var
|
||||
ser: TLineSeries;
|
||||
begin
|
||||
ser := ChartListbox1.Series[ChartListbox1.ItemIndex] as TLineSeries;
|
||||
ser.Pointer.HorizSize := EdLineSerPointerSize.Value;
|
||||
ser.Pointer.VertSize := EdLineSerPointerSize.Value;
|
||||
end;
|
||||
|
||||
procedure TForm1.FormShow(Sender: TObject);
|
||||
const
|
||||
DEFAULT_PATTERN = '2|1|1|1|1|1|1|1';
|
||||
var
|
||||
bmp: TBitmap;
|
||||
begin
|
||||
@ -397,6 +310,25 @@ begin
|
||||
finally
|
||||
bmp.Free;
|
||||
end;
|
||||
{
|
||||
bmp := TBitmap.Create;
|
||||
try
|
||||
bmp.SetSize(2, 2);
|
||||
bmp.Canvas.Pixels[0, 0] := clWhite;
|
||||
bmp.Canvas.Pixels[1, 0] := clBlack;
|
||||
bmp.Canvas.Pixels[0, 1] := clBlack;
|
||||
bmp.Canvas.Pixels[1, 1] := clWhite;
|
||||
finally
|
||||
CbBarSerBrushStyle.BrushBitmap.Assign(bmp);
|
||||
CbAreaserBrushStyle.BrushBitmap.Assign(bmp);
|
||||
end;
|
||||
}
|
||||
|
||||
// Prepare user-defined line pattern
|
||||
CbLineSerLinePenStyle.PenPattern := DEFAULT_PATTERN;
|
||||
CbBarSerPenStyle.PenPattern := DEFAULT_PATTERN;
|
||||
CbAreaSerLinesStyle.PenPattern := DEFAULT_PATTERN;
|
||||
CbAreaSerContourStyle.PenPattern := DEFAULT_PATTERN;
|
||||
|
||||
ChartListbox1.ItemIndex := 0;
|
||||
ChartListbox1Click(nil);
|
||||
|
@ -5,14 +5,22 @@ interface
|
||||
uses
|
||||
SysUtils, Graphics, Classes, Controls, StdCtrls, TATypes, TAGraph;
|
||||
|
||||
type
|
||||
TChartComboMode = (ccmPointerStyle, ccmPenStyle, ccmPenWidth, ccmBrushStyle);
|
||||
|
||||
TChartComboOptions = set of (
|
||||
ccoNames, // Show item names in combo
|
||||
ccoPatternBrush, // Include bsPattern item in brush style mode
|
||||
ccoImageBrush, // Include bsImage item in brush style mode
|
||||
ccoPatternPen); // Include psPattern item in pen style mode
|
||||
|
||||
const
|
||||
DEFAULT_POINTER_STYLE = psCircle;
|
||||
DEFAULT_SYMBOL_WIDTH = 40;
|
||||
DEFAULT_DROPDOWN_COUNT = 24;
|
||||
DEFAULT_OPTIONS = [ccoNames, ccoPatternBrush, ccoPatternPen];
|
||||
|
||||
type
|
||||
TChartComboMode = (ccmPointerStyle, ccmPenStyle, ccmPenWidth, ccmBrushStyle);
|
||||
|
||||
TChartComboBox = class(TCustomComboBox)
|
||||
private
|
||||
FAlignment: TAlignment;
|
||||
@ -29,7 +37,7 @@ type
|
||||
FCosmetic: Boolean;
|
||||
FLockItemIndex: Integer;
|
||||
FMode: TChartComboMode;
|
||||
FShowNames: Boolean;
|
||||
FOptions: TChartComboOptions;
|
||||
FSymbolWidth: Integer;
|
||||
function GetPenPattern: String;
|
||||
procedure SetAlignment(const AValue: TAlignment);
|
||||
@ -38,13 +46,13 @@ type
|
||||
procedure SetCosmetic(const AValue: Boolean);
|
||||
procedure SetMaxPenWidth(const AValue: Integer);
|
||||
procedure SetMode(const AValue: TChartComboMode);
|
||||
procedure SetOptions(const AValue: TChartComboOptions);
|
||||
procedure SetPenColor(const AValue: TColor);
|
||||
procedure SetPenPattern(const AValue: String); overload;
|
||||
procedure SetSelectedBrushStyle(const AValue: TBrushStyle);
|
||||
procedure SetSelectedPenStyle(const AValue: TPenStyle);
|
||||
procedure SetSelectedPenWidth(const AValue: Integer);
|
||||
procedure SetSelectedPointerStyle(const AValue: TSeriesPointerStyle);
|
||||
procedure SetShowNames(const AValue: Boolean);
|
||||
procedure SetSymbolWidth(const AValue: Integer);
|
||||
protected
|
||||
procedure Change; override;
|
||||
@ -73,12 +81,13 @@ type
|
||||
property Cosmetic: Boolean read FCosmetic write SetCosmetic default true;
|
||||
property MaxPenWidth: Integer read FMaxPenWidth write SetMaxPenWidth default 5;
|
||||
property Mode: TChartComboMode read FMode write SetMode default ccmPenStyle;
|
||||
property Options: TChartComboOptions read FOptions write SetOptions default DEFAULT_OPTIONS;
|
||||
property PenPattern: string read GetPenPattern write SetPenPattern;
|
||||
property PenColor: TColor read FPenColor write SetPenColor default clBlack;
|
||||
property PenStyle: TPenStyle read FPenStyle write SetSelectedPenStyle default psSolid;
|
||||
property PenWidth: Integer read FPenWidth write SetSelectedPenWidth default 1;
|
||||
property PointerStyle: TSeriesPointerStyle read FPointerStyle write SetSelectedPointerStyle default DEFAULT_POINTER_STYLE;
|
||||
property ShowNames: Boolean read FShowNames write SetShowNames default true;
|
||||
// property ShowNames: Boolean read FShowNames write SetShowNames default true;
|
||||
property SymbolWidth: Integer read FSymbolWidth write SetSymbolWidth default DEFAULT_SYMBOL_WIDTH;
|
||||
|
||||
property Align;
|
||||
@ -213,270 +222,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
(*
|
||||
{ TSeriesPointerStyleCombobox }
|
||||
|
||||
constructor TSeriesPointerStyleCombobox.Create(AOwner:TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
Style := csOwnerDrawFixed;
|
||||
DropdownCount := DEFAULT_DROPDOWN_COUNT;
|
||||
ReadOnly := true;
|
||||
FSymbolBorderColor := clBlack;
|
||||
FSymbolFillColor := clWhite;
|
||||
FShowNames := true;
|
||||
FAlignment := taLeftJustify;
|
||||
FSelected := DEFAULT_POINTER_STYLE;
|
||||
GetItems;
|
||||
Caption := GetSymbolName(FSelected);
|
||||
end;
|
||||
|
||||
destructor TSeriesPointerStyleCombobox.Destroy;
|
||||
begin
|
||||
DestroyBitmaps;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TSeriesPointerStyleCombobox.CreateBitmaps(AWidth, AHeight: Integer);
|
||||
var
|
||||
ps: TSeriesPointerStyle;
|
||||
chart: TChart;
|
||||
id: IChartDrawer;
|
||||
series: TLineSeries;
|
||||
legItems: TChartLegendItems;
|
||||
begin
|
||||
DestroyBitmaps;
|
||||
|
||||
chart := TChart.Create(nil);
|
||||
try
|
||||
for ps in TSeriesPointerStyle do begin
|
||||
FBitmaps[ps] := TBitmap.Create;
|
||||
FBitmaps[ps].Transparent := true;
|
||||
FBitmaps[ps].TransparentColor := RgbToColor(254,254,254);
|
||||
FBitmaps[ps].SetSize(AWidth, AHeight);
|
||||
FBitmaps[ps].Canvas.Brush.Color := FBitmaps[ps].TransparentColor;
|
||||
FBitmaps[ps].Canvas.FillRect(0, 0, AWidth, AHeight);
|
||||
|
||||
series := TLineSeries.Create(chart);
|
||||
try
|
||||
with series do begin
|
||||
Pointer.Style := ps;
|
||||
Pointer.Brush.Color := FSymbolFillColor;
|
||||
Pointer.Pen.Color := FSymbolBorderColor;
|
||||
Pointer.HorizSize := Min(AWidth, AHeight);
|
||||
Pointer.VertSize := Pointer.HorizSize;
|
||||
ShowPoints := true;
|
||||
LineType := ltNone;
|
||||
end;
|
||||
chart.AddSeries(series);
|
||||
legitems := TChartLegendItems.Create;
|
||||
try
|
||||
series.GetSingleLegendItem(legItems);
|
||||
id := TCanvasDrawer.Create(FBitmaps[ps].Canvas);
|
||||
id.Pen := Chart.Legend.SymbolFrame;
|
||||
legItems[0].Draw(id, Rect(0, 0, AWidth-1, AHeight-1));
|
||||
finally
|
||||
legitems.Free;
|
||||
end;
|
||||
finally
|
||||
series.Free;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
chart.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSeriesPointerStyleCombobox.DestroyBitmaps;
|
||||
var
|
||||
ps: TSeriesPointerStyle;
|
||||
begin
|
||||
for ps in TSeriesPointerStyle do
|
||||
FreeAndNil(FBitmaps[ps]);
|
||||
end;
|
||||
|
||||
procedure TSeriesPointerStyleCombobox.DrawItem(AIndex: Integer; ARect: TRect;
|
||||
AState: TOwnerDrawState);
|
||||
const
|
||||
MARGIN = 2;
|
||||
var
|
||||
symRect: TRect;
|
||||
symheight : integer;
|
||||
symwidth: Integer;
|
||||
txt: string;
|
||||
ps: TSeriesPointerStyle;
|
||||
ts: TTextStyle;
|
||||
alignmnt: TAlignment;
|
||||
begin
|
||||
SymRect := ARect;
|
||||
inc(SymRect.Top, MARGIN);
|
||||
dec(SymRect.Bottom, MARGIN);
|
||||
symheight := SymRect.Bottom - SymRect.Top;
|
||||
symwidth := symheight * 6 div 4; // see: TLegendItemLinePointer.Draw in TALagend
|
||||
if (BiDiMode <> bdLeftToRight) then
|
||||
case FAlignment of
|
||||
taLeftJustify : alignmnt := taRightJustify;
|
||||
taCenter : alignmnt := taCenter;
|
||||
taRightJustify: alignmnt := taLeftJustify
|
||||
end
|
||||
else
|
||||
alignmnt := FAlignment;
|
||||
case alignmnt of
|
||||
taLeftJustify : ;
|
||||
taCenter : SymRect.Left := (ARect.Left + ARect.Right - symwidth) div 2;
|
||||
taRightJustify : SymRect.Left := ARect.Right - MARGIN - symwidth;
|
||||
end;
|
||||
SymRect.Right := SymRect.Left + symwidth;
|
||||
|
||||
with Canvas do begin
|
||||
if odSelected in AState then begin
|
||||
Brush.Color := clHighlight;
|
||||
Font.Color := clHighlightText;
|
||||
end else begin
|
||||
Brush.Color := Color;
|
||||
Font.Color := clWindowText;
|
||||
end;
|
||||
Brush.Style := bsSolid;
|
||||
FillRect(ARect);
|
||||
|
||||
// Create bitmaps of pointer symbols if they are nil, or if height has changed
|
||||
if (FBitmaps[psCircle] = nil) or (FBitmaps[psCircle].Height <> symheight)
|
||||
then CreateBitmaps(symwidth, symheight);
|
||||
|
||||
Pen.Color := FSymbolBorderColor;
|
||||
Pen.Style := psSolid;
|
||||
Pen.Width := 1;
|
||||
Brush.Color := FSymbolFillColor;
|
||||
ps := GetSymbol(AIndex);
|
||||
Canvas.Draw(SymRect.Left, SymRect.Top, FBitmaps[ps]);
|
||||
|
||||
if FShowNames and (alignmnt <> taCenter) then begin // Note: No text output for taCenter!
|
||||
txt := Items[AIndex];
|
||||
case alignmnt of
|
||||
taLeftJustify : ARect.Left := SymRect.Right + 2 * MARGIN;
|
||||
taRightJustify : ARect.Left := SymRect.Left - 2 * MARGIN - Canvas.TextWidth(txt);
|
||||
end;
|
||||
ts := Canvas.TextStyle;
|
||||
ts.Layout := tlCenter;
|
||||
ts.Opaque := false;
|
||||
ts.EndEllipsis := true;
|
||||
TextRect(ARect, ARect.Left, ARect.Top, txt, ts);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSeriesPointerStyleCombobox.GetItems;
|
||||
const
|
||||
// Arrange symbols in "nice" order
|
||||
LIST: array[0..19] of TSeriesPointerStyle = (
|
||||
psNone, psRectangle, psCircle, psDiamond,
|
||||
psTriangle, psDownTriangle, psLeftTriangle, psRightTriangle,
|
||||
psHexagon, psFullStar,
|
||||
psStar, psCross, psDiagCross,
|
||||
psLowBracket, psHighBracket, psLeftBracket, psRightBracket,
|
||||
psHorBar, psVertBar, psPoint);
|
||||
var
|
||||
ps: TSeriesPointerStyle;
|
||||
s: String;
|
||||
i: Integer;
|
||||
sel: TSeriesPointerStyle;
|
||||
styleItems: TStrings;
|
||||
begin
|
||||
if inherited Items.Count > 0 then
|
||||
exit;
|
||||
|
||||
sel := FSelected;
|
||||
styleItems := TStringList.Create;
|
||||
try
|
||||
for i:=0 to High(LIST) do begin
|
||||
ps := LIST[i];
|
||||
s := GetSymbolName(ps);
|
||||
if s <> '' then
|
||||
styleItems.AddObject(s, TObject(PtrInt(ps)));
|
||||
end;
|
||||
inherited Items.Assign(styleitems);
|
||||
finally
|
||||
styleItems.Free;
|
||||
SetSelected(sel);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TSeriesPointerStyleCombobox.GetSymbol(AIndex: Integer): TSeriesPointerStyle;
|
||||
begin
|
||||
if AIndex = -1 then
|
||||
Result := psNone
|
||||
else
|
||||
Result := TSeriesPointerStyle(PtrInt(Items.Objects[AIndex]));
|
||||
end;
|
||||
|
||||
{ Is overridden to prevent loss of default selected pointer style when
|
||||
combo is added to a form in designer. }
|
||||
procedure TSeriesPointerStyleCombobox.RealSetText(const AValue: TCaption);
|
||||
var
|
||||
sel: TSeriesPointerStyle;
|
||||
begin
|
||||
sel := FSelected;
|
||||
inherited RealSetText(AValue);
|
||||
SetSelected(sel);
|
||||
end;
|
||||
|
||||
procedure TSeriesPointerStyleCombobox.SetAlignment(Value:TAlignment);
|
||||
begin
|
||||
if Value <> FAlignment then begin
|
||||
FAlignment := Value;
|
||||
Invalidate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSeriesPointerStyleCombobox.SetItemIndex(const AValue: Integer);
|
||||
begin
|
||||
FSelected := GetSymbol(AValue);
|
||||
if AValue = inherited ItemIndex then exit;
|
||||
inherited SetItemIndex(AValue);
|
||||
end;
|
||||
|
||||
procedure TSeriesPointerStyleCombobox.SetSelected(AValue:TSeriesPointerStyle);
|
||||
var
|
||||
i : integer;
|
||||
begin
|
||||
for i := 0 to Items.Count-1 do begin
|
||||
if GetSymbol(i) = AValue then begin
|
||||
FSelected := AValue;
|
||||
ItemIndex := i;
|
||||
Invalidate;
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
ItemIndex := -1;
|
||||
FSelected := psNone;
|
||||
end;
|
||||
|
||||
procedure TSeriesPointerStyleCombobox.SetShowNames(AValue: boolean);
|
||||
begin
|
||||
if (FShowNames <> AValue) then begin
|
||||
FShowNames := AValue;
|
||||
Invalidate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSeriesPointerStyleCombobox.SetSymbolBorderColor(AValue: TColor);
|
||||
begin
|
||||
if FSymbolBorderColor <> AValue then begin
|
||||
FSymbolBorderColor := AValue;
|
||||
DestroyBitmaps;
|
||||
Invalidate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSeriesPointerStyleCombobox.SetSymbolFillColor(AValue: TColor);
|
||||
begin
|
||||
if FSymbolFillColor <> AValue then begin
|
||||
FSymbolFillColor := AValue;
|
||||
DestroyBitmaps;
|
||||
Invalidate;
|
||||
end;
|
||||
end;
|
||||
*)
|
||||
|
||||
{ TChartComboBox }
|
||||
|
||||
@ -498,7 +243,7 @@ begin
|
||||
FPenStyle := psSolid;
|
||||
FPenWidth := 1;
|
||||
FMaxPenWidth := 5;
|
||||
FShowNames := true;
|
||||
FOptions := DEFAULT_OPTIONS;
|
||||
FSymbolWidth := DEFAULT_SYMBOL_WIDTH;
|
||||
PopulatePenStyles;
|
||||
SetSelectedPenStyle(FPenStyle);
|
||||
@ -634,7 +379,7 @@ begin
|
||||
end;
|
||||
Canvas.Brush.Color := FBrushColor;
|
||||
Canvas.Brush.Style := bs;
|
||||
if bs = bsImage then
|
||||
if (bs = bsImage) or (bs = bsPattern) then
|
||||
Canvas.Brush.Bitmap := FBrushBitmap; // AFTER assigning Brush.Style!
|
||||
Canvas.Pen.Color := clBlack;
|
||||
Canvas.Pen.Style := psSolid;
|
||||
@ -668,7 +413,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
if FShowNames and (FAlignment <> taCenter) then begin
|
||||
if (ccoNames in FOptions) and (FAlignment <> taCenter) then begin
|
||||
ts := Canvas.TextStyle;
|
||||
ts.Layout := tlCenter;
|
||||
ts.Opaque := false;
|
||||
@ -708,7 +453,8 @@ begin
|
||||
if AIndex < 0 then
|
||||
Result := psSolid
|
||||
else
|
||||
Result := TPenStyle(AIndex);
|
||||
// Result := TPenStyle(AIndex);
|
||||
Result := TPenStyle(PtrInt(Items.Objects[AIndex]));
|
||||
end;
|
||||
|
||||
function TChartComboBox.GetPenWidth(const AIndex: Integer): Integer;
|
||||
@ -732,8 +478,13 @@ begin
|
||||
Items.BeginUpdate;
|
||||
try
|
||||
Items.Clear;
|
||||
for bs in TBrushStyle do
|
||||
for bs in TBrushStyle do begin
|
||||
if (bs = bsPattern) and not (ccoPatternBrush in FOptions) then
|
||||
Continue;
|
||||
if (bs = bsImage) and not (ccoImageBrush in FOptions) then
|
||||
Continue;
|
||||
Items.Add(GetBrushStylename(bs));
|
||||
end;
|
||||
finally
|
||||
Items.EndUpdate;
|
||||
dec(FLockItemIndex);
|
||||
@ -748,8 +499,11 @@ begin
|
||||
Items.BeginUpdate;
|
||||
try
|
||||
Items.Clear;
|
||||
for ps in TPenStyle do
|
||||
Items.Add(GetPenStyleName(ps));
|
||||
for ps in TPenStyle do begin
|
||||
if (ps = psPattern) and not (ccoPatternPen in FOptions) then
|
||||
Continue;
|
||||
Items.AddObject(GetPenStyleName(ps), TObject(PtrInt(ps)));
|
||||
end;
|
||||
finally
|
||||
Items.EndUpdate;
|
||||
dec(FLockItemIndex);
|
||||
@ -916,6 +670,19 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TChartComboBox.SetOptions(const AValue: TChartComboOptions);
|
||||
begin
|
||||
if FOptions = AValue then exit;
|
||||
FOptions := AValue;
|
||||
case FMode of
|
||||
ccmBrushStyle : PopulateBrushStyles;
|
||||
ccmPenStyle : PopulatePenStyles;
|
||||
ccmPenWidth : PopulatePenWidths;
|
||||
ccmPointerStyle : PopulatePointerStyles;
|
||||
end;
|
||||
Invalidate;
|
||||
end;
|
||||
|
||||
procedure TChartComboBox.SetPenPattern(const AValue: String);
|
||||
var
|
||||
L: TStrings;
|
||||
@ -959,8 +726,15 @@ begin
|
||||
end;
|
||||
|
||||
procedure TChartComboBox.SetSelectedPenStyle(const AValue: TPenStyle);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
ItemIndex := EnsureRange(ord(AValue), 0, Items.Count - 1);
|
||||
for i := 0 to Items.Count - 1 do
|
||||
if GetPenStyle(i) = AValue then begin
|
||||
ItemIndex := i;
|
||||
exit;
|
||||
end;
|
||||
ItemIndex := -1;
|
||||
end;
|
||||
|
||||
procedure TChartComboBox.SetSelectedPenWidth(const AValue: Integer);
|
||||
@ -984,13 +758,6 @@ begin
|
||||
FPointerStyle := psNone;
|
||||
end;
|
||||
|
||||
procedure TChartComboBox.SetShowNames(const AValue: Boolean);
|
||||
begin
|
||||
if FShowNames = AValue then exit;
|
||||
FShowNames := AValue;
|
||||
Invalidate;
|
||||
end;
|
||||
|
||||
procedure TChartComboBox.SetSymbolWidth(const AValue: Integer);
|
||||
begin
|
||||
if FSymbolWidth = AValue then exit;
|
||||
|
Loading…
Reference in New Issue
Block a user