rptview.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 515 行 · 第 1/2 页
CPP
515 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "RPTView.h"
#include <Registry.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "KSAdvReport"
#pragma resource "*.dfm"
TfrmRPTView *frmRPTView;
//---------------------------------------------------------------------------
__fastcall TfrmRPTView::TfrmRPTView(TComponent* Owner, TAdvReport *AAdvReport)
: TForm(Owner)
{
if(AAdvReport->Grid != NULL)
{
F3D = true;
OldRowCount = AAdvReport->Grid->RowCount;
if(AAdvReport->Grid->RowCount == AAdvReport->Grid->FixedRows)
{
AAdvReport->Grid->RowCount++;
}
FAdvReport = AAdvReport;
FRegTitle = AAdvReport->Title;
LoadFromRegistry();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::FormShow(TObject *Sender)
{
AdvReportBand->View(FAdvReport);
StatusBar->Panels->Items[1]->Text = "状态:预览" ;
Caption = "打印预览--" + FAdvReport->Title;
cmbPageNum->Items->Clear();
for(int i=1; i<=FAdvReport->PageCount; i++)
cmbPageNum->Items->Add(IntToStr(i));
cmbPageNum->ItemIndex = 0 ;
StatusBar->Panels->Items[0]->Text = "第" + IntToStr(AdvReportBand->Page+1) +
"页/共" + IntToStr(FAdvReport->PageCount) + "页";
SetView3D(F3D);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::PageAlign()
{
if(AdvReportBand->Height > ScrollBox->ClientHeight)
{
AdvReportBand->Top = - ScrollBox->VertScrollBar->Position;
}
else
{
AdvReportBand->Top = (ScrollBox->ClientHeight - AdvReportBand->Height) / 2 - ScrollBox->VertScrollBar->Position;
}
if(AdvReportBand->Width > ScrollBox->ClientWidth)
{
AdvReportBand->Left = -ScrollBox->HorzScrollBar->Position;
}
else
{
AdvReportBand->Left = (ScrollBox->ClientWidth - AdvReportBand->Width) / 2 - ScrollBox->HorzScrollBar->Position;
}
SetView3D(F3D);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::sbPageSetClick(TObject *Sender)
{
StatusBar->Panels->Items[1]->Text = "状态:" + ((TSpeedButton *)Sender)->Caption.Trim();
FAdvReport->PageSet();
if(FAdvReport->PageCount > 0 && AdvReportBand->Page >= FAdvReport->PageCount)
AdvReportBand->Page = 0;
cmbPageNum->Items->Clear();
for(int i=1; i<=FAdvReport->PageCount; i++)
cmbPageNum->Items->Add(IntToStr(i));
cmbPageNum->ItemIndex = AdvReportBand->Page;
StatusBar->Panels->Items[0]->Text = "第" + IntToStr(AdvReportBand->Page + 1) +
"页/共" + IntToStr(FAdvReport->PageCount) + "页";
AdvReportBand->Zoom = AdvReportBand->Zoom;
SaveToRegistry();
PageAlign();
AdvReportBand->Repaint();
SetView3D(F3D);
StatusBar->Panels->Items[1]->Text = "状态:预览" ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::sbPrintClick(TObject *Sender)
{
StatusBar->Panels->Items[1]->Text = "状态:" + ((TSpeedButton *)Sender)->Caption.Trim();
if(!(Printer()->Printers->Count))
{
MessageBox(Handle,"当前没有安装打印机", "错误", MB_OK|MB_ICONERROR);
return;
}
FAdvReport->Print();
SetView3D(F3D);
StatusBar->Panels->Items[1]->Text = "状态:预览" ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::sbFirstClick(TObject *Sender)
{
AdvReportBand->First();
cmbPageNum->ItemIndex = AdvReportBand->Page;
StatusBar->Panels->Items[0]->Text = "第" + IntToStr(AdvReportBand->Page + 1) +
"页/共" + IntToStr(FAdvReport->PageCount) + "页";
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::sbPriorClick(TObject *Sender)
{
AdvReportBand->Prior();
cmbPageNum->ItemIndex = AdvReportBand->Page;
StatusBar->Panels->Items[0]->Text = "第" + IntToStr(AdvReportBand->Page + 1) +
"页/共" + IntToStr(FAdvReport->PageCount) + "页";
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::cmbPageNumChange(TObject *Sender)
{
AdvReportBand->Page = cmbPageNum->ItemIndex;
StatusBar->Panels->Items[0]->Text = "第" + IntToStr(AdvReportBand->Page + 1) +
"页/共" + IntToStr(FAdvReport->PageCount) + "页";
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::sbNextClick(TObject *Sender)
{
AdvReportBand->Next();
cmbPageNum->ItemIndex = AdvReportBand->Page;
StatusBar->Panels->Items[0]->Text = "第" + IntToStr(AdvReportBand->Page + 1) +
"页/共" + IntToStr(FAdvReport->PageCount) + "页";
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::sbLastClick(TObject *Sender)
{
AdvReportBand->Last();
cmbPageNum->ItemIndex = AdvReportBand->Page;
StatusBar->Panels->Items[0]->Text = "第" + IntToStr(AdvReportBand->Page + 1) +
"页/共" + IntToStr(FAdvReport->PageCount) + "页";
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::sbZoomInClick(TObject *Sender)
{
StatusBar->Panels->Items[1]->Text = "状态:" + ((TSpeedButton *)Sender)->Caption.Trim();
AdvReportBand->ZoomIn();
SetView3D(F3D);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::sbZoomOutClick(TObject *Sender)
{
StatusBar->Panels->Items[1]->Text = "状态:" + ((TSpeedButton *)Sender)->Caption.Trim();
ScrollBox->HorzScrollBar->Position = 0;
ScrollBox->VertScrollBar->Position = 0;
AdvReportBand->ZoomOut();
SetView3D(F3D);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::FormActivate(TObject *Sender)
{
TForm::Align = alNone;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::FormResize(TObject *Sender)
{
PageAlign();
SetView3D(F3D);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::SaveToRegistry()
{
TRegistry *TmpReg;
try
{
TmpReg = new TRegistry();
TmpReg->RootKey = HKEY_CURRENT_USER;
TmpReg->OpenKey("SOFTWARE", false);
TmpReg->OpenKey("Page", true);
TmpReg->OpenKey("PageSet", true);
TmpReg->OpenKey(FRegTitle, true);
TmpReg->WriteString("Title", FAdvReport->Title);
TmpReg->WriteInteger("PageWidth", FAdvReport->PageWidth);
TmpReg->WriteInteger("PageHeight", FAdvReport->PageHeight);
TmpReg->WriteInteger("Orientation", FAdvReport->Orientation);
TmpReg->WriteInteger("Size", FAdvReport->Size);
TmpReg->WriteInteger("LeftSpace", FAdvReport->LeftSpace);
TmpReg->WriteInteger("RightSpace", FAdvReport->RightSpace);
TmpReg->WriteInteger("TopSpace", FAdvReport->TopSpace);
TmpReg->WriteInteger("BottomSpace", FAdvReport->BottomSpace);
TmpReg->WriteInteger("ShowVertLine", FAdvReport->ShowVertLine);
TmpReg->WriteInteger("ShowHorzLine", FAdvReport->ShowHorzLine);
TmpReg->WriteString("FontName", FAdvReport->TitleFont->Name);
TmpReg->WriteInteger("FontSize", FAdvReport->TitleFont->Size);
TmpReg->WriteInteger("FontColor", FAdvReport->TitleFont->Color);
TmpReg->WriteInteger("FontCharSet", FAdvReport->TitleFont->Charset);
TmpReg->WriteBool("FontStylefsBold", FAdvReport->TitleFont->Style.Contains(fsBold));
TmpReg->WriteBool("FontStylefsItalic", FAdvReport->TitleFont->Style.Contains(fsItalic));
TmpReg->WriteBool("FontStylefsUnderline", FAdvReport->TitleFont->Style.Contains(fsUnderline));
TmpReg->WriteBool("FontStylefsStrikeOut", FAdvReport->TitleFont->Style.Contains(fsStrikeOut));
TmpReg->CloseKey();
}__finally
{
delete TmpReg;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmRPTView::LoadFromRegistry()
{
TRegistry *TmpReg;
try{
TmpReg = new TRegistry();
TmpReg->RootKey = HKEY_CURRENT_USER;
TmpReg->OpenKey("SOFTWARE", false);
if(!TmpReg->KeyExists("Page"))
return;
TmpReg->OpenKey("Page", true);
if(!TmpReg->KeyExists("PageSet"))
return;
TmpReg->OpenKey("PageSet", true);
if(!TmpReg->KeyExists(FRegTitle))
return;
TmpReg->OpenKey(FRegTitle, true);
if(TmpReg->ValueExists("Title"))
FAdvReport->Title = TmpReg->ReadString("Title");
if(TmpReg->ValueExists("Size"))
FAdvReport->Size = TmpReg->ReadInteger("Size");
if(TmpReg->ValueExists("PageWidth"))
FAdvReport->PageWidth = TmpReg->ReadInteger("PageWidth");
if(TmpReg->ValueExists("PageHeight"))
FAdvReport->PageHeight = TmpReg->ReadInteger("PageHeight");
if(TmpReg->ValueExists("Orientation"))
FAdvReport->Orientation = (TPrinterOrientation)TmpReg->ReadInteger("Orientation");
if(TmpReg->ValueExists("LeftSpace"))
FAdvReport->LeftSpace = TmpReg->ReadInteger("LeftSpace");
if(TmpReg->ValueExists("RightSpace"))
FAdvReport->RightSpace = TmpReg->ReadInteger("RightSpace");
if(TmpReg->ValueExists("TopSpace"))
FAdvReport->TopSpace = TmpReg->ReadInteger("TopSpace");
if(TmpReg->ValueExists("BottomSpace"))
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?