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

📄 frmdrawreportdesignaddgridunt.pas

📁 EAComps手工画报表 对写报表编辑器有一定的参考价值
💻 PAS
字号:
unit frmDrawReportDesignAddGridUnt;

interface

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

type
  TDrawReportDesignAddGridParam = record
    PageWidth: Integer;
    PageHeight: Integer;
    CellSpace: Integer;

    Cols: Integer;
    Rows: Integer;
    GridAlign: Integer; //0:左,1:中,2:右
    IsFixCellSize: Boolean;
    ColWidth: Integer;
    RowHeight: Integer;
  end;

  TfrmDrawReportDesignAddGrid = class(TForm)
    Label1: TLabel;
    Bevel1: TBevel;
    Label2: TLabel;
    Label3: TLabel;
    edtCols: TEdit;
    edtRows: TEdit;
    udCols: TUpDown;
    udRows: TUpDown;
    Label4: TLabel;
    Bevel2: TBevel;
    rbFixCellSize: TRadioButton;
    rbPageCellSize: TRadioButton;
    edtColWidth: TEdit;
    edtRowHeight: TEdit;
    udColWidth: TUpDown;
    udRowHeight: TUpDown;
    labColWidth: TLabel;
    labRowHeight: TLabel;
    btnOk: TButton;
    btnCancel: TButton;
    Bevel3: TBevel;
    Label5: TLabel;
    Bevel4: TBevel;
    cboAlign: TComboBox;
    labAlign: TLabel;
    procedure rbFixCellSizeClick(Sender: TObject);
    procedure rbPageCellSizeClick(Sender: TObject);
    procedure udColsChanging(Sender: TObject; var AllowChange: Boolean);
    procedure udRowsChanging(Sender: TObject; var AllowChange: Boolean);
    procedure udColWidthClick(Sender: TObject; Button: TUDBtnType);
    procedure udRowHeightClick(Sender: TObject; Button: TUDBtnType);
    procedure btnOkClick(Sender: TObject);
  private
    FParam: TDrawReportDesignAddGridParam;

    procedure InitData;
    procedure ClearData;
    procedure SetData(AParam: TDrawReportDesignAddGridParam);
    procedure GetData(var AParam: TDrawReportDesignAddGridParam);

    procedure SetCellEnabled(AEnabled: Boolean);
    procedure AdjustEditValue;
  public
    { Public declarations }
  end;

  function ShowDrawReportDesignAddGridDlg(var AParam: TDrawReportDesignAddGridParam): Boolean;

var
  frmDrawReportDesignAddGrid: TfrmDrawReportDesignAddGrid;

implementation
uses
  EASysUtils;
{$R *.dfm}

function ShowDrawReportDesignAddGridDlg(var AParam: TDrawReportDesignAddGridParam): Boolean;
begin
  Result := False;
  frmDrawReportDesignAddGrid := TfrmDrawReportDesignAddGrid.Create(Application);
  with frmDrawReportDesignAddGrid do
  try
    SetData(AParam);
    InitData;
    if ShowModal = IDOK then
    begin
      GetData(AParam);
      Result := True;
    end;
  finally
    ClearData;
    Free;
  end;
  frmDrawReportDesignAddGrid := nil;
end;

procedure TfrmDrawReportDesignAddGrid.SetCellEnabled(AEnabled: Boolean);
begin
  edtColWidth.Enabled := AEnabled;
  udColWidth.Enabled := AEnabled;
  edtRowHeight.Enabled := AEnabled;
  udRowHeight.Enabled := AEnabled;
  labColWidth.Enabled := AEnabled;
  labRowHeight.Enabled := AEnabled;  
  labAlign.Enabled := AEnabled;
  cboAlign.Enabled := AEnabled;
end;

procedure TfrmDrawReportDesignAddGrid.rbFixCellSizeClick(Sender: TObject);
begin
  SetCellEnabled(True);
end;

procedure TfrmDrawReportDesignAddGrid.rbPageCellSizeClick(Sender: TObject);
begin
  SetCellEnabled(False);
end;

procedure TfrmDrawReportDesignAddGrid.AdjustEditValue;
begin
  if udCols.Position * udColWidth.Position > FParam.PageWidth then
    udColWidth.Position := Trunc(FParam.PageWidth / udCols.Position);
  if udRows.Position * udRowHeight.Position > FParam.PageHeight then
    udRowHeight.Position := Trunc(FParam.PageHeight / udRows.Position);
end;

procedure TfrmDrawReportDesignAddGrid.ClearData;
begin

end;

procedure TfrmDrawReportDesignAddGrid.GetData(
  var AParam: TDrawReportDesignAddGridParam);
begin
  AParam.Cols := udCols.Position;
  AParam.Rows := udRows.Position;
  AParam.GridAlign := cboAlign.ItemIndex;
  AParam.IsFixCellSize := rbFixCellSize.Checked;
  AParam.ColWidth := udColWidth.Position;
  AParam.RowHeight := udRowHeight.Position;
end;

procedure TfrmDrawReportDesignAddGrid.InitData;
begin
  udCols.Max := Trunc(FParam.PageWidth / FParam.CellSpace);
  udRows.Max := Trunc(FParam.PageHeight / FParam.CellSpace);
  udColWidth.Min := FParam.CellSpace;
  udColWidth.Position := FParam.CellSpace;
  udRowHeight.Min := FParam.CellSpace;
  udRowHeight.Position := FParam.CellSpace;
end;

procedure TfrmDrawReportDesignAddGrid.SetData(
  AParam: TDrawReportDesignAddGridParam);
begin
  FParam := AParam;
end;

procedure TfrmDrawReportDesignAddGrid.udColsChanging(Sender: TObject;
  var AllowChange: Boolean);
begin
  AdjustEditValue;
end;

procedure TfrmDrawReportDesignAddGrid.udRowsChanging(Sender: TObject;
  var AllowChange: Boolean);
begin
  AdjustEditValue;
end;

procedure TfrmDrawReportDesignAddGrid.udColWidthClick(Sender: TObject;
  Button: TUDBtnType);
begin
  AdjustEditValue;
end;

procedure TfrmDrawReportDesignAddGrid.udRowHeightClick(Sender: TObject;
  Button: TUDBtnType);
begin      
  AdjustEditValue;
end;

procedure TfrmDrawReportDesignAddGrid.btnOkClick(Sender: TObject);
begin
  ModalResult := IDOK;
end;

end.

⌨️ 快捷键说明

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