1 unit cePenFrame;
2 
3 {$mode objfpc}{$H+}
4 
5 interface
6 
7 uses
8   Classes, SysUtils, Graphics, Forms, Controls, StdCtrls, Dialogs, ExtCtrls,
9   TAChartCombos;
10 
11 type
12 
13   { TChartPenFrame }
14 
15   TChartPenFrame = class(TFrame)
16     Bevel1: TBevel;
17     cbPenStyle: TChartComboBox;
18     cbPenWidth: TChartComboBox;
19     cbPenColor: TColorButton;
20     lblPenWidth: TLabel;
21     lblPenStyle: TLabel;
22     procedure cbPenColorColorChanged(Sender: TObject);
23     procedure cbPenStyleChange(Sender: TObject);
24     procedure cbPenWidthChange(Sender: TObject);
25   private
26     FPen: TPen;
27     FOnChange: TNotifyEvent;
28     procedure DoChanged;
29   public
30     constructor Create(AOwner: TComponent); override;
31     procedure Prepare(APen: TPen);
32     property OnChange: TNotifyEvent read FOnChange write FOnChange;
33   end;
34 
35 implementation
36 
37 {$R *.lfm}
38 
39 { TChartPenFrame }
40 
41 constructor TChartPenFrame.Create(AOwner: TComponent);
42 begin
43   inherited;
44   cbPenStyle.DropdownCount := DEFAULT_DROPDOWN_COUNT;
45   cbPenWidth.DropdownCount := DEFAULT_DROPDOWN_COUNT;
46   cbPenColor.Width := cbPenColor.Height;
47 end;
48 
49 procedure TChartPenFrame.cbPenColorColorChanged(Sender: TObject);
50 begin
51   FPen.Color := cbPenColor.ButtonColor;
52   DoChanged;
53 end;
54 
55 procedure TChartPenFrame.cbPenStyleChange(Sender: TObject);
56 begin
57   FPen.Style := cbPenStyle.PenStyle;
58   DoChanged;
59 end;
60 
61 procedure TChartPenFrame.cbPenWidthChange(Sender: TObject);
62 begin
63   FPen.Width := cbPenWidth.PenWidth;
64   DoChanged;
65 end;
66 
67 procedure TChartPenFrame.DoChanged;
68 begin
69   if Assigned(FOnChange) then FOnChange(FPen);
70 end;
71 
72 procedure TChartPenFrame.Prepare(APen: TPen);
73 begin
74   FPen := APen;
75   cbPenStyle.PenStyle := FPen.Style;
76   cbPenWidth.PenWidth := FPen.Width;
77   cbPenColor.ButtonColor := ColorToRGB(FPen.Color);
78 end;
79 
80 end.
81 
82