lazarus/components/tachart/demo/charteditor/cetitlefootdlg.pas
2021-04-22 22:56:58 +00:00

115 lines
2.5 KiB
ObjectPascal

unit ceTitleFootDlg;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Graphics,
Forms, Controls, Dialogs, ButtonPanel, ExtCtrls, Buttons, ComCtrls,
TAGraph, TATextElements,
ceTitleFootFrame;
type
{ TChartTitleFootEditor }
TChartTitleFootEditor = class(TForm)
ButtonPanel: TButtonPanel;
procedure FormActivate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure OKButtonClick(Sender: TObject);
private
FTitle: TChartTitle;
FSavedTitle: TChartTitle;
FTitleFootFrame: TChartTitleFootFrame;
FOKClicked: boolean;
protected
function GetChart: TChart;
public
procedure Prepare(ATitle: TChartTitle; ACaption: String = '');
end;
var
TitleFootEditor: TChartTitleFootEditor;
implementation
{$R *.lfm}
uses
TATypes;
procedure TChartTitleFootEditor.FormActivate(Sender: TObject);
var
h: Integer = 0;
w: Integer = 0;
begin
FTitleFootFrame.GetPreferredSize(w, h);
inc(h, FTitleFootFrame.BorderSpacing.Around * 2);
inc(w, FTitleFootFrame.BorderSpacing.Around * 2);
Constraints.MinHeight := h + ButtonPanel.Height + ButtonPanel.BorderSpacing.Around*2;
Constraints.MinWidth := w;
Width := 1; // Enforce the constraints.
Height := 1;
end;
procedure TChartTitleFootEditor.FormCloseQuery(Sender: TObject;
var CanClose: boolean);
begin
if not CanClose then exit;
if not FOKClicked then begin
FTitle.Assign(FSavedTitle);
GetChart.Invalidate;
end;
end;
procedure TChartTitleFootEditor.FormCreate(Sender: TObject);
begin
// Insert frames at runtime - this makes life much easier...
FTitleFootFrame := TChartTitleFootFrame.Create(self);
FTitleFootFrame.Parent := Self;
FTitleFootFrame.Name := '';
FTitleFootFrame.Align := alClient;
FTitleFootFrame.BorderSpacing.Around := 8;
FTitleFootFrame.AutoSize := true;
// AutoSize := true;
end;
procedure TChartTitleFootEditor.FormDestroy(Sender: TObject);
begin
FSavedTitle.Free;
end;
function TChartTitleFootEditor.GetChart: TChart;
begin
Result := FTitle.GetOwner as TChart;
end;
procedure TChartTitleFootEditor.OKButtonClick(Sender: TObject);
begin
FOKClicked := true;
end;
procedure TChartTitleFootEditor.Prepare(ATitle: TChartTitle; ACaption: String = '');
begin
FTitle := ATitle;
if FSavedTitle = nil then
FSavedTitle := TChartTitle.Create(GetChart);
FSavedTitle.Assign(FTitle);
if ACaption <> '' then
Caption := ACaption;
FTitleFootFrame.Prepare(ATitle);
end;
end.