📄 printform.pas
字号:
if bNewReport and bPrintBar then
BandPageHeader.dy := 0; //打印成条行表
for i := 0 to Tree1.Bands.Count - 1 do
begin
if not Tree1.Bands[i].Visible then
Continue;
m := TRMMemoView(RMCreateObject(gtMemo, ''));
m.SetBounds(x, BandPageHeader.y, Tree1.Bands[i].Width +
GetBandSub(Tree1, Tree1.Bands[i].Index), Tree1.RowHeight + 4);
m.Font.Assign(Tree1.BandFont);
m.Memo.Text := Tree1.Bands[i].Caption;
m.PLayout := rmtlCenter;
m.PAlignment := GetAlignment(Tree1.Bands[i].Alignment);
m.FillColor := Tree1.Color;
// if Tree1.ShowGrid then m.FrameTyp := $F;
m.Prop['FrameTyp'] := $F;
m.Name := 'Grid_Band_' + IntToStr(i);
if Page1.FindObject(m.Name) <> nil then
Page1.FindObject(m.Name).Assign(m)
else
Page1.Objects.Add(m);
x := x + Tree1.Bands[i].Width + GetBandSub(Tree1, Tree1.Bands[i].Index);
end;
end;
if Tree1.ShowHeader then //表头2
begin
x := C_LEFT;
if bNewReport then
BandPageHeader.dy := BandPageHeader.dy + Tree1.RowHeight + 4;
if bNewReport and bPrintBar then
BandPageHeader.dy := 0; //打印成条行表
for i := 0 to Tree1.ColumnCount - 1 do
begin
if not Tree1.Columns[i].Visible then
Continue;
if (Tree1.Columns[i].Field = nil) and (Tree1.Columns[i].Visible = false) then
Continue;
m := TRMMemoView(RMCreateObject(gtMemo, ''));
if Tree1.ShowBands then
m.SetBounds(x, BandPageHeader.y + Tree1.RowHeight + 4,
Tree1.Columns[i].Width + 1, Tree1.RowHeight + 4)
else
m.SetBounds(x, BandPageHeader.y, Tree1.Columns[i].Width + 1,
Tree1.RowHeight + 4);
m.Font.Assign(Tree1.Columns[i].Font);
m.Memo.Text := Tree1.Columns[i].Caption;
m.PLayout := rmtlCenter;
m.PAlignment := GetAlignment(Tree1.Columns[i].Alignment);
m.FillColor := Tree1.Color;
m.Prop['FrameTyp'] := $F;
m.Name := 'Row0' + Tree1.Columns[i].Name;
if Page1.FindObject(m.Name) <> nil then
Page1.FindObject(m.Name).Assign(m)
else
Page1.Objects.Add(m);
x := x + Tree1.Columns[i].Width + 1;
end;
end;
end;
procedure TfrmPrintForm.SetTreeBody(Tree1: TdxDBTreeList);
var
x, i: Integer;
v: TRMView;
begin
//画出表体
if bNewReport then
BandDetail.y := BandPageHeader.y + BandPageHeader.dy + C_HEIGHT;
if bNewReport then
BandDetail.dy := Tree1.RowHeight + 4;
x := C_LEFT;
for i := 0 to Tree1.ColumnCount - 1 do
begin
if not Tree1.Columns[i].Visible then
Continue;
if (Tree1.Columns[i].Field = nil) and (Tree1.Columns[i].Visible = false) then
Continue;
v := RMCreateObject(gtMemo, '');
if not bNewReport and bPrintBar then
v.SetBounds(x, BandDetail.y + Tree1.RowHeight + 4, Tree1.Columns[i].Width + 1, Tree1.RowHeight + 4)
else
v.SetBounds(x, BandDetail.y, Tree1.Columns[i].Width + 1, BandDetail.Dy);
TRMMemoView(v).PAlignment := GetAlignment(Tree1.Columns[i].Alignment);
if Tree1.ShowGrid then
v.Prop['FrameTyp'] := $F;
v.Prop['FrameTyp'] := $F;
TRMMemoView(v).Font.Assign(Tree1.Columns[i].Font);
//设置数据字段
v.Memo.Text := Format('[%s.%s."%s"]', [Tree1.DataSource.DataSet.Owner.Name,
Tree1.DataSource.DataSet.Name, Tree1.Columns[i].FieldName]);
v.FillColor := Tree1.Color;
v.Name := 'Row1' + Tree1.Columns[i].Name;
//画饼图
if Tree1.Columns[i].FieldName = sPrintChartX then
sChartNameX := v.Name
else
if Tree1.Columns[i].FieldName = sPrintChartY then
sChartNameY := v.Name;
if lPrintChartType >= 0 then //如果是图形
begin
v.dy := 0;
v.Visible := False;
end;
if Page1.FindObject(v.Name) <> nil then
Page1.FindObject(v.Name).Assign(v)
else
Page1.Objects.Add(v);
x := x + Tree1.Columns[i].Width + 1;
end;
if bNewReport and bPrintBar then
BandDetail.y := BandPageHeader.y; //打印成条行表
if bNewReport and bPrintBar then
BandDetail.dy := Tree1.RowHeight * 3 + 12; //打印成条行表
end;
procedure TfrmPrintForm.SetTreeSummary(Tree1: TdxDBTreeList); //表尾
var
x, i: Integer;
m: TRMMemoView;
begin
if bNewReport then
BandPageFooter.y := BandDetail.y + BandDetail.dy + C_HEIGHT;
if bNewReport then
BandPageFooter.dy := 0;
if bNewReport then
BandReportSummary.y := BandPageFooter.y + BandPageFooter.dy + C_HEIGHT;
if bNewReport then
BandReportSummary.dy := BandReportSummary.dy + Tree1.RowHeight + 4;
x := C_LEFT;
if Tree1.ShowFooter then
begin
for i := 0 to Tree1.ColumnCount - 1 do
begin
if not Tree1.Columns[i].Visible then
Continue;
if (Tree1.Columns[i].Field = nil) and (Tree1.Columns[i].Visible = false) then
Continue;
m := TRMMemoView(RMCreateObject(gtMemo, ''));
m.SetBounds(x, BandReportSummary.y, Tree1.Columns[i].Width + 1,
Tree1.RowHeight + 4);
m.PAlignment := GetAlignment(Tree1.Columns[i].Alignment);
if Tree1.ShowGrid then
m.Prop['FrameTyp'] := $F;
m.Prop['FrameTyp'] := $F;
m.Font.Assign(Tree1.Columns[i].Font);
m.Memo.Text := Tree1.Columns[i].SummaryFooterText; // .SummaryFooterFormat;
m.FillColor := Tree1.Color;
m.Name := 'Summary' + Tree1.Columns[i].Name;
if Page1.FindObject(m.Name) <> nil then
Page1.FindObject(m.Name).Assign(m)
else
Page1.Objects.Add(m);
x := x + Tree1.Columns[i].Width + 1;
end;
end;
end;
function TfrmPrintForm.GetPoint(Control: TControl): TPoint;
var
Point: TPoint;
begin
Point.x := 0;
Point.y := 0;
Point := Control.ClientToScreen(point);
Point := frmForm1.ScreenToClient(Point);
Result := Point;
end;
function TfrmPrintForm.GetAlignment(Align: TAlignment): TRMAlignment;
begin
case Align of
taLeftJustify: Result := rmtaLeftJustify;
taRightJustify: Result := rmtaRightJustify;
taCenter: Result := rmtaCenterJustify;
else
Result := rmtaLeftJustify;
end;
end;
function TfrmPrintForm.ViewAssign(m1: TRMMemoView; Control: TControl): Boolean;
begin
Result := true;
if Control is TSeSkinLabel then
begin //标准控件
m1.Font.Assign(TSeSkinLabel(Control).Font);
m1.Memo.Text := TSeSkinLabel(Control).Caption;
end
else
if Control is TCustomEdit then
begin
m1.Font.Assign(TEdit(Control).Font);
m1.Memo.Text := TEdit(Control).Text;
end
else
if Control is TCustomMemo then
begin
m1.Font.Assign(TMemo(Control).Font);
m1.Memo.Assign(TMemo(Control).Lines);
end
else
if Control is TCustomdxEdit then
begin //Express No DB
m1.Font.Assign(TdxEdit(Control).Font);
m1.Memo.Text := TdxEdit(Control).Text;
end
else
if Control is TCustomdxDateEdit then
begin
m1.Font.Assign(TdxDateEdit(Control).Font);
m1.Memo.Text := TdxDateEdit(Control).Text;
end
else
if Control is TCustomdxPickEdit then
begin
m1.Font.Assign(TdxPickEdit(Control).Font);
m1.Memo.Text := TdxPickEdit(Control).Text;
end
else
if Control is TdxButtonEdit then
begin
m1.Font.Assign(TdxButtonEdit(Control).Font);
m1.Memo.Text := TCustomdxButtonEdit(Control).Text;
end
else
if Control is TCustomdxDBEdit then
begin //Express is DB
m1.Font.Assign(TdxDBEdit(Control).Font);
m1.Memo.Text := TdxDBEdit(Control).Text;
end
else
if Control is TCustomdxDBDateEdit then
begin
m1.Font.Assign(TdxDBDateEdit(Control).Font);
m1.Memo.Text := TdxDBDateEdit(Control).Text;
end
else
if Control is TCustomdxDBPickEdit then
begin
m1.Font.Assign(TdxDBPickEdit(Control).Font);
m1.Memo.Text := TdxDBPickEdit(Control).Text;
end
else
if Control is TdxDBButtonEdit then
begin
m1.Font.Assign(TdxDBButtonEdit(Control).Font);
m1.Memo.Text := TCustomdxDBButtonEdit(Control).Text;
end
else
if Control is TdxInplaceTextEdit then
begin
m1.Font.Assign(frmForm1.Font);
m1.Memo.Text := TdxInplaceTextEdit(Control).Text;
end
else
Result := false;
end;
function TfrmPrintForm.ShapeViewAssign(s1: TRMShapeView; Control: TControl):
Boolean;
begin
Result := True;
if Control is TShape then
begin
{$IFNDEF NoRmComPass}
case TShape(Control).Shape of
stRectangle: s1.ShapeType := rmskRectangle;
stSquare: s1.ShapeType := rmskRectangle;
stRoundRect: s1.ShapeType := rmskRectangle;
stRoundSquare: s1.ShapeType := rmskRectangle;
stEllipse: s1.ShapeType := rmskRectangle;
stCircle: s1.ShapeType := rmskRectangle;
end;
{$ELSE}
{$ENDIF}
s1.FillColor := TShape(Control).Brush.Color;
s1.dx := TShape(Control).Pen.Width;
s1.FillColor := TShape(Control).Pen.Color;
s1.PenMode := TShape(Control).Pen.Mode;
end
else
Result := false;
end;
function TfrmPrintForm.PicViewAssign(p1: TRMPictureView; Control: TControl):
Boolean;
begin
Result := True;
if Control is TImage then
begin
if TImage(Control).Picture.Graphic <> nil then
p1.Picture.Assign(TImage(Control).Picture);
p1.Flags := (p1.Flags and not flPictCenter) + Word(TImage(Control).Center) *
flPictCenter;
p1.Flags := (p1.Flags and not flStretched) + Word(TImage(Control).Stretch) *
flStretched;
p1.Flags := (p1.Flags and not flPictRatio) + Word(0) * flPictRatio;
end
else
if Control is TdxGraphicEdit then
begin
if TdxGraphicEdit(Control).Picture.Graphic <> nil then
p1.Picture.Assign(TdxGraphicEdit(Control).Picture);
p1.Flags := (p1.Flags and not flPictCenter) +
Word(TdxGraphicEdit(Control).Center) * flPictCenter;
p1.Flags := (p1.Flags and not flStretched) +
Word(TdxGraphicEdit(Control).Stretch) * flStretched;
p1.Flags := (p1.Flags and not flPictRatio) + Word(0) * flPictRatio;
end
else
if Control is TdxDBGraphicEdit then
begin
if TdxDBGraphicEdit(Control).Picture.Graphic <> nil then
p1.Picture.Assign(TdxDBGraphicEdit(Control).Picture);
p1.Flags := (p1.Flags and not flPictCenter) +
Word(TdxDBGraphicEdit(Control).Center) * flPictCenter;
p1.Flags := (p1.Flags and not flStretched) +
Word(TdxDBGraphicEdit(Control).Stretch) * flStretched;
p1.Flags := (p1.Flags and not flPictRatio) + Word(0) * flPictRatio;
end
else
Result := false;
end;
end.
//此源码由程序太平洋收集整理发布,任何人都可自由转载,但需保留本站信息
//╭⌒╮┅~ ¤ 欢迎光临程序太平洋╭⌒╮
//╭⌒╭⌒╮╭⌒╮~╭⌒╮ ︶ ,︶︶
//,︶︶︶︶,''︶~~ ,''~︶︶ ,''
//╔ ╱◥███◣═╬╬╬╬╬╬╬╬╬╗
//╬ ︱田︱田 田 ︱ ╬
//╬ http://www.5ivb.net ╬
//╬ ╭○╮● ╬
//╬ /■\/■\ ╬
//╬ <| || 有希望,就有成功! ╬
//╬ ╬
//╚╬╬╬╬╬╬╬╬╬╬╗ ╔╬╬╬╬╝
//
//说明:
//专业提供VB、.NET、Delphi、ASP、PB源码下载
//包括:程序源码,控件,商业源码,系统方案,开发工具,书籍教程,技术文档
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -