mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-09 12:12:41 +02:00
86 lines
1.8 KiB
ObjectPascal
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.
|
|
|