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

📄 margin.pas

📁 Delphi报表设计器源代码
💻 PAS
字号:
// create 李泽伦
unit margin;

interface

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

type
  TMarginForm = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    LeftMargin: TSpinEdit;
    TopMargin: TSpinEdit;
    RightMargin: TSpinEdit;
    BottomMargin: TSpinEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Label5: TLabel;
    PrinterSetupDialog1: TPrinterSetupDialog;
    Label6: TLabel;
    SpeedButton2: TSpeedButton;
    procedure SpeedButton2Click(Sender: TObject);
    procedure TopMarginKeyPress(Sender: TObject; var Key: Char);
    procedure BottomMarginKeyPress(Sender: TObject; var Key: Char);
    procedure LeftMarginKeyPress(Sender: TObject; var Key: Char);
    procedure RightMarginKeyPress(Sender: TObject; var Key: Char);
    procedure TopMarginKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BottomMarginKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure LeftMarginKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure RightMarginKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
    class function EditReportControl(AOwner:TComponent;ReportControl:TReportControl):TModalResult;
  end;

implementation


{$R *.DFM}

procedure TMarginForm.SpeedButton2Click(Sender: TObject);
begin
  PrinterSetupDialog1.Execute;
end;

class function TMarginForm.EditReportControl(
  AOwner:TComponent;ReportControl: TReportControl):TModalResult;
var
  MarginRect: TRect;
begin
  Result:=mrCancel;
  with TMarginForm.Create(Aowner) do
  begin
    try
      MarginRect := ReportControl.GetMargin;
      LeftMargin.Value := MarginRect.Left;
      TopMargin.Value := MarginRect.Top;
      RightMargin.Value := MarginRect.Right;
      BottomMargin.Value := MarginRect.Bottom;
      prDeviceMode;
      with Devmode^ do //设置打印纸  李泽伦
      begin
        dmFields := dmFields or DM_PAPERSIZE;
        dmPapersize := ReportControl.FprPageNo;
        dmFields := dmFields or DM_ORIENTATION;
        dmOrientation := ReportControl.FprPageXy;

        dmPaperLength := ReportControl.fpaperLength;
        dmPaperWidth := ReportControl.fpaperWidth;
      end;
      if ShowModal = mrOK then
      begin
        //验证是否为正确的数字
        try
            ReportControl.SetMargin(LeftMargin.Value,
              TopMargin.Value,
              RightMargin.Value,
              BottomMargin.Value);
            Result:=mrOK;
        except
          on E: EConvertError do
            MessageBox(handle, pchar('程序错误,错误信息如下:' + #13#10 + E.Message), '错误', MB_ICONERROR+MB_OK);
        end;
      end;
    finally
      Free;
    end;
  end;
end;

procedure TMarginForm.TopMarginKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #27 then
  begin
     key := #0;
     BitBtn2.Click;
  end;
end;

procedure TMarginForm.BottomMarginKeyPress(Sender: TObject;
  var Key: Char);
begin
  if key = #27 then
  begin
     key := #0;
     BitBtn2.Click;
  end;
end;

procedure TMarginForm.LeftMarginKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #27 then
  begin
     key := #0;
     BitBtn2.Click;
  end;
end;

procedure TMarginForm.RightMarginKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #27 then
  begin
     key := #0;
     BitBtn2.Click;
  end;
end;

procedure TMarginForm.TopMarginKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = 13 then
  begin
     key := 0;
     BitBtn1.Click;
     exit;
  end;
end;

procedure TMarginForm.BottomMarginKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = 13 then
  begin
     key := 0;
     BitBtn1.Click;
     exit;
  end;
end;

procedure TMarginForm.LeftMarginKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = 13 then
  begin
     key := 0;
     BitBtn1.Click;
     exit;
  end;
end;

procedure TMarginForm.RightMarginKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = 13 then
  begin
     key := 0;
     BitBtn1.Click;
     exit;
  end;
end;

end.

⌨️ 快捷键说明

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