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