mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-07-21 18:26:06 +02:00
115 lines
2.5 KiB
ObjectPascal
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.
|
|
|