📄 frmdrawgridstaticgridsetupunt.pas
字号:
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 + -