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

📄 panelunit.pas

📁 一个报表控件TRepoEdit
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{*********************************************}
{*   RepoEdit -  QuickReport Editor          *}
{*   for Delphi 4                            *}
{*   (R) Copyright                           *}
{*   Borzov Vladimir borzov@rsm.ru           *}
{*********************************************}
unit PanelUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, ExtCtrls, StdCtrls, Menus, Db, DBTables,ConfirmUnit1, ToolWin,
  ComCtrls, Spin;
type
  TPanelForm = class(TForm)
    PanelTop: TControlBar;
    ToolBar1: TToolBar;
    ToolBar2: TToolBar;
    ToolBar3: TToolBar;
    BtnParam: TSpeedButton;
    BtnChangeName: TSpeedButton;
    BtnDelete: TSpeedButton;
    SpeedButtonClear: TSpeedButton;
    BtnSeeAll: TSpeedButton;
    BtnSave: TSpeedButton;
    SpButtonPlus: TSpeedButton;
    EditHideDisabled: TSpeedButton;
    SpeedButton1: TSpeedButton;
    BtnCancel: TSpeedButton;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    FontDialog: TFontDialog;
    ToolBar4: TToolBar;
    BtnFont: TSpeedButton;
    ToolButton4: TToolButton;
    EditFont: TComboBox;
    EditFontSize: TComboBox;
    ToolButton6: TToolButton;
    BtnFontBold: TSpeedButton;
    BtnFontItalic: TSpeedButton;
    BtnFontUnderline: TSpeedButton;
    ToolButton7: TToolButton;
    BtnAlignLeft: TSpeedButton;
    BtnAlignCenter: TSpeedButton;
    BtnAlignRight: TSpeedButton;
    BtnMinus: TSpeedButton;
    ToolButton8: TToolButton;
    ToolBar5: TToolBar;
    LabLeft: TLabel;
    EditLeft: TSpinEdit;
    LabTop: TLabel;
    EditTop: TSpinEdit;
    ToolButton9: TToolButton;
    LabHeight: TLabel;
    EditHeight: TSpinEdit;
    LabWidth: TLabel;
    EditWidth: TSpinEdit;
    EditEnabled: TCheckBox;
    ToolBar6: TToolBar;
    EditCaption: TComboBox;
    EditLines: TBitBtn;
    OpenDialog: TOpenDialog;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure EditHideDisabledClick(Sender: TObject);
    procedure SpButtonPlusClick(Sender: TObject);
    procedure RichText1Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure BtnDeleteClick(Sender: TObject);
    procedure SpeedButtonClearClick(Sender: TObject);
    procedure BtnFontClick(Sender: TObject);
    procedure EditFontChange(Sender: TObject);
    procedure BtnFontBoldClick(Sender: TObject);
    procedure BtnMinusClick(Sender: TObject);
    procedure EditLeftChange(Sender: TObject);
    procedure EditWidthChange(Sender: TObject);
    procedure EditEnabledClick(Sender: TObject);
    procedure EditLinesClick(Sender: TObject);
    procedure EditCaptionChange(Sender: TObject);
  private
    { Private declarations }
    FOldOnClose:TCloseEvent;
    CannotSave:boolean;
  public
    { Public declarations }
    property OldOnClose:TCloseEvent read FOldOnClose write FOldOnClose;
    procedure SetEnabledBV(Value:boolean);
    procedure ThOnClose(Sender: TObject; var Action: TCloseAction);
    procedure SetFontButtons;
    procedure SetFontValues;
  end;

var
  PanelForm: TPanelForm;

implementation

{$R *.DFM}

uses RepoEdit,QuickRPT,QRCTRLS,QRPRNTR,EditFileUnit,
  MessUnit,GetNewTypeUnit,qrextra,GetMemoTextUnit,qrExpBld;

procedure TPanelForm.SetFontValues;
var Selected:TWinControl;
    i:integer;
begin

  FontDialog.Font.Name:=EditFont.Text;
  try
    FontDialog.font.Size:=strtoint(EditFontSize.text);
  except
  end;

  if BtnFontBold.Down
  then fontdialog.Font.Style:=fontdialog.Font.Style+[fsBold]  // system.Include(FontDialog.Font.style,fsBold)
  else fontdialog.Font.Style:=fontdialog.Font.Style-[fsBold];
  if BtnFontItalic.Down
  then fontdialog.Font.Style:=fontdialog.Font.Style+[fsItalic]
  else fontdialog.Font.Style:=fontdialog.Font.Style-[fsItalic];
  if BtnFontUnderline.Down
  then fontdialog.Font.Style:=fontdialog.Font.Style+[fsUnderline]
  else fontdialog.Font.Style:=fontdialog.Font.Style-[fsUnderline];

  if owner is TRepoEdit then Selected:=(Owner as TRepoEdit).Selected
  else Selected:=nil;


  if Assigned(selected)
     and ((Selected is TQRCustomLabel)
          or (Selected is TQRCustomRichText)
          or (Selected is TQRCustomBand)
          or (Selected is TQuickRep)
         )
  then begin
    if Selected is TQuickRep then (Selected as TQuickRep).Font:=FontDialog.Font
    else if Selected is TqrCustomLabel then (Selected as TqrCustomLabel).Font:=FontDialog.Font
    else if Selected is TqrCustomRichText then (Selected as TqrCustomRichText).Font:=FontDialog.Font
    else (Selected as TqrCustomBand).Font:=FontDialog.Font;
  end;

  if Assigned(selected) and
     ((Selected is TQRCustomLabel)
      or (Selected is TQRCustomRichText)
     )
  then begin
    BtnAlignLeft.Enabled:=true;
    BtnAlignCenter.Enabled:=true;
    BtnAlignRight.Enabled:=true;
    if Selected is TqrCustomLabel then begin
      if BtnAlignLeft.down then (Selected as tqrCustomLabel).Alignment:=taleftjustify
      else if BtnAlignRight.down then (Selected as tqrCustomLabel).Alignment:=taRightjustify
      else if BtnAlignCenter.down then (Selected as tqrCustomLabel).Alignment:=taCenter;
    end
    else begin
      if BtnAlignLeft.down then (Selected as TQRCustomRichText).Alignment:=taleftjustify
      else if BtnAlignRight.down then (Selected as TQRCustomRichText).Alignment:=taRightjustify
      else if BtnAlignCenter.down then (Selected as TQRCustomRichText).Alignment:=taCenter;
    end
  end;

  if assigned(Selected)
  then begin

    if Selected is TQRDBText then (Selected as TQRDBText).DataField:=EditCaption.Text
    else if Selected is TQREXPr then begin
      (Selected as TQREXPR).Expression:=EditCaption.Text;
    end
    else
     if Selected is TQRDBImage then (Selected as TQRDBImage).DataField:=EditCaption.Text
    else if selected is TQRSysData then (selected as TQRsysdata).Text:=EditCaption.Text
    else if selected is TQRCustomLabel then (selected as TQRCustomlabel).Caption:=EditCaption.Text;

    selected.SetBounds(editLeft.Value,EditTop.Value,Editwidth.Value,EditHeight.Value);
    application.ProcessMessages;
    (Owner as TRepoEdit).SetRectCoord;

    selected.Enabled:=EditEnabled.Checked;
    for i:=0 to selected.ControlCount-1 do
      if selected.Controls[i] is tEnabledLab then begin
         selected.Controls[i].Visible:=not selected.Enabled;
         break
      end;
    (Owner as TRepoEdit).thReport.Repaint;
  end
end;

procedure TPanelForm.SetFontButtons;
var Selected:TWinControl;
    i,k:integer;
    thDataSet:TDataset;
begin
  if owner is TRepoEdit then Selected:=(Owner as TRepoEdit).Selected
  else Selected:=nil;

  if Assigned(selected)
     and ((Selected is TQRCustomLabel)
          or (Selected is TQRCustomRichText)
          or (Selected is TQRCustomBand)
          or (Selected is TQuickRep)
         )
  then begin
    if Selected is TQuickRep then FontDialog.Font:=(Selected as TQuickRep).Font
    else if Selected is TqrCustomLabel then FontDialog.Font:=(Selected as TqrCustomLabel).Font
    else if Selected is TqrCustomRichText then FontDialog.Font:=(Selected as TqrCustomRichText).Font
    else FontDialog.Font:=(Selected as TqrCustomBand).Font;

    Btnfont.Enabled:=true;
    EditFont.Enabled:=true;
    EditFontSize.Enabled:=true;
    BtnFontBold.Enabled:=true;
    BtnFontItalic.Enabled:=true;
    BtnFontUnderline.enabled:=true;
    BtnAlignLeft.Enabled:=true;
    BtnAlignCenter.Enabled:=true;
    BtnAlignRight.Enabled:=true;

    EditFont.Text:=FontDialog.font.Name;
    EditFontSize.Text:=inttostr(FontDialog.Font.size);
    BtnFontBold.Down:=fsBold in FontDialog.Font.Style;
    BtnFontItalic.Down:=fsItalic in FontDialog.Font.Style;
    BtnFontUnderline.Down:=fsUnderline in FontDialog.Font.Style;

  end
  else begin
    Btnfont.Enabled:=false;
    EditFont.Text:='';
    EditFont.Enabled:=false;
    EditFontSize.Text:='';
    EditFontSize.Enabled:=false;
    BtnFontBold.Enabled:=false;
    BtnFontItalic.Enabled:=false;
    BtnFontUnderline.enabled:=false;
    BtnAlignLeft.Enabled:=false;
    BtnAlignCenter.Enabled:=false;
    BtnAlignRight.Enabled:=false;
  end;

  if Assigned(selected) and
     ((Selected is TQRCustomLabel)
      or (Selected is TQRCustomRichText)
     )
  then begin
    BtnAlignLeft.Enabled:=true;
    BtnAlignCenter.Enabled:=true;
    BtnAlignRight.Enabled:=true;
    if Selected is TqrCustomLabel then begin
      BtnAlignLeft.down:=(Selected as tqrCustomLabel).Alignment=taleftjustify;
      BtnAlignRight.down:=(Selected as tqrCustomLabel).Alignment=taRightjustify;
      BtnAlignCenter.down:=(Selected as tqrCustomLabel).Alignment=taCenter;
    end
    else begin
      BtnAlignLeft.down:=(Selected as TQRCustomRichText).Alignment=taleftjustify;
      BtnAlignRight.down:=(Selected as TQRCustomRichText).Alignment=taRightjustify;
      BtnAlignCenter.down:=(Selected as TQRCustomRichText).Alignment=taCenter;
    end
  end
  else begin
    BtnAlignLeft.Enabled:=false;
    BtnAlignCenter.Enabled:=false;
    BtnAlignRight.Enabled:=false;
  end;

  if assigned(Selected)
  then begin
    EditTop.enabled:=true;
    EditWidth.enabled:=true;
    EditLeft.enabled:=true;
    EditHeight.enabled:=true;
    LabTop.enabled:=true;
    LabWidth.enabled:=true;
    LabLeft.enabled:=true;
    LabHeight.enabled:=true;

    EditTop.OnChange:=nil;
    EditWidth.Onchange:=nil;
    EditLeft.OnChange:=nil;
    EditHeight.OnChange:=nil;
    EditTop.Value:=selected.Top;
    EditWidth.Value:=selected.Width;
    EditLeft.Value:=selected.Left;
    EditHeight.Value:=selected.Height;
    EditTop.OnChange:=EditLeftChange;
    EditWidth.Onchange:=EditwidthChange;
    EditLeft.OnChange:=EditLeftChange;
    EditHeight.OnChange:=EditLeftChange;
    EditEnabled.Enabled:=true;

    EditEnabled.OnClick:=nil;
    EditEnabled.Checked:=Selected.Enabled;
    EditEnabled.OnClick:=EditEnabledClick;

    EditCaption.Enabled:=true;

    EditCaption.Style:=csSimple;

⌨️ 快捷键说明

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