//--------------------------------------------------------------------------- #include #pragma hdrstop #include "Main.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "Winsoft.FireMonkey.PDFium" #pragma resource "*.fmx" TFormMain *FormMain; //--------------------------------------------------------------------------- __fastcall TFormMain::TFormMain(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TFormMain::FPdfViewPageChange(TObject *Sender) { if (FPdfView->Active) { SpeedButtonFirstPage->Enabled = FPdfView->PageNumber > 1; SpeedButtonPreviousPage->Enabled = FPdfView->PageNumber > 1; SpeedButtonNextPage->Enabled = FPdfView->PageNumber < FPdfView->PageCount; SpeedButtonLastPage->Enabled = FPdfView->PageNumber < FPdfView->PageCount; SpeedButtonPageNumber->Text = IntToStr(FPdfView->PageNumber) + " of " + IntToStr(FPdfView->PageCount); } else { SpeedButtonFirstPage->Enabled = false; SpeedButtonPreviousPage->Enabled = false; SpeedButtonNextPage->Enabled = false; SpeedButtonLastPage->Enabled = false; SpeedButtonPageNumber->Text = ""; } DoZoom(); } //--------------------------------------------------------------------------- void __fastcall TFormMain::SpeedButtonShowInfoClick(TObject *Sender) { #define NewLine "\xd\xa" ShowMessage( "Author: " + FPdf->Author + NewLine + "Creator: " + FPdf->Creator + NewLine + "Keywords: " + FPdf->Keywords + NewLine + "Producer: " + FPdf->Producer + NewLine + "Subject: " + FPdf->Subject + NewLine + "Title: " + FPdf->Title + NewLine + "Creation date: " + FPdf->CreationDate + NewLine + "Modified date: " + FPdf->ModifiedDate); } //--------------------------------------------------------------------------- void __fastcall TFormMain::SpeedButtonShowTextClick(TObject *Sender) { ShowMessage(FPdfView->Text()); } //--------------------------------------------------------------------------- void __fastcall TFormMain::SpeedButtonFirstPageClick(TObject *Sender) { FPdfView->PageNumber = 1; } //--------------------------------------------------------------------------- void __fastcall TFormMain::SpeedButtonPreviousPageClick(TObject *Sender) { FPdfView->PageNumber -= 1; } //--------------------------------------------------------------------------- void __fastcall TFormMain::SpeedButtonNextPageClick(TObject *Sender) { FPdfView->PageNumber += 1; } //--------------------------------------------------------------------------- void __fastcall TFormMain::SpeedButtonLastPageClick(TObject *Sender) { FPdfView->PageNumber = FPdfView->PageCount; } //--------------------------------------------------------------------------- void __fastcall TFormMain::DoZoom() { if (FPdfView->Active) FPdfView->Size->Size = TSizeF( PointsToPixels(Zoom * FPdfView->PageWidth, PixelsPerInch), PointsToPixels(Zoom * FPdfView->PageHeight, PixelsPerInch)); } //--------------------------------------------------------------------------- void __fastcall TFormMain::FormCreate(TObject *Sender) { _di_IDeviceBehavior DeviceBehavior; PixelsPerInch = 96; if (TBehaviorServices::Current->SupportsBehaviorService(__uuidof(IDeviceBehavior), &DeviceBehavior, this)) PixelsPerInch = DeviceBehavior->GetDisplayMetrics(this).PixelsPerInch; FPdf->FileName = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), "This_Quantum_World.pdf"); FPdfView->Active = true; FPdfView->PageNumber = 1; Zoom = PixelsToPoints(ScrollBox->Width, PixelsPerInch) / FPdfView->PageWidth; ScrollBox->ScrollBy(MaxInt, MaxInt); } //--------------------------------------------------------------------------- void __fastcall TFormMain::FormResize(TObject *Sender) { DoZoom(); } //--------------------------------------------------------------------------- void __fastcall TFormMain::ScrollBoxGesture(TObject *Sender, const TGestureEventInfo &EventInfo, bool &Handled) { if ((short)EventInfo.GestureID == igiZoom) { if (!EventInfo.Flags.Contains(TInteractiveGestureFlag::gfBegin) && !EventInfo.Flags.Contains(TInteractiveGestureFlag::gfEnd)) { if (LastDistance != 0) { Zoom = Zoom * EventInfo.Distance / LastDistance; DoZoom(); } } LastDistance = EventInfo.Distance; } } //---------------------------------------------------------------------------