📄 margin.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 + -