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

📄 pagesetup.~pas

📁 一个非常好用的中国式表格控件(源码),对需在程序中插入格式复杂的表格非常有用
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
// *****************************************************************************
//
// Note: This free package of source code can only be used for reference and
//       learning purpose, you can distribute it freely, but please do not use
//       it for profit sake.
//
//       Special thanks to: RICHBBS (www.delphibbs.com)
//
//                                                         Huang Qian, Feb 2002
//                                                         Wuhan University
//
// *****************************************************************************

unit PageSetup;       

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls, Spin, Buttons, Printers;

type
  TFormPageSetup = class(TForm)
    PageCtlPageSetup: TPageControl;
    TabSheetPageInfo: TTabSheet;
    LabelDirection: TLabel;
    BevelDirection: TBevel;
    LabelStartPageNo: TLabel;
    TabSheetMargin: TTabSheet;
    LabelMargin: TLabel;
    BevelMargin: TBevel;
    LabelAlign: TLabel;
    BevelAlign: TBevel;
    ChkBoxHorzCenter: TCheckBox;
    ChkBoxVertCenter: TCheckBox;
    TabSheetHF: TTabSheet;
    TabSheetTitle: TTabSheet;
    LabelTitle: TLabel;
    BevelTitle: TBevel;
    BtnOk: TButton;
    BtnCancel: TButton;
    ImageVertPrint: TImage;
    RBtnVPrint: TRadioButton;
    ImageHorzPrint: TImage;
    RBtnHPrint: TRadioButton;
    LabelScale: TLabel;
    BevelScale: TBevel;
    LabelScalePercent: TLabel;
    SEditScale: TSpinEdit;
    BevelPageNo: TBevel;
    LabelPageNo: TLabel;
    LabelTMargin: TLabel;
    SEditTMargin: TSpinEdit;
    LabelBMargin: TLabel;
    SEditBMargin: TSpinEdit;
    LabelLMargin: TLabel;
    SEditLMargin: TSpinEdit;
    LabelRMargin: TLabel;
    SEditRMargin: TSpinEdit;
    LabelHSize: TLabel;
    SEditHeaderSize: TSpinEdit;
    LabelFSize: TLabel;
    SEditFooterSize: TSpinEdit;
    LabelHF: TLabel;
    BevelHF: TBevel;
    GbxPageRange: TGroupBox;
    RBtnPrintAll: TRadioButton;
    RBtnPageRange: TRadioButton;
    LabelFromPage: TLabel;
    LabelToPage: TLabel;
    SEditFromPage: TSpinEdit;
    SEditToPage: TSpinEdit;
    TabSheetGrid: TTabSheet;
    GbxHeader: TGroupBox;
    CbxHeaderType: TComboBox;
    EditHeader1: TEdit;
    EditHeader2: TEdit;
    EditHeader3: TEdit;
    LabelHeader1: TLabel;
    LabelHeader2: TLabel;
    LabelHeader3: TLabel;
    LabelHeaderType: TLabel;
    GbxFooter: TGroupBox;
    LabelFooter1: TLabel;
    LabelFooter2: TLabel;
    LabelFooter3: TLabel;
    LabelFooterType: TLabel;
    CbxFooterType: TComboBox;
    EditFooter1: TEdit;
    EditFooter2: TEdit;
    EditFooter3: TEdit;
    LbxTitleType: TListBox;
    LabelHLineStyle: TLabel;
    CbxHLineStyle: TComboBox;
    LabelHLineWidth: TLabel;
    SEditHLineWidth: TSpinEdit;
    ChkBoxHDoubleLine: TCheckBox;
    LabelFLineStyle: TLabel;
    CbxFLineStyle: TComboBox;
    LabelFLineWidth: TLabel;
    SEditFLineWidth: TSpinEdit;
    ChkBoxFDoubleLine: TCheckBox;
    LabelTitleDistance: TLabel;
    SEditTitleDistance: TSpinEdit;
    LabelTitleContent: TLabel;
    LabelTitleFont: TLabel;
    LabelTail: TLabel;
    BevelTail: TBevel;
    LbxTailType: TListBox;
    LabelTailDistance: TLabel;
    SEditTailDistance: TSpinEdit;
    LabelTailContent: TLabel;
    LabelTailFont: TLabel;
    GbxSplit: TGroupBox;
    RBtnHorzSplit: TRadioButton;
    RBtnVertSplit: TRadioButton;
    ImageHorzSplit: TImage;
    ImageVertSplit: TImage;
    LabelGridInfo: TLabel;
    BevelGridInfo: TBevel;
    ChkBoxMonoColored: TCheckBox;
    ChkBoxPrintGridLine: TCheckBox;
    ChkBoxPrintColTitle: TCheckBox;
    ChkBoxPrintRowTitle: TCheckBox;
    ChkBoxPrintFixedCols: TCheckBox;
    ChkBoxPrintFixedRows: TCheckBox;
    GbxConjunction: TGroupBox;
    LabelTopConjunction: TLabel;
    EditTopConjunction: TEdit;
    LabelBottomConjunction: TLabel;
    EditBottomConjunction: TEdit;
    RBtnPrintConjunction: TRadioButton;
    RBtnNoConjunction: TRadioButton;
    BtnPrinter: TButton;
    FontDialogPageSetup: TFontDialog;
    SEditStartPageNo: TSpinEdit;
    BtnInsertPageNo: TSpeedButton;
    SBtnInsertPageCount: TSpeedButton;
    SBtnInsertDate: TSpeedButton;
    SBtnInsertTime: TSpeedButton;
    SEditFont: TSpeedButton;
    BtnTitleFont: TSpeedButton;
    MemoTitleContent: TMemo;
    BtnTailFont: TSpeedButton;
    MemoTailContent: TMemo;
    LabelTitleExtent: TLabel;
    SEditTitleExtent: TSpinEdit;
    BevelTitleContent: TBevel;
    BevelTailContent: TBevel;
    LabelTailExtent: TLabel;
    SEditTailExtent: TSpinEdit;
    procedure ImageHorzSplitClick(Sender: TObject);
    procedure ImageVertSplitClick(Sender: TObject);
    procedure ImageVertPrintClick(Sender: TObject);
    procedure ImageHorzPrintClick(Sender: TObject);
    procedure BtnPrinterClick(Sender: TObject);
    procedure RBtnVPrintClick(Sender: TObject);
    procedure RBtnHPrintClick(Sender: TObject);
    procedure LbxTitleTypeClick(Sender: TObject);
    procedure LbxTailTypeClick(Sender: TObject);
    procedure CbxHeaderTypeChange(Sender: TObject);
    procedure CbxFooterTypeChange(Sender: TObject);
    procedure BtnInsertPageNoClick(Sender: TObject);
    procedure SBtnInsertPageCountClick(Sender: TObject);
    procedure SBtnInsertDateClick(Sender: TObject);
    procedure SBtnInsertTimeClick(Sender: TObject);
    procedure SEditFontClick(Sender: TObject);
    procedure MemoTitleContentChange(Sender: TObject);
    procedure MemoTailContentChange(Sender: TObject);
    procedure SEditTitleDistanceChange(Sender: TObject);
    procedure SEditTailDistanceChange(Sender: TObject);
    procedure BtnTitleFontClick(Sender: TObject);
    procedure BtnTailFontClick(Sender: TObject);
    procedure BtnOkClick(Sender: TObject);
  private
    { Private declarations }
    FPaperSize, FPageWidth, FPageHeight: Integer; 
    procedure InsertEditText(AText: string);
    procedure AssignEditProp(AHeader: Pointer; AEdit: TEdit);
  public
    { Public declarations }
    ParentGrid: Pointer;
  end;

implementation
uses EasyGrid;
{$R *.DFM}

procedure TFormPageSetup.ImageHorzSplitClick(Sender: TObject);
begin
  RBtnHorzSplit.Checked := True;
  RBtnHorzSplit.SetFocus;
end;

procedure TFormPageSetup.ImageVertSplitClick(Sender: TObject);
begin
  RBtnVertSplit.Checked := True;
  RBtnVertSplit.SetFocus;
end;

procedure TFormPageSetup.ImageVertPrintClick(Sender: TObject);
begin
  RBtnVPrint.Checked := True;
  RBtnVPrint.SetFocus;
end;

procedure TFormPageSetup.ImageHorzPrintClick(Sender: TObject);
begin
  RBtnHPrint.Checked := True;
  RBtnHPrint.SetFocus;
end;

procedure TFormPageSetup.LbxTitleTypeClick(Sender: TObject);

  procedure GetTitleProp;
  begin
    with FTitle do
    begin
      MemoTitleContent.Clear;
      MemoTitleContent.Lines.Add(Content);
      MemoTitleContent.SelStart := 1;
      MemoTitleContent.SelLength := 0;
      MemoTitleContent.Font.Name := FontName;
      MemoTitleContent.Font.Size := FontSize;
      MemoTitleContent.Font.Style := FontStyle;
      MemoTitleContent.Font.Color := FontColor;
      SEditTitleDistance.Value := Round(Distance / ScreenPixelsPerMmY);
    end;
  end;

begin
  with LbxTitleType, TEasyGrid(ParentGrid).EasyGridPageInfo.CommonPageInfo do
  begin
    case ItemIndex of
      0 : FTitle := FMainTitle;
      1 : FTitle := FTitle1;
      2 : FTitle := FTitle2;
      3 : FTitle := FTitle3;
      4 : FTitle := FTitle4;
      5 : FTitle := FTitle5;
      6 : FTitle := FTitle6;
    end;
    GetTitleProp;
  end;
end;

procedure TFormPageSetup.LbxTailTypeClick(Sender: TObject);

  procedure GetTailProp;
  begin
    with FTail do
    begin
      MemoTailContent.Clear;
      MemoTailContent.Lines.Add(Content);
      MemoTailContent.SelStart := 1;
      MemoTailContent.SelLength := 0;
      MemoTailContent.Font.Name := FontName;
      MemoTailContent.Font.Size := FontSize;
      MemoTailContent.Font.Style := FontStyle;
      MemoTailContent.Font.Color := FontColor;
      SEditTailDistance.Value := Round(Distance / ScreenPixelsPerMmY);
    end;
  end;

begin
  with LbxTailType, TEasyGrid(ParentGrid).EasyGridPageInfo.CommonPageInfo do
  begin
    case ItemIndex of
      0 : FTail := FTail1;
      1 : FTail := FTail2;
      2 : FTail := FTail3;
      3 : FTail := FTail4;
      4 : FTail := FTail5;
      5 : FTail := FTail6;
    end;
    GetTailProp;
  end;
end;

procedure TFormPageSetup.CbxHeaderTypeChange(Sender: TObject);
var
  Grid: TEasyGrid;
begin
  Grid := TEasyGrid(ParentGrid);
  with CbxHeaderType, Grid.EasyGridPageInfo.CommonPageInfo do
  begin
    case ItemIndex of
      0 : // 自定义页眉
        begin
          CbxHLineStyle.ItemIndex := Ord(HeaderLineStyle);
          ChkBoxHDoubleLine.Checked := HeaderDoubleLine;
          SEditHLineWidth.Value := HeaderLineWidth;
          EditHeader1.Text := Header1.Content;
          EditHeader2.Text := Header2.Content;
          EditHeader3.Text := Header3.Content;
        end;
      1 :
        begin
          CbxHLineStyle.ItemIndex := 0;
          ChkBoxHDoubleLine.Checked := True;
          SEditHLineWidth.Value := 1;
          EditHeader1.Text := '';
          EditHeader2.Text := '第 &P 页';
          EditHeader3.Text := '';
        end;

⌨️ 快捷键说明

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