lazarus/components/tachart/demo/charttitle/main.pas
2022-12-10 23:54:16 +01:00

136 lines
3.5 KiB
ObjectPascal

unit main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
Spin, TAGraph, TATextElements, Types, TAChartUtils, TASeries;
type
{ TMainForm }
TMainForm = class(TForm)
Bevel1: TBevel;
Chart1: TChart;
cbFullWidth: TCheckBox;
cbShowAxisMarksAndTitle: TCheckBox;
cbShape: TComboBox;
cbFrame: TCheckBox;
clbFrameColor: TColorButton;
gbTitleMargins: TGroupBox;
Label1: TLabel;
Label2: TLabel;
lblTitleText: TLabel;
lblShape: TLabel;
mmoTitleText: TMemo;
rgAlignment: TRadioGroup;
seLeftMargin: TSpinEdit;
seRightMargin: TSpinEdit;
procedure cbFrameChange(Sender: TObject);
procedure Chart1ChartTitleGetShape(ASender: TChartTextElement;
const ABoundingBox: TRect; var APolygon: TPointArray);
procedure cbFullWidthChange(Sender: TObject);
procedure cbShowAxisMarksAndTitleChange(Sender: TObject);
procedure cbShapeChange(Sender: TObject);
procedure clbFrameColorColorChanged(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure mmoTitleTextChange(Sender: TObject);
procedure rgAlignmentClick(Sender: TObject);
procedure seLeftMarginChange(Sender: TObject);
procedure seRightMarginChange(Sender: TObject);
private
public
end;
var
MainForm: TMainForm;
implementation
{$R *.lfm}
{ TMainForm }
procedure TMainForm.mmoTitleTextChange(Sender: TObject);
begin
Chart1.Title.Text.Text := mmoTitleText.Lines.Text;
end;
procedure TMainForm.rgAlignmentClick(Sender: TObject);
begin
case rgAlignment.ItemIndex of
0: Chart1.Title.Alignment := taLeftJustify;
1: Chart1.Title.Alignment := taCenter;
2: Chart1.Title.Alignment := taRightJustify;
end;
end;
procedure TMainForm.seLeftMarginChange(Sender: TObject);
begin
Chart1.Title.Margins.Left := seLeftMargin.Value;
end;
procedure TMainForm.seRightMarginChange(Sender: TObject);
begin
Chart1.Title.Margins.Right := seRightMargin.Value;
end;
procedure TMainForm.cbFullWidthChange(Sender: TObject);
begin
Chart1.Title.FullWidth := cbFullWidth.Checked;
end;
procedure TMainForm.Chart1ChartTitleGetShape(ASender: TChartTextElement;
const ABoundingBox: TRect; var APolygon: TPointArray);
var
delta: Integer;
begin
delta := ABoundingBox.Height div 2;
SetLength(APolygon, 4);
APolygon[0] := Point(ABoundingBox.Left + delta, ABoundingBox.Top);
APolygon[1] := Point(ABoundingBox.Right, ABoundingBox.Top);
APolygon[2] := Point(ABoundingBox.Right - delta, ABoundingBox.Bottom);
APolygon[3] := Point(ABoundingBox.Left, ABoundingBox.Bottom);
end;
procedure TMainForm.cbFrameChange(Sender: TObject);
begin
Chart1.Title.Frame.Visible := cbFrame.Checked;
end;
procedure TMainForm.cbShowAxisMarksAndTitleChange(Sender: TObject);
begin
Chart1.BottomAxis.Marks.Visible := cbShowAxisMarksAndTitle.Checked;
Chart1.BottomAxis.Title.Visible := cbShowAxisMarksAndTitle.Checked;
Chart1.LeftAxis.Marks.Visible := cbShowAxisMarksAndTitle.Checked;
Chart1.LeftAxis.Title.Visible := cbShowAxisMarksAndTitle.Checked;
end;
procedure TMainForm.cbShapeChange(Sender: TObject);
begin
Chart1.Title.Shape := TChartLabelShape(cbShape.ItemIndex);
if Chart1.Title.Shape = clsUserDefined then
Chart1.Title.OnGetShape := @Chart1ChartTitleGetShape
else
Chart1.Title.OnGetShape := nil;
end;
procedure TMainForm.clbFrameColorColorChanged(Sender: TObject);
begin
Chart1.Title.Frame.Color := clbFrameColor.ButtonColor;
end;
procedure TMainForm.FormActivate(Sender: TObject);
begin
Constraints.MinWidth := Width;
Constraints.MinHeight := Height;
end;
end.