📄 cgridrep.pas
字号:
procedure TGridRep.SetPageFooter(value: string);
begin
if (value<>FPageFooterLabel.Caption) then FPageFooterLabel.Caption := value;
end;
procedure TGridRep.SetPageHeaderFont(value: TFont);
begin
FPageHeaderFont.Assign(value);
end;
procedure TGridRep.SetPageTitleFont(value: TFont);
begin
FPageTitleFont.Assign(value);
end;
procedure TGridRep.PageHeaderFontChanged(Sender: TObject);
begin
FPageHeaderLabel.Font := FPageHeaderFont;
end;
procedure TGridRep.PageTitleFontChanged(Sender: TObject);
begin
FPageTitleLabel.Font := FPageTitleFont;
end;
procedure TGridRep.ColHeaderFontChanged(Sender: TObject);
var i: integer;
begin
for i:=0 to MAX_COL_NUM-1 do begin
FColHeaderLabels[i].Font := FColHeaderFont;
end;
end;
procedure TGridRep.PageFooterFontChanged(Sender: TObject);
begin
FPageFooterLabel.Font := FPageFooterFont;
end;
procedure TGridRep.PageNoFontChanged(Sender: TObject);
begin
FPageNoLabel.Font := FPageNoFont;
end;
procedure TGridRep.PageTimeFontChanged(Sender: TObject);
begin
FPageTimeLabel.Font := FPageTimeFont;
end;
procedure TGridRep.ChangeColDetailBand(iCol: integer);
begin
FColDetailLabels[iCol].Font := FColDetailFonts[iCol];
end;
procedure TGridRep.ColDetail00FontChanged(Sender: TObject);
begin
ChangeColDetailBand(0);
end;
procedure TGridRep.ColDetail01FontChanged(Sender: TObject);
begin
ChangeColDetailBand(1);
end;
procedure TGridRep.ColDetail02FontChanged(Sender: TObject);
begin
ChangeColDetailBand(2);
end;
procedure TGridRep.ColDetail03FontChanged(Sender: TObject);
begin
ChangeColDetailBand(3);
end;
procedure TGridRep.ColDetail04FontChanged(Sender: TObject);
begin
ChangeColDetailBand(4);
end;
procedure TGridRep.ColDetail05FontChanged(Sender: TObject);
begin
ChangeColDetailBand(5);
end;
procedure TGridRep.ColDetail06FontChanged(Sender: TObject);
begin
ChangeColDetailBand(6);
end;
procedure TGridRep.ColDetail07FontChanged(Sender: TObject);
begin
ChangeColDetailBand(7);
end;
procedure TGridRep.ColDetail08FontChanged(Sender: TObject);
begin
ChangeColDetailBand(8);
end;
procedure TGridRep.ColDetail09FontChanged(Sender: TObject);
begin
ChangeColDetailBand(9);
end;
procedure TGridRep.ColDetail10FontChanged(Sender: TObject);
begin
ChangeColDetailBand(10);
end;
procedure TGridRep.ColDetail11FontChanged(Sender: TObject);
begin
ChangeColDetailBand(11);
end;
procedure TGridRep.ColDetail12FontChanged(Sender: TObject);
begin
ChangeColDetailBand(12);
end;
procedure TGridRep.ColDetail13FontChanged(Sender: TObject);
begin
ChangeColDetailBand(13);
end;
procedure TGridRep.ColDetail14FontChanged(Sender: TObject);
begin
ChangeColDetailBand(14);
end;
procedure TGridRep.ColDetail15FontChanged(Sender: TObject);
begin
ChangeColDetailBand(15);
end;
procedure TGridRep.ColDetail16FontChanged(Sender: TObject);
begin
ChangeColDetailBand(16);
end;
procedure TGridRep.ColDetail17FontChanged(Sender: TObject);
begin
ChangeColDetailBand(17);
end;
procedure TGridRep.ColDetail18FontChanged(Sender: TObject);
begin
ChangeColDetailBand(18);
end;
procedure TGridRep.ColDetail19FontChanged(Sender: TObject);
begin
ChangeColDetailBand(19);
end;
procedure TGridRep.SetColHeaderFont(value: TFont);
begin
FColHeaderFont.Assign(value);
end;
function TGridRep.GetColDetailFonts(index: integer): TFont;
begin
result := FColDetailFonts[index];
end;
procedure TGridRep.SetColDetailFonts(index: integer; value: TFont);
begin
FColDetailFonts[index].Assign(value);
end;
procedure TGridRep.SetPageFooterFont(value: TFont);
begin
FPageFooterFont.Assign(value);
end;
procedure TGridRep.SetPageNoFont(value: TFont);
begin
FPageNoFont.Assign(value);
end;
function TGridRep.GetColLengths(index: integer): integer;
begin
result := FColLengths[index];
end;
procedure TGridRep.SetColLengths(index: integer; value: integer);
begin
FColLengths[index] := QR.TextWidth(FColHeaderLabels[index].Font,
Copy(sSample,1,value)) +4-COL_SID_SIZ;
end;
function TGridRep.GetColAligns(index: integer): TAlignment;
begin
result := FColAligns[index];
end;
procedure TGridRep.SetColAligns(index: integer; value: TAlignment);
begin
if (FColAligns[index] <> value) then begin
FColAligns[index] := value;
FColHeaderLabels[index].Alignment := FColAligns[index];
FColDetailLabels[index].Alignment := FColHeaderLabels[index].Alignment;
end;
end;
procedure TGridRep.InitGridRep(iColCnt:integer; bHavingGrid: boolean);
var
i,w,iLeft,hh : integer;
begin
iColCount := iColCnt;
if (iColCount<=0) then iColCount := 1;
bGrid := bHavingGrid;
with ColumnHeaderBand do begin
Frame.DrawTop := bGrid;//False;
Frame.DrawBottom := bGrid;//False;
Frame.DrawLeft := bGrid;//False;
Frame.DrawRight := bGrid;//False;
end;
with ColDetailBand do begin
Frame.DrawLeft := bGrid;//False;
Frame.DrawRight := bGrid;//False;
end;
for i:=iColCount to MAX_COL_NUM-1 do begin
FColHeaderLabels[i].Enabled := false;
FColDetailLabels[i].Enabled := FColHeaderLabels[i].Enabled;
FColHeaderLines[i].Enabled := false;
FColDetailLines[i].Enabled := FColHeaderLines[i].Enabled;
end;
iLeft := 0;
for i:=0 to iColCount-1 do begin
FColHeaderLabels[i].Enabled := true;
FColDetailLabels[i].Enabled := FColHeaderLabels[i].Enabled;
if (FColLengths[i]>0) then w := FColLengths[i]
else w := ColDetailBand.Width div iColCount;
FColHeaderLabels[i].Left := iLeft+COL_SID_SIZ;
FColDetailLabels[i].Left := FColHeaderLabels[i].Left;
iLeft := iLeft+w;
FColHeaderLabels[i].Width := w-COL_SID_SIZ;
FColDetailLabels[i].Width := FColHeaderLabels[i].Width;
FColHeaderLines[i].Enabled := bGrid;
FColDetailLines[i].Enabled := FColHeaderLines[i].Enabled;
FColHeaderLines[i].Left := FColHeaderLabels[i].Left-2;
FColDetailLines[i].Left := FColHeaderLines[i].Left;
FColHeaderLabels[i].Alignment := FColAligns[i];
FColDetailLabels[i].Alignment := FColHeaderLabels[i].Alignment;
end;
FColHeaderLines[0].Enabled := false;
FColDetailLines[0].Enabled := FColHeaderLines[0].Enabled;
hh := FPageHeaderLabel.Height;
if (hh<FPageNoLabel.Height) then hh := FPageNoLabel.Height;
PageHeaderBand.Height := hh+8;
TitleBand.Height := FPageTitleLabel.Height+8;
hh := FPageFooterLabel.Height;
if (hh<FPageTimeLabel.Height) then hh := FPageTimeLabel.Height;
PageFooterBand.Height := hh+8;
hh := 0;
for i:=0 to iColCount-1 do
if (hh<FColDetailLabels[i].Height) then hh := FColDetailLabels[i].Height;
ColDetailBand.Height := hh+ROW_TOP_SIZ+2;
FColDetailBottomLine.Top := ColDetailBand.Height-1;
for i:=0 to MAX_COL_NUM-1 do
FColDetailLines[i].Height := ColDetailBand.Height;
FColDetailBottomLine.Enabled := bGrid;
ColumnHeaderBand.Height := FColHeaderLabels[0].Height+ROW_TOP_SIZ;
for i:=0 to MAX_COL_NUM-1 do
FColHeaderLines[i].Height := ColumnHeaderBand.Height;
for i:=0 to iColCount-1 do FColLengths[i] := 0;
end;
procedure TGridRep.ShowPreview(cID: char; iColCnt:integer; bHavingGrid: boolean);
begin
iPreview := 0;
iRowCount := 0;
iPageCount := 0;
cGridID := cID;
InitGridRep(iColCnt,bHavingGrid);
//QR.ReportTitle := '打印控件';
//有些打印机上打不了的原因
QR.PreviewModal;
end;
procedure TGridRep.HandleNeedData(Sender: Tobject; var MoreData: boolean);
var
i: integer;
sTmp: string;
bTmp: boolean;
begin
if Assigned(FOnNeedData)=true then begin
for i:=0 to iColCount-1 do begin
FOnNeedData(self,cGridID,i,iRowCount+1,sTmp,bTmp);// cID: char; iCol,iRow: integer;
FColDetailLabels[i].Caption := sTmp;
end;
MoreData := bTmp;
if (MoreData) then iRowCount := iRowCount+1;
end;
end;
procedure TGridRep.HandleAfterPreview(Sender: Tobject);
begin
//iRowCount := 0;
end;
procedure TGridRep.HandleBeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean);
begin
iRowCount := 0;
iPreview := iPreview+1;
end;
procedure TGridRep.HandleStartPage(Sender: TCustomQuickRep);
begin
if (bChinese) then
FPageTimeLabel.Caption := FormatDateTime('yyyy/mm/dd hh:nn', Now)+' 打印'
else FPageTimeLabel.Caption := FormatDateTime('yyyy/mm/dd hh:nn:ss', Now);
if (iPreview<2) then begin
if (bChinese) then
FPageNoLabel.Caption := '第'+IntToStr(Sender.PageNumber)+'页'
else FPageNoLabel.Caption := 'Page '+IntToStr(Sender.PageNumber);
iPageCount := iPageCount+1;
end
else begin
if (bChinese) then
FPageNoLabel.Caption := '第'+IntToStr(Sender.PageNumber)+'页'+' '
+'共'+IntToStr(iPageCount)+'页'
else FPageNoLabel.Caption := 'Page ' + IntToStr(Sender.PageNumber)
+'/'+IntToStr(iPageCount);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -