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 + -
显示快捷键?