📄 frmdrawreportdesignmainunt.pas
字号:
drReport.Width := 800;
drReport.Height := 1024;
drReport.Pages.Add('第 1 页');
drReport.Store.StopStore := False;
LoadReportSizeToList;
end;
procedure TfrmDrawReportDesignMain.scrollReportResize(Sender: TObject);
begin
AdjustDrawReportPos;
end;
procedure TfrmDrawReportDesignMain.ActGrid_AddGridExecute(Sender: TObject);
var
P: TDrawReportDesignAddGridParam;
vTop, I, vTmp: Integer;
vPage: TEAPage;
begin
P.PageWidth := drReport.Width - drReport.MarginSize.LeftRight * 2;
P.PageHeight := drReport.Height - drReport.MarginSize.TopBottom * 2;
P.CellSpace := 5;
if ShowDrawReportDesignAddGridDlg(P) then
begin
drReport.PageIndex := tabPages.TabIndex;
vTop := drReport.MarginSize.TopBottom;
vPage := drReport.Pages[tabPages.TabIndex];
for I := 0 to vPage.Count - 1 do
begin
vTmp := vPage.Objects[I].DisplayRect.Bottom;
if vTop < vTmp then
vTop := vTmp + 20;
end;
if vTop < 38 then
vTop := 38;
if P.IsFixCellSize then
begin
TEAReportDrawGrid.CreateDrawGrid(vPage, vTop, P.Cols * P.ColWidth,
P.Rows * P.RowHeight, P.Rows, P.Cols, TEAHorzPos(P.GridAlign));
end
else begin
TEAReportDrawGrid.CreateDrawGrid(vPage, drReport.MarginSize.LeftRight, vTop,
drReport.Width - drReport.MarginSize.LeftRight * 2,
P.Rows * 20, P.Rows, P.Cols);
end;
end;
end;
procedure TfrmDrawReportDesignMain.ActTool_DrawLineExecute(
Sender: TObject);
var
vPage: TEAPage;
begin
vPage := drReport.SelectedPage;
if vPage = nil then
Exit;
SetupAllDrawGridTool(erdtDrawLine);
ActTool_DrawLine.Checked := True;
drReport.ReportPenState := erpsDrawGrid;
end;
procedure TfrmDrawReportDesignMain.ActTool_NoneExecute(Sender: TObject);
begin
SetupAllDrawGridTool(erdtNone);
drReport.ReportPenState := erpsNone;
ActTool_None.Checked := True;
end;
procedure TfrmDrawReportDesignMain.ActTool_ErasureExecute(Sender: TObject);
var
vPage: TEAPage;
begin
vPage := drReport.SelectedPage;
if vPage = nil then
Exit;
SetupAllDrawGridTool(erdtErasure);
ActTool_Erasure.Checked := True;
drReport.ReportPenState := erpsNone;
end;
procedure TfrmDrawReportDesignMain.ActTool_ShowLineExecute(
Sender: TObject);
var
vPage: TEAPage;
begin
vPage := drReport.SelectedPage;
if vPage = nil then
Exit;
SetupAllDrawGridTool(erdtShowLine);
ActTool_ShowLine.Checked := True;
drReport.ReportPenState := erpsNone;
end;
procedure TfrmDrawReportDesignMain.ActTool_HideLineExecute(
Sender: TObject);
var
vPage: TEAPage;
begin
vPage := drReport.SelectedPage;
if vPage = nil then
Exit;
SetupAllDrawGridTool(erdtHideLine);
ActTool_HideLine.Checked := True;
drReport.ReportPenState := erpsNone;
end;
procedure TfrmDrawReportDesignMain.ActFrame_FramePopupExecute(Sender: TObject);
begin
//
end;
procedure TfrmDrawReportDesignMain.ActEdit_FindExecute(Sender: TObject);
var
P: TDrawReportDesignFindReplaceParam;
begin
P.DrdFindReplace := dfrFind;
ShowDrawReportDesignFindReplaceDlg(P);
end;
procedure TfrmDrawReportDesignMain.ActEdit_ReplaceExecute(Sender: TObject);
var
P: TDrawReportDesignFindReplaceParam;
begin
P.DrdFindReplace := dfrReplace;
ShowDrawReportDesignFindReplaceDlg(P);
end;
procedure TfrmDrawReportDesignMain.ActFrame_AllFrameExecute(
Sender: TObject);
begin
SetupAllDrawGridFrame([egfLeft, egfTop, egfRight, egfBottom, egfHorz,
egfVert]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_AllNullExecute(
Sender: TObject);
begin
SetupAllDrawGridFrame([]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_OuterExecute(Sender: TObject);
begin
SetupAllDrawGridFrame([egfLeft, egfTop, egfRight, egfBottom]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_CrossExecute(Sender: TObject);
begin
SetupAllDrawGridFrame([egfHorz, egfVert]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_LeftExecute(Sender: TObject);
begin
SetupAllDrawGridFrame([egfLeft]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_HorzCenterExecute(
Sender: TObject);
begin
SetupAllDrawGridFrame([egfVert]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_RightExecute(Sender: TObject);
begin
SetupAllDrawGridFrame([egfRight]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_TopExecute(Sender: TObject);
begin
SetupAllDrawGridFrame([egfTop]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_VertCenterExecute(
Sender: TObject);
begin
SetupAllDrawGridFrame([egfHorz]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_BottomExecute(Sender: TObject);
begin
SetupAllDrawGridFrame([egfBottom]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_ToLeftTopExecute(
Sender: TObject);
begin
SetupAllDrawGridFrame([egfLeftDiagonal]);
end;
procedure TfrmDrawReportDesignMain.ActFrame_ToRightTopExecute(
Sender: TObject);
begin
SetupAllDrawGridFrame([egfRightDiagonal]);
end;
procedure TfrmDrawReportDesignMain.AdjustDrawReportPos;
var
vLeft: Integer;
begin
scrollReport.VertScrollBar.Range := drReport.Height + 40;
scrollReport.HorzScrollBar.Range := drReport.Width + 40;
vLeft := Trunc((scrollReport.ClientWidth - drReport.Width) / 2);
if vLeft < 20 then
vLeft := 20;
drReport.Left := vLeft;
pnlShadow.SetBounds(vLeft + 2, drReport.Top + 2, drReport.Width,
drReport.Height);
end;
procedure TfrmDrawReportDesignMain.SetupAllDrawGridTool(
ADrawGridTool: TEAReportDrawGridTool);
var
I: Integer;
vPage: TEAPage;
begin
vPage := drReport.SelectedPage;
if vPage = nil then
Exit;
for I := 0 to vPage.Count - 1 do
if vPage.Objects[I] is TEAReportDrawGrid then
TEAReportDrawGrid(vPage.Objects[I]).DrawGridTool := ADrawGridTool;
end;
procedure TfrmDrawReportDesignMain.SetupAllDrawGridFrame(
AGridFrames: TEAGridFrames);
var
I: Integer;
vPage: TEAPage;
begin
vPage := drReport.SelectedPage;
if vPage = nil then
Exit;
for I := 0 to vPage.SelectedCount - 1 do
if vPage.Objects[I] is TEAReportDrawGrid then
TEAReportDrawGrid(vPage.Objects[I]).SetSelectedCellFrames(AGridFrames);
end;
procedure TfrmDrawReportDesignMain.ActInsert_LabelExecute(Sender: TObject);
var
vPage: TEAPage;
begin
vPage := drReport.SelectedPage;
if vPage = nil then
Exit;
ActInsert_Label.Checked := True;
drReport.ReportPenState := erpsLabel;
end;
procedure TfrmDrawReportDesignMain.ActFile_ExitExecute(Sender: TObject);
begin
Close;
end;
procedure TfrmDrawReportDesignMain.ActView_GridLineExecute(
Sender: TObject);
begin
ActView_GridLine.Checked := not ActView_GridLine.Checked;
drReport.Gridding.Visible := ActView_GridLine.Checked;
end;
procedure TfrmDrawReportDesignMain.ActGrid_CellPropertyExecute(
Sender: TObject);
var
vPage: TEAPage;
vGrid: TEAReportDrawGrid;
I: Integer;
P: TDrawGridCellSetupParam;
begin
vPage := drReport.SelectedPage;
if vPage = nil then
Exit;
vGrid := nil;
for I := 0 to vPage.SelectedCount - 1 do
if vPage.SelectedObjects[I] is TEAReportDrawGrid then
begin
vGrid := TEAReportDrawGrid(vPage.SelectedObjects[I]);
Break;
end;
if vGrid = nil then
Exit;
P.Cells := vGrid.SelectedCells;
P.Grid := vGrid;
if ShowDrawGridCellSetupDlg(P) then
vGrid.Invalidate;
end;
procedure TfrmDrawReportDesignMain.cboReportSizeChange(Sender: TObject);
label
gotoLabel;
var
vViewScale, vIndex: Integer;
P: TEAPubInputParam;
begin
vIndex := cboReportSize.ItemIndex;
if vIndex > -1 then
vViewScale := Integer(cboReportSize.Items.Objects[vIndex])
else
vViewScale := 100;
if vIndex = 7 then
begin
P.Caption := '设置';
P.Title := '显示比例(%)';
P.EditValue := IntToStr(vViewScale);
P.EditType := epitNumber;
P.AllowNull := False;
P.MaxLength := 0;
gotoLabel:
if ShowEAPubInputDlg(P) then
begin
vViewScale := StrToInt(P.EditValue);
if (vViewScale < 25) or (vViewScale > 500) then
begin
ea.Dlg.MsgInfo('显示比例只能是大于等于25且小于等于500的数字。');
goto gotoLabel;
end;
cboReportSize.Items.Objects[vIndex] := TObject(vViewScale);
end;
end;
if drReport.ViewScale <> vViewScale then
begin
drReport.ViewScale := vViewScale;
drReport.SetBounds(drReport.Left, drReport.Top,
800 * vViewScale div 100,
1024 * vViewScale div 100);
AdjustDrawReportPos;
end;
end;
procedure TfrmDrawReportDesignMain.FormShow(Sender: TObject);
begin
drReport.SetFocus;
end;
procedure TfrmDrawReportDesignMain.LoadReportSizeToList;
begin
cboReportSize.Items.AddObject('500 %', TObject(500));
cboReportSize.Items.AddObject('400 %', TObject(400));
cboReportSize.Items.AddObject('200 %', TObject(200));
cboReportSize.Items.AddObject('100 %', TObject(100));
cboReportSize.Items.AddObject('75 %', TObject(75));
cboReportSize.Items.AddObject('50 %', TObject(50));
cboReportSize.Items.AddObject('25 %', TObject(25));
cboReportSize.Items.AddObject('自定义大小...', TObject(100));
cboReportSize.ItemIndex := 3;
end;
procedure TfrmDrawReportDesignMain.ActFile_PrintSetupExecute(
Sender: TObject);
begin
drReport.PrintSetup;
end;
procedure TfrmDrawReportDesignMain.ActFile_PrintExecute(Sender: TObject);
begin
if drReport.PrintSetup then
drReport.Print;
end;
procedure TfrmDrawReportDesignMain.ActFile_PreviewExecute(Sender: TObject);
begin
drReport.Preview;
end;
procedure TfrmDrawReportDesignMain.ActPage_AddExecute(Sender: TObject);
label
gotoLabel;
var
vStr: string;
begin
vStr := GetNewPageName;
gotoLabel:
if ShowEAPubInputDlg(vStr) then
begin
vStr := Trim(vStr);
if not IsNotRepeatPageName(vStr, -1) then
goto gotoLabel;
end
else
Exit;
drReport.Pages.Add(vStr);
tabPages.Tabs.Add(vStr);
tabPages.TabIndex := tabPages.Tabs.Count - 1;
drReport.PageIndex := tabPages.Tabs.Count - 1;
end;
procedure TfrmDrawReportDesignMain.tabPagesChange(Sender: TObject;
NewTab: Integer; var AllowChange: Boolean);
begin
drReport.HideEditor;
drReport.PageIndex := NewTab;
end;
procedure TfrmDrawReportDesignMain.ActPage_InsertExecute(Sender: TObject);
label
gotoLabel;
var
vIndex: Integer;
vStr: string;
begin
vIndex := tabPages.TabIndex;
if vIndex < 0 then
ActPage_Add.Execute
else begin
vStr := GetNewPageName;
gotoLabel:
if ShowEAPubInputDlg(vStr) then
begin
vStr := Trim(vStr);
if not IsNotRepeatPageName(vStr, -1) then
goto gotoLabel;
end
else
Exit;
drReport.Pages.Insert(vIndex).Name := vStr;
tabPages.Tabs.Insert(vIndex, vStr);
tabPages.TabIndex := vIndex;
drReport.PageIndex := vIndex;
end;
end;
procedure TfrmDrawReportDesignMain.ActPage_DeleteExecute(Sender: TObject);
var
vIndex: Integer;
begin
vIndex := tabPages.TabIndex;
if vIndex = -1 then
Exit;
if ea.Dlg.MsgYesNo('确实要删除页[' + tabPages.Tabs[vIndex] + ']吗?') =ID_YES then
begin
drReport.Pages.Delete(vIndex);
tabPages.Tabs.Delete(vIndex);
if drReport.Pages.Count = 0 then
begin
drReport.Pages.Add('第 1 页');
tabPages.Tabs.Add('第 1 页');
drReport.PageIndex := 0;
end;
end;
end;
procedure TfrmDrawReportDesignMain.ActPage_RenameExecute(Sender: TObject);
label
gotoLabel;
var
vIndex: Integer;
vStr: string;
begin
vIndex := tabPages.TabIndex;
if vIndex = -1 then
Exit;
vStr := tabPages.Tabs[vIndex];
gotoLabel:
if ShowEAPubInputDlg(vStr) then
begin
vStr := Trim(vStr);
if IsNotRepeatPageName(vStr, vIndex) then
begin
tabPages.Tabs[vIndex] := vStr;
drReport.Pages[vIndex].Name := vStr;
end
else
goto gotoLabel;
end;
end;
procedure TfrmDrawReportDesignMain.ActEdit_SendToBackExecute(
Sender: TObject);
var
vPage: TEAPage;
begin
vPage := drReport.SelectedPage;
if (vPage = nil) or (vPage.SelectedCount = 0) then
Exit;
vPage.SendToBack(vPage.SelectedObjects[0]);
end;
procedure TfrmDrawReportDesignMain.ActPage_BackColorExecute(
Sender: TObject);
begin
dlgColor.Color := drReport.PageInfo.Color;
if dlgColor.Execute then
drReport.PageInfo.Color := dlgColor.Color;
end;
procedure TfrmDrawReportDesignMain.ActPage_PagePropertyExecute(
Sender: TObject);
begin
//
ShowMessage('页属性');
end;
procedure TfrmDrawReportDesignMain.ActHelp_AboutExecute(Sender: TObject);
var
vStr: string;
begin
vStr := 'SharpExpress <EMail:SharpExpress@tom.com QQ:17805552>' + #13
+ 'ReportPmm(v1.0) Design Demo';
ShowMessage(vStr);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -