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

📄 reportlineedit.pas

📁 该控件是一个带表格线的打印构件
💻 PAS
字号:
unit ReportLineEdit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Buttons, DsgnIntf, ReportUnit;

type
  TReportLineEditForm = class(TForm)
    CloseBtn: TButton;
    PreviewGroup: TGroupBox;
    PropertyGroup: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    LeftEdit: TEdit;
    TopEdit: TEdit;
    HeightEdit: TEdit;
    FontEdit: TEdit;
    EditFont: TSpeedButton;
    FontDialog: TFontDialog;
    PreviewPanel: TPanel;
    PreviewImage: TImage;
    AlignCheck: TCheckBox;
    procedure FormActivate(Sender: TObject);
    procedure EditFontClick(Sender: TObject);
    procedure LeftEditChange(Sender: TObject);
    procedure TopEditChange(Sender: TObject);
    procedure HeightEditChange(Sender: TObject);
    procedure AlignCheckClick(Sender: TObject);
  private
    procedure RefreshValues;
    procedure RefreshImage;
  public
    Modified: Boolean;
    ReportLine: TReportLine;
  end;

var
  ReportLineEditForm: TReportLineEditForm;

implementation

{$R *.DFM}

procedure TReportLineEditForm.RefreshValues;
begin
  LeftEdit.Text := IntToStr(ReportLine.Left);
  TopEdit.Text := IntToStr(ReportLine.Top);
  HeightEdit.Text := IntToStr(ReportLine.Height);
  FontEdit.Text := ReportLine.Font.Name + ' - ' + IntToStr(ReportLine.Font.Size);
  AlignCheck.Checked := ReportLine.RightAlign;
end;

procedure TReportLineEditForm.FormActivate(Sender: TObject);
begin
  FontDialog.Font.Assign(ReportLine.Font);
  RefreshValues;
  Modified := False;
end;

procedure TReportLineEditForm.EditFontClick(Sender: TObject);
begin
  if FontDialog.Execute then
  begin
    ReportLine.Font.Assign(FontDialog.Font);
    Modified := True;
    RefreshValues;
    RefreshImage;
  end;
end;

procedure TReportLineEditForm.LeftEditChange(Sender: TObject);
var
  OldValue: Integer;
begin
  OldValue := ReportLine.Left;
  if LeftEdit.Text = '' then ReportLine.Left := 0
    else
    try
      ReportLine.Left := StrToInt(LeftEdit.Text);
      Modified := True;
      RefreshImage;
    except
      LeftEdit.Text := IntToStr(OldValue);
    end;
end;

procedure TReportLineEditForm.TopEditChange(Sender: TObject);
var
  OldValue: Integer;
begin
  OldValue := ReportLine.Top;
  if TopEdit.Text = '' then ReportLine.Top := 0
    else
    try
      ReportLine.Top := StrToInt(TopEdit.Text);
      Modified := True;
      RefreshImage;
    except
      TopEdit.Text := IntToStr(OldValue);
    end;
end;

procedure TReportLineEditForm.HeightEditChange(Sender: TObject);
var
  OldValue: Integer;
begin
  OldValue := ReportLine.Height;
  if HeightEdit.Text = '' then ReportLine.Height := 0
    else
    try
      ReportLine.Height := StrToInt(HeightEdit.Text);
      Modified := True;
      RefreshImage;
    except
      HeightEdit.Text := IntToStr(OldValue);
    end;
end;

procedure TReportLineEditForm.RefreshImage;
begin
  PreviewImage.Canvas.Brush.Color := clWhite;
  PreviewImage.Canvas.Brush.Style := bsSolid;
  PreviewImage.Canvas.Pen.Color := clWhite;
  PreviewImage.Canvas.Pen.Style := psSolid;
  PreviewImage.Canvas.Rectangle(0, 0, PreviewImage.Width, PreviewImage.Height);
  PreviewImage.Canvas.Pen.Color := clBlack;
  PreviewImage.Canvas.MoveTo(10, 10);
  PreviewImage.Canvas.LineTo(PreviewImage.Width, 10);
  PreviewImage.Canvas.Pen.Color := clSilver;
  PreviewImage.Canvas.MoveTo(10, 10 + ReportLine.Height);
  PreviewImage.Canvas.LineTo(PreviewImage.Width, 10 + ReportLine.Height);
  PreviewImage.Canvas.Pen.Color := clBlack;
  PreviewImage.Canvas.MoveTo(10, 0);
  PreviewImage.Canvas.LineTo(10, PreviewImage.Height);
  PreviewImage.Canvas.Font.Assign(ReportLine.Font);
  PreviewImage.Canvas.TextOut(10 + ReportLine.Left, 10 + ReportLine.Top, 'Aa 0123456789');
end;

procedure TReportLineEditForm.AlignCheckClick(Sender: TObject);
begin
  ReportLine.RightAlign := AlignCheck.Checked;
  Modified := True;
end;

end.

⌨️ 快捷键说明

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