lazarus/components/tachart/demo/radial/main.pas
2010-11-29 11:00:22 +00:00

86 lines
1.8 KiB
ObjectPascal

unit main;
{$mode objfpc}{$H+}
interface
uses
Classes, ComCtrls, ExtCtrls, Spin, StdCtrls, SysUtils, FileUtil, Forms,
Controls, Graphics, Dialogs, TAGraph, TASeries, TASources, TATools;
type
{ TForm1 }
TForm1 = class(TForm)
ChartPie: TChart;
ChartPiePieSeries1: TPieSeries;
ChartToolset1: TChartToolset;
lblWords: TLabel;
ListChartSource1: TListChartSource;
PageControl1: TPageControl;
Panel1: TPanel;
seWords: TSpinEdit;
tsPie: TTabSheet;
procedure ChartPieMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure seWordsChange(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.ChartPieMouseDown(
Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
i: Integer;
begin
i := ChartPiePieSeries1.FindContainingSlice(Point(X, Y));
if i < 0 then exit;
ListChartSource1.SetXValue(i, 0.2 - ListChartSource1[i]^.X);
ChartPie.Invalidate;
end;
procedure TForm1.seWordsChange(Sender: TObject);
var
r: TMWCRandomGenerator;
function RandWord: String;
var
i: Integer;
begin
SetLength(Result, r.GetInRange(1, 5));
for i := 1 to Length(Result) do
Result[i] := Chr(r.GetInRange(Ord('a'), Ord('z')));
end;
var
i, j: Integer;
begin
r := TMWCRandomGenerator.Create;
try
r.Seed := 9823743;
for i := 0 to ListChartSource1.Count - 1 do
ListChartSource1[i]^.Text := '';
for j := 1 to seWords.Value do
for i := 0 to ListChartSource1.Count - 1 do
with ListChartSource1[i]^ do begin
if Text <> '' then
Text := Text + ' ';
Text := Text + RandWord;
end;
finally
r.Free;
end;
ChartPie.Invalidate;
end;
end.