mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-30 21:42:41 +02:00
168 lines
4.0 KiB
ObjectPascal
168 lines
4.0 KiB
ObjectPascal
unit ceTitleFootDlg;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ButtonPanel,
|
|
ExtCtrls, Buttons, ComCtrls, ceShapeBrushPenMarginsFrame,
|
|
ceFontFrame, TAGraph, TATextElements;
|
|
|
|
type
|
|
|
|
{ TTitleFootEditor }
|
|
|
|
TTitleFootEditor = class(TForm)
|
|
ButtonPanel: TButtonPanel;
|
|
cbShow: TCheckBox;
|
|
FontFrame1: TFontFrame;
|
|
gbShapeBrushPenMargins: TGroupBox;
|
|
gbFont: TGroupBox;
|
|
lblText: TLabel;
|
|
mmoText: TMemo;
|
|
MemoPanel: TPanel;
|
|
PanelTop: TPanel;
|
|
ParamsPanel: TPanel;
|
|
rgAlignment: TRadioGroup;
|
|
ShapeBrushPenMarginsFrame1: TShapeBrushPenMarginsFrame;
|
|
procedure cbShowChange(Sender: TObject);
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure mmoTextChange(Sender: TObject);
|
|
procedure OKButtonClick(Sender: TObject);
|
|
procedure rgAlignmentClick(Sender: TObject);
|
|
private
|
|
FTitle: TChartTitle;
|
|
FSavedTitle: TChartTitle;
|
|
FOKClicked: boolean;
|
|
procedure ChangedHandler(Sender: TObject);
|
|
function GetAlignment: TAlignment;
|
|
procedure SetAlignment(AValue: TAlignment);
|
|
protected
|
|
function GetChart: TChart;
|
|
public
|
|
procedure Prepare(ATitle: TChartTitle; ACaption: String = '');
|
|
|
|
end;
|
|
|
|
var
|
|
AxisTitleEditor: TTitleFootEditor;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
uses
|
|
ceUtils;
|
|
|
|
type
|
|
TChartTitleAccess = class(TChartTitle);
|
|
|
|
procedure TTitleFootEditor.cbShowChange(Sender: TObject);
|
|
begin
|
|
FTitle.Visible := cbShow.Checked;
|
|
lblText.Visible := cbShow.Checked;
|
|
mmoText.Visible := cbShow.Checked;
|
|
rgAlignment.Visible := cbShow.Checked;
|
|
gbShapeBrushPenMargins.Visible := cbShow.Checked;
|
|
gbFont.Visible := cbShow.Checked;
|
|
end;
|
|
|
|
procedure TTitleFootEditor.ChangedHandler(Sender: TObject);
|
|
begin
|
|
GetChart.Invalidate;
|
|
mmoText.Font.Assign(FTitle.Font);
|
|
mmoText.Color := FTitle.Brush.Color;
|
|
end;
|
|
|
|
procedure TTitleFootEditor.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 TTitleFootEditor.FormCreate(Sender: TObject);
|
|
begin
|
|
BoldHeaders(Self);
|
|
FontFrame1.OnChange := @ChangedHandler;
|
|
ShapeBrushPenMarginsFrame1.OnChange := @ChangedHandler;
|
|
end;
|
|
|
|
procedure TTitleFootEditor.FormDestroy(Sender: TObject);
|
|
begin
|
|
FSavedTitle.Free;
|
|
end;
|
|
|
|
procedure TTitleFootEditor.FormShow(Sender: TObject);
|
|
begin
|
|
if cbShow.Checked then begin
|
|
AutoSize := true;
|
|
Constraints.MinWidth := Width;
|
|
Constraints.MinHeight := Height;
|
|
AutoSize := false;
|
|
end;
|
|
end;
|
|
|
|
procedure TTitleFootEditor.mmoTextChange(Sender: TObject);
|
|
begin
|
|
FTitle.Text.Assign(mmoText.Lines);
|
|
end;
|
|
|
|
function TTitleFootEditor.GetAlignment: TAlignment;
|
|
const
|
|
ALIGNMENTS: array[0..2] of TAlignment = (taLeftJustify, taCenter, taRightJustify);
|
|
begin
|
|
Result := ALIGNMENTS[rgAlignment.ItemIndex];
|
|
end;
|
|
|
|
function TTitleFootEditor.GetChart: TChart;
|
|
begin
|
|
Result := TChartTitleAccess(FTitle).GetOwner as TChart;
|
|
end;
|
|
|
|
procedure TTitleFootEditor.OKButtonClick(Sender: TObject);
|
|
begin
|
|
FOKClicked := true;
|
|
end;
|
|
|
|
procedure TTitleFootEditor.Prepare(ATitle: TChartTitle; ACaption: String = '');
|
|
begin
|
|
FTitle := ATitle;
|
|
if FSavedTitle = nil then
|
|
FSavedTitle := TChartTitle.Create(TChart(TChartTitleAccess(FTitle).GetOwner));
|
|
FSavedTitle.Assign(FTitle);
|
|
|
|
if ACaption <> '' then
|
|
Caption := ACaption;
|
|
|
|
cbShow.Checked := ATitle.Visible;
|
|
mmoText.Lines.Assign(ATitle.Text);
|
|
SetAlignment(ATitle.Alignment);
|
|
|
|
mmoText.Font.Assign(ATitle.Font);
|
|
FontFrame1.Prepare(ATitle.Font, false);
|
|
ShapeBrushPenMarginsFrame1.Prepare(ATitle.Shape, ATitle.Brush, ATitle.Frame, ATitle.Margins);
|
|
end;
|
|
|
|
procedure TTitleFootEditor.rgAlignmentClick(Sender: TObject);
|
|
begin
|
|
FTitle.Alignment := GetAlignment;
|
|
end;
|
|
|
|
procedure TTitleFootEditor.SetAlignment(AValue: TAlignment);
|
|
const
|
|
ALIGNMENTS: array[TAlignment] of Integer = (0, 2, 1);
|
|
begin
|
|
rgAlignment.ItemIndex := ALIGNMENTS[AValue];
|
|
end;
|
|
|
|
end.
|
|
|