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

📄 frmdrawgridstaticgridsetupunt.pas

📁 EAComps手工画报表 对写报表编辑器有一定的参考价值
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit frmDrawGridStaticGridSetupUnt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, FormDlgEscUnt, ExtCtrls, EAPanel, ComCtrls, StdCtrls, jpeg,
  ActnList, Buttons, ImgList, EAEdit, Grids, EAReportDrawGrid_Comp, Spin;

type
  TDrawGridStaticGridSetupParam = record
    StaticGrid: TEAReportStaticGrid;
  end;

  TfrmDrawGridStaticGridSetup = class(TFormDlgEsc)
    bwWizard: TEAButtonWizard;
    pcMain: TPageControl;
    tsGridInfoSet: TTabSheet;
    tsSizeSetup: TTabSheet;
    lbTitleList: TListBox;
    Panel2: TPanel;
    Bevel1: TBevel;
    Image1: TImage;
    labTitle: TLabel;
    labExplain: TLabel;
    pcFmtSet: TPageControl;
    tsTitleSet: TTabSheet;
    tsDataSet: TTabSheet;
    Label3: TLabel;
    labTitleValue: TLabel;
    cboCellType: TComboBox;
    edtTitleValue: TEAButtonEdit;
    ImgList: TImageList;
    btnTitleFontSet: TSpeedButton;
    ActList: TActionList;
    ActFontSet: TAction;
    cboTitleVAlign: TComboBox;
    Label16: TLabel;
    Label15: TLabel;
    cboTitleHAlign: TComboBox;
    Label5: TLabel;
    btnDataFontSet: TSpeedButton;
    cboDataVAlign: TComboBox;
    Label7: TLabel;
    Label8: TLabel;
    cboDataHAlign: TComboBox;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    chkDataWordWrap: TCheckBox;
    chkDataShowZeroValue: TCheckBox;
    edtDataFmt: TEdit;
    Label6: TLabel;
    ActAddTitle: TAction;
    ActRenameTitle: TAction;
    ActDeleteTitle: TAction;
    GroupBox1: TGroupBox;
    pnlTitleTest: TPanel;
    labTitleTest: TLabel;
    GroupBox2: TGroupBox;
    pnlDataTest: TPanel;
    labDataTest: TLabel;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    grdSizeSet: TStringGrid;
    Label14: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    chkShowLine: TCheckBox;
    chkShowTitle: TCheckBox;
    Panel4: TPanel;
    rdoWidthScale: TRadioButton;
    rdoWidthAbs: TRadioButton;
    Panel5: TPanel;
    rdoHeightAuto: TRadioButton;
    rdoHeightFix: TRadioButton;
    rdoHeightDynamic: TRadioButton;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    ActUpMove: TAction;
    ActDownMove: TAction;
    dlgFont: TFontDialog;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    GroupBox5: TGroupBox;
    Label1: TLabel;
    Label4: TLabel;
    speTitleHeight: TSpinEdit;
    pnlTitleColor: TPanel;
    dlgColor: TColorDialog;
    pnlLineColor: TPanel;
    Label2: TLabel;
    procedure bwWizardFinishClick(Sender: TObject);
    procedure bwWizardCancelClick(Sender: TObject);
    procedure ActAddTitleExecute(Sender: TObject);
    procedure ActRenameTitleExecute(Sender: TObject);
    procedure ActDeleteTitleExecute(Sender: TObject);
    procedure ActUpMoveExecute(Sender: TObject);
    procedure ActDownMoveExecute(Sender: TObject);
    procedure btnTitleFontSetClick(Sender: TObject);
    procedure btnDataFontSetClick(Sender: TObject);
    procedure edtTitleValueChange(Sender: TObject);
    procedure cboTitleHAlignChange(Sender: TObject);
    procedure cboTitleVAlignChange(Sender: TObject);
    procedure cboCellTypeChange(Sender: TObject);
    procedure labTitleTestDblClick(Sender: TObject);
    procedure labDataTestDblClick(Sender: TObject);
    procedure edtTitleValueButtonClick(Sender: TObject;
      ClickObject: TEAButtonClickObject);
    procedure edtDataFmtChange(Sender: TObject);
    procedure cboDataHAlignChange(Sender: TObject);
    procedure cboDataVAlignChange(Sender: TObject);
    procedure chkDataWordWrapClick(Sender: TObject);
    procedure chkDataShowZeroValueClick(Sender: TObject);
    procedure lbTitleListClick(Sender: TObject);
    procedure bwWizardPageChange(Sender: TObject);
    procedure grdSizeSetDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure bwWizardNextClick(Sender: TObject; CurrPageIndex: Integer;
      var NewPageIndex: Integer; var AllowChange: Boolean);
    procedure lbTitleListDrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure rdoWidthScaleClick(Sender: TObject);
    procedure rdoWidthAbsClick(Sender: TObject);
    procedure rdoHeightAutoClick(Sender: TObject);
    procedure rdoHeightFixClick(Sender: TObject);
    procedure rdoHeightDynamicClick(Sender: TObject);
    procedure chkShowLineClick(Sender: TObject);
    procedure chkShowTitleClick(Sender: TObject);
    procedure bwWizardBackClick(Sender: TObject; CurrPageIndex: Integer;
      var NewPageIndex: Integer; var AllowChange: Boolean);
    procedure FormShow(Sender: TObject);
    procedure pnlTitleColorClick(Sender: TObject);
    procedure speTitleHeightChange(Sender: TObject);
    procedure pnlLineColorClick(Sender: TObject);
  private
    FParam: TDrawGridStaticGridSetupParam;

    procedure InitData;
    procedure SetData(AParam: TDrawGridStaticGridSetupParam);
    procedure GetData(AParam: TDrawGridStaticGridSetupParam);

    procedure AdjustUI;
    procedure LoadOneTitleInfo;
  public
    { Public declarations }
  end;

  function ShowDrawGridStaticGridSetupDlg(AParam: TDrawGridStaticGridSetupParam): Boolean;

var
  frmDrawGridStaticGridSetup: TfrmDrawGridStaticGridSetup;

implementation
uses
  EASysUtils, EAGraphicFun_Lib, EAReportPmmDefining_Lib,
  frmEAPubMemoEditUnt, frmEAPubInputUnt;

{$R *.dfm}
function ShowDrawGridStaticGridSetupDlg(AParam: TDrawGridStaticGridSetupParam): Boolean;
begin
  Result := False;
  frmDrawGridStaticGridSetup := TfrmDrawGridStaticGridSetup.Create(Application);
  with frmDrawGridStaticGridSetup do
  try
    SetData(AParam);
    InitData;
    if ShowModal = IDOK then
    begin
      GetData(AParam);
      Result := True;
    end;
  finally
    Free;
  end;
  frmDrawGridStaticGridSetup := nil;
end;

const
  cSTitleImg = 3;

procedure TfrmDrawGridStaticGridSetup.bwWizardFinishClick(Sender: TObject);
begin
  ModalResult := IDOK;
end;

procedure TfrmDrawGridStaticGridSetup.bwWizardCancelClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmDrawGridStaticGridSetup.GetData(
  AParam: TDrawGridStaticGridSetupParam);
var
  I: Integer;
begin
  for I := 0 to FParam.StaticGrid.TitleCount - 1 do
    AParam.StaticGrid.Titles[I].Width := grdSizeSet.ColWidths[I + 1];
  AParam.StaticGrid.TitleHeight := grdSizeSet.RowHeights[0];
  AParam.StaticGrid.DataHeight := grdSizeSet.RowHeights[1];
  FParam.StaticGrid.TitleBackColor := pnlTitleColor.Color;
  FParam.StaticGrid.TitleHeight := speTitleHeight.Value;
end;

procedure TfrmDrawGridStaticGridSetup.InitData;
var
  I: Integer;
begin
  for I := 0 to FParam.StaticGrid.TitleCount - 1 do
    lbTitleList.Items.Add(FParam.StaticGrid.Titles[I].Text);
  grdSizeSet.Cells[0, 0] := '标题';
  grdSizeSet.Cells[0, 1] := '数据';
  pcMain.ActivePageIndex := 0;
  pcFmtSet.ActivePageIndex := 0;
  if lbTitleList.Count > 0 then
    lbTitleList.ItemIndex := 0
  else
    lbTitleList.ItemIndex := -1;
  LoadOneTitleInfo;
end;

procedure TfrmDrawGridStaticGridSetup.SetData(
  AParam: TDrawGridStaticGridSetupParam);
begin
  FParam := AParam;
end;

procedure TfrmDrawGridStaticGridSetup.AdjustUI;
begin
  pcFmtSet.Enabled := (lbTitleList.Count > 0) and (lbTitleList.SelCount > 0);
  edtTitleValue.Enabled := lbTitleList.SelCount = 1;
  labTitleValue.Enabled := edtTitleValue.Enabled;
end;

procedure TfrmDrawGridStaticGridSetup.LoadOneTitleInfo;
var
  vIndex: Integer;
begin
  vIndex := lbTitleList.ItemIndex;
  if vIndex = -1 then
  begin
    AdjustUI;
    Exit;
  end;
{ Title }
  with FParam.StaticGrid do
  begin
    edtTitleValue.Text := Titles[vIndex].Text;
    cboTitleHAlign.ItemIndex := Integer(Titles[vIndex].HorzPos);
    cboTitleVAlign.ItemIndex := Integer(Titles[vIndex].VertPos);
    cboCellType.ItemIndex := Integer(Titles[vIndex].FieldType);
    labTitleTest.Font := Titles[vIndex].Font;
    case cboTitleHAlign.ItemIndex of
      0: labTitleTest.Alignment := taLeftJustify;
      1: labTitleTest.Alignment := taCenter;
      2: labTitleTest.Alignment := taRightJustify;
    end;
    case cboTitleVAlign.ItemIndex of
      0: labTitleTest.Layout := tlTop;
      1: labTitleTest.Layout := tlCenter;
      2: labTitleTest.Layout := tlBottom;
    end;
  end;
{ Data }
  with FParam.StaticGrid.Titles[vIndex].ValueInfo do
  begin
    edtDataFmt.Text := FormatStr;
    cboDataHAlign.ItemIndex := Integer(HorzPos);
    cboDataVAlign.ItemIndex := Integer(VertPos);
    chkDataWordWrap.Checked := WordWrap;
    chkDataShowZeroValue.Checked := ShowZeroValue;

    labDataTest.Font := Font;
    case cboDataHAlign.ItemIndex of
      0: labDataTest.Alignment := taLeftJustify;
      1: labDataTest.Alignment := taCenter;
      2: labDataTest.Alignment := taRightJustify;
    end;
    case cboDataVAlign.ItemIndex of
      0: labDataTest.Layout := tlTop;
      1: labDataTest.Layout := tlCenter;
      2: labDataTest.Layout := tlBottom;
    end;
  end;
  AdjustUI;
end;

procedure TfrmDrawGridStaticGridSetup.ActAddTitleExecute(Sender: TObject);
label
  gotoLabel;
var
  vEditValue: string;
  I: Integer;
begin
  I := 1;
  while True do
  begin
    vEditValue := '新标题' + IntToStr(I);
    if lbTitleList.Items.IndexOf(vEditValue) = -1 then
      Break;
    Inc(I);
  end;

  gotoLabel:
  if ShowEAPubInputDlg('添加', '标题名称', vEditValue) then
  begin
    vEditValue := Trim(vEditValue);
    if ea.Str.FindListValue(vEditValue, lbTitleList.Items) > -1 then
    begin
      ea.Dlg.MsgInfo('标题名称' + vEditValue + '已存在,请更改。');
      goto gotoLabel;
    end;
    FParam.StaticGrid.AddTitle.Text := vEditValue;
    lbTitleList.Items.Add(vEditValue);
    lbTitleList.ItemIndex := lbTitleList.Items.Count - 1;
    LoadOneTitleInfo;
  end;
end;

procedure TfrmDrawGridStaticGridSetup.ActRenameTitleExecute(
  Sender: TObject);
label
  gotoLabel;
var
  vIndex, I: Integer;
  vEditValue: string;
begin
  vIndex := lbTitleList.ItemIndex;
  if vIndex < 0 then
    Exit;
  vEditValue := FParam.StaticGrid.Titles[vIndex].Text;
  gotoLabel:
  if ShowEAPubInputDlg('更改', '标题名称', vEditValue) then
  begin
    vEditValue := Trim(vEditValue);
    for I := 0 to lbTitleList.Items.Count - 1 do
      if (I <> vIndex) and SameText(vEditValue, lbTitleList.Items[I]) then
      begin
        ea.Dlg.MsgInfo('标题名称' + vEditValue + '已存在,请修改。');
        goto gotoLabel;
      end;
    lbTitleList.Items[vIndex] := vEditValue;
    FParam.StaticGrid.Titles[vIndex].Text := vEditValue;
    edtTitleValue.Text := vEditValue;
  end;
end;

procedure TfrmDrawGridStaticGridSetup.ActDeleteTitleExecute(
  Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;
  if ea.Dlg.MsgYesNo('确定要删除选中的标题吗?') = ID_YES then
  begin
    for I := lbTitleList.Count - 1 downto 0 do
      if lbTitleList.Selected[I] then
        FParam.StaticGrid.DeleteTitle(I);
    lbTitleList.DeleteSelected;
    LoadOneTitleInfo;
  end;   
end;

procedure TfrmDrawGridStaticGridSetup.ActUpMoveExecute(Sender: TObject);
var
  I : Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;

  for I := 0 to lbTitleList.Count - 1 do
  begin
    if (I = 0) and lbTitleList.Selected[I] then
      Exit;
    if lbTitleList.Selected[I] then
    begin
      lbTitleList.Items.Move(I, I - 1);
      FParam.StaticGrid.MoveTitle(I, I - 1);
    end;
  end;
end;

procedure TfrmDrawGridStaticGridSetup.ActDownMoveExecute(Sender: TObject);
var
  I : Integer;

⌨️ 快捷键说明

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