mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-02 00:03:46 +02:00
100 lines
2.0 KiB
ObjectPascal
100 lines
2.0 KiB
ObjectPascal
unit ceLegendDlg;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ButtonPanel,
|
|
ExtCtrls, Buttons, ComCtrls,
|
|
TAGraph, TALegend,
|
|
ceLegendFrame;
|
|
|
|
type
|
|
|
|
{ TChartLegendEditor }
|
|
|
|
TChartLegendEditor = class(TForm)
|
|
ButtonPanel: TButtonPanel;
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure OKButtonClick(Sender: TObject);
|
|
private
|
|
FLegend: TChartLegend;
|
|
FLegendFrame: TChartLegendFrame;
|
|
FSavedLegend: TChartLegend;
|
|
FOKClicked: Boolean;
|
|
protected
|
|
function GetChart: TChart;
|
|
public
|
|
procedure Prepare(ALegend: TChartLegend; ACaption: String = '');
|
|
|
|
end;
|
|
|
|
var
|
|
LegendEditor: TChartLegendEditor;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
procedure TChartLegendEditor.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
begin
|
|
if not CanClose then exit;
|
|
if not FOKClicked then begin
|
|
FLegend.Assign(FSavedLegend);
|
|
GetChart.Invalidate;
|
|
end;
|
|
end;
|
|
|
|
procedure TChartLegendEditor.FormCreate(Sender: TObject);
|
|
begin
|
|
FLegendFrame := TChartLegendFrame.Create(self);
|
|
FLegendFrame.Parent := self;
|
|
FLegendFrame.Name := '';
|
|
FLegendFrame.Align := alClient;
|
|
FLegendFrame.BorderSpacing.Around := 8;
|
|
FLegendFrame.AutoSize := true;
|
|
|
|
AutoSize := true;
|
|
end;
|
|
|
|
procedure TChartLegendEditor.FormDestroy(Sender: TObject);
|
|
begin
|
|
FSavedLegend.Free;
|
|
end;
|
|
|
|
procedure TChartLegendEditor.FormShow(Sender: TObject);
|
|
begin
|
|
FOKClicked := false;
|
|
end;
|
|
|
|
function TChartLegendEditor.GetChart: TChart;
|
|
begin
|
|
Result := FLegend.GetOwner as TChart;
|
|
end;
|
|
|
|
procedure TChartLegendEditor.OKButtonClick(Sender: TObject);
|
|
begin
|
|
FOKClicked := true;
|
|
end;
|
|
|
|
procedure TChartLegendEditor.Prepare(ALegend: TChartLegend;
|
|
ACaption: String = '');
|
|
begin
|
|
FLegend := ALegend;
|
|
if FSavedLegend = nil then
|
|
FSavedLegend := TChartLegend.Create(nil);
|
|
FSavedLegend.Assign(ALegend);
|
|
|
|
if ACaption <> '' then
|
|
Caption := ACaption;
|
|
|
|
FLegendFrame.Prepare(ALegend);
|
|
end;
|
|
|
|
end.
|
|
|