⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frxeditstyle.pas

📁 报表源码 FastReport 3 is new generation of the report generators components. It consists of report engin
💻 PAS
字号:
{******************************************}
{ }
{ FastReport v3.0 }
{ Style editor }
{ }
{ Copyright (c) 1998-2005 }
{ by Alexander Tzyganenko, }
{ Fast Reports Inc. }
{ }
{******************************************}

unit frxEditStyle;

interface

{$I frx.inc}

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ExtCtrls, ToolWin, StdCtrls, ImgList, frxClass;

type
  TfrxStyleEditorForm = class(TForm)
    ToolBar:TToolBar;
    AddB:TToolButton;
    DeleteB:TToolButton;
    Sep1:TToolButton;
    LoadB:TToolButton;
    SaveB:TToolButton;
    Sep2:TToolButton;
    CancelB:TToolButton;
    OkB:TToolButton;
    OpenDialog:TOpenDialog;
    SaveDialog:TSaveDialog;
    StylesTV:TTreeView;
    EditB:TToolButton;
    PaintBox:TPaintBox;
    ColorB:TButton;
    FontB:TButton;
    FrameB:TButton;
    procedure FormCreate(Sender:TObject);
    procedure FormShow(Sender:TObject);
    procedure CancelBClick(Sender:TObject);
    procedure OkBClick(Sender:TObject);
    procedure PaintBoxPaint(Sender:TObject);
    procedure FormHide(Sender:TObject);
    procedure AddBClick(Sender:TObject);
    procedure DeleteBClick(Sender:TObject);
    procedure LoadBClick(Sender:TObject);
    procedure SaveBClick(Sender:TObject);
    procedure BClick(Sender:TObject);
    procedure StylesTVClick(Sender:TObject);
    procedure StylesTVEdited(Sender:TObject; Node:TTreeNode;
      var S:String);
    procedure EditBClick(Sender:TObject);
  private
    FImageList:TImageList;
    FReport:TfrxReport;
    FStyles:TfrxStyles;
    procedure UpdateStyles(Focus:Integer = 0);
    procedure UpdateControls;
  public
    constructor Create(AOwner:TComponent); override;
    destructor Destroy; override;
  end;

implementation

{$R *.DFM}

uses frxDesgn, frxEditFrame, frxDesgnCtrls, frxRes;

constructor TfrxStyleEditorForm.Create(AOwner:TComponent);
begin
  inherited;
  FStyles:= TfrxStyles.Create(nil);
end;

destructor TfrxStyleEditorForm.Destroy;
begin
  FStyles.Free;
  inherited;
end;

procedure TfrxStyleEditorForm.FormCreate(Sender:TObject);
begin
  frxResources.LocalizeForm(Self);
  FReport:= TfrxCustomDesigner(Owner).Report;
  FImageList:= frxResources.MainButtonImages;
  ToolBar.Images:= FImageList;
end;

procedure TfrxStyleEditorForm.FormShow(Sender:TObject);
begin
  FStyles.Assign(FReport.Styles);
  UpdateStyles;
end;

procedure TfrxStyleEditorForm.FormHide(Sender:TObject);
begin
  if ModalResult = mrOk then
    FReport.Styles.Assign(FStyles);
end;

procedure TfrxStyleEditorForm.UpdateStyles(Focus:Integer = 0);
var
  i:Integer;
  Node:TTreeNode;
begin
  StylesTV.Items.BeginUpdate;
  StylesTV.Items.Clear;
  for i:= 0 to FStyles.Count-1 do
  begin
    Node:= StylesTV.Items.AddChild(nil, FStyles[i].Name);
    Node.Data:= FStyles[i];
  end;
  StylesTV.Items.EndUpdate;

  if Focus >= StylesTV.Items.Count then
    Focus:= StylesTV.Items.Count-1;
  if Focus<>-1 then
    StylesTV.Selected:= StylesTV.Items[Focus];
  StylesTVClick(nil);
end;

procedure TfrxStyleEditorForm.UpdateControls;
var
  b:Boolean;
begin
  b:= StylesTV.Selected<>nil;
  ColorB.Enabled:= b;
  FontB.Enabled:= b;
  FrameB.Enabled:= b;
end;

procedure TfrxStyleEditorForm.PaintBoxPaint(Sender:TObject);
var
  m:TfrxMemoView;
begin
  with PaintBox.Canvas do
  begin
    Brush.Color:= clWindow;
    Pen.Color:= clGray;
    Pen.Width:= 1;
    Pen.Style:= psSolid;
    Rectangle(0, 0, PaintBox.Width, PaintBox.Height);
  end;
  if StylesTV.Selected = nil then Exit;

  m:= TfrxMemoView.Create(nil);
  m.ApplyStyle(TfrxStyleItem(StylesTV.Selected.Data));
  m.Text:= frxResources.Get('dsStyleSample');
  m.GapX:= 20;
  m.GapY:= 10;
  m.Width:= m.CalcWidth;
  m.Height:= m.CalcHeight;
  m.Left:= (PaintBox.Width-m.Width) / 2;
  m.Top:= (PaintBox.Height-m.Height) / 2;
  m.Draw(PaintBox.Canvas, 1, 1, 0, 0);
  m.Free;
end;

procedure TfrxStyleEditorForm.StylesTVClick(Sender:TObject);
begin
  UpdateControls;
  PaintBoxPaint(nil);
end;

procedure TfrxStyleEditorForm.BClick(Sender:TObject);
var
  Style:TfrxStyleItem;
begin
  if StylesTV.Selected = nil then Exit;
  Style:= TfrxStyleItem(StylesTV.Selected.Data);

  case TControl(Sender).Tag of
    2:
      with TfrxColorSelector.Create(TComponent(Sender)) do
      begin
        OnColorChanged:= BClick;
        Tag:= 20;
      end;

    20:Style.Color:= TfrxColorSelector(Sender).Color;

    3:
      with TFontDialog.Create(Application) do
      begin
        Font:= Style.Font;
        Options:= Options+[fdForceFontExist];
        if Execute then
          Style.Font:= Font;
        Free;
      end;

    4:
      with TfrxFrameEditorForm.Create(Owner) do
      begin
        Frame.Assign(Style.Frame);
        if ShowModal = mrOk then
          Style.Frame:= Frame;
        Free;
      end;
  end;

  PaintBoxPaint(nil);
end;

procedure TfrxStyleEditorForm.AddBClick(Sender:TObject);
begin
  FStyles.Add.CreateUniqueName;
  UpdateStyles(FStyles.Count-1);
  StylesTV.Selected.EditText;
end;

procedure TfrxStyleEditorForm.DeleteBClick(Sender:TObject);
begin
  if StylesTV.Selected = nil then Exit;
  TfrxStyleItem(StylesTV.Selected.Data).Free;
  UpdateStyles(StylesTV.Selected.Index);
end;

procedure TfrxStyleEditorForm.LoadBClick(Sender:TObject);
begin
  OpenDialog.Filter:= frxResources.Get('dsStyleFile')+' (*.fs3)|*.fs3';
  if frxDesignerComp<>nil then
    OpenDialog.InitialDir:= frxDesignerComp.OpenDir;
  if OpenDialog.Execute then
  begin
    FStyles.LoadFromFile(OpenDialog.FileName);
    UpdateStyles;
  end;
end;

procedure TfrxStyleEditorForm.SaveBClick(Sender:TObject);
begin
  SaveDialog.Filter:= frxResources.Get('dsStyleFile')+' (*.fs3)|*.fs3';
  if frxDesignerComp<>nil then
    SaveDialog.InitialDir:= frxDesignerComp.SaveDir;
  if SaveDialog.Execute then
    FStyles.SaveToFile(ChangeFileExt(SaveDialog.FileName, '.fs3'));
end;

procedure TfrxStyleEditorForm.CancelBClick(Sender:TObject);
begin
  ModalResult:= mrCancel;
end;

procedure TfrxStyleEditorForm.OkBClick(Sender:TObject);
begin
  ModalResult:= mrOk;
end;

procedure TfrxStyleEditorForm.StylesTVEdited(Sender:TObject; Node:TTreeNode;
  var S:String);
var
  Style:TfrxStyleItem;
begin
  Style:= TfrxStyleItem(Node.Data);
  Style.Name:= s;
end;

procedure TfrxStyleEditorForm.EditBClick(Sender:TObject);
begin
  if StylesTV.Selected = nil then Exit;
  StylesTV.Selected.EditText;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -