//--------------------------------------------------------------------------- #include #pragma hdrstop #include "MainForm.h" #include "CprDlgfrm.h" #include "ChildForm.h" #include "AboutDlg.h" #include "..\..\..\..\include\ltkey.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "LEADDlgService" #pragma link "LEADDlgFile" #pragma link "LEADScrCap" #pragma link "LEADMain" #pragma resource "*.dfm" TMainFrm *MainFrm; //--------------------------------------------------------------------------- __fastcall TMainFrm::TMainFrm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TMainFrm::OpenExeMenuItmClick(TObject *Sender) { int nDlgType = CAPTURE_DLG_TREEVIEW; // Tree View Dialog Type if(OpenDialog->Execute()) { LEADScr1->EnableMethodErrors= false; LEADScr1->CaptureEXEDlg ( this, // Handle Parent Window. OpenDialog->FileName, // File Name. 0, // Resource Type . nDlgType, 0 ); // Dialog Type. LEADScr1->EnableMethodErrors= true; } } //--------------------------------------------------------------------------- void __fastcall TMainFrm::CaptureAreaOptionsClick(TObject *Sender) { // Invoke Captur Area Option Dialog from Lead Screnn Capture VCL. int nRet; LEADScr1->EnableMethodErrors = false; nRet = LEADScr1->CaptureAreaOptionDlg ( this, 0 ); LEADScr1->EnableMethodErrors = true; if(nRet == SUCCESS) { switch(LEADScr1->CaptureAreaType) { case CAPTURE_AREA_RECT: // Rectangle. CapDlg->AreaCapRG->ItemIndex = 0; break; // Round Rectangle. case CAPTURE_AREA_ROUNDRECT: CapDlg->AreaCapRG->ItemIndex = 1; break; case CAPTURE_AREA_TRIANGLE: // Triangle . CapDlg->AreaCapRG->ItemIndex =2; break; case CAPTURE_AREA_POLYGON: // Polygon . CapDlg->AreaCapRG->ItemIndex =3; break; case CAPTURE_AREA_ELLIPSE: // Ellips. CapDlg->AreaCapRG->ItemIndex =4; break; case CAPTURE_AREA_FREEHAND: // Free Hande CapDlg->AreaCapRG->ItemIndex =5; break; } } } //--------------------------------------------------------------------------- void __fastcall TMainFrm::CaptureObjectOptionsClick(TObject *Sender) { // Invoke Captur Object option Dialog from Lead Screnn Capture VCL. LEADScr1->EnableMethodErrors = false; LEADScr1->CaptureObjectOptionDlg ( this, 0 ); LEADScr1->EnableMethodErrors = true; } //--------------------------------------------------------------------------- void __fastcall TMainFrm::GeneralCaptureOptionsClick(TObject *Sender) { // Invoke Captur Options Dialog from Lead Screnn Capture VCL. LEADScr1->EnableMethodErrors = false; LEADScr1->CaptureOptionDlg ( this, 0 ); LEADScr1->EnableMethodErrors = true; } //--------------------------------------------------------------------------- void __fastcall TMainFrm::ExitMenuItemClick(TObject *Sender) { // close Main form and hence the application. Close(); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::SaveMenuItmClick(TObject *Sender) { if(MDIChildCount > 0) // Save only if there is an Active Child. { // Set the Bitmap of the LEAD VCL component to the LEAD Dialog VCL // component to Save it. LEADDlgFile1->LEADImage =((TChildFrm *)ActiveMDIChild)->LEADImage1; // set the file name to the caption of the Child. LEADDlgFile1->FileName = ((TChildFrm *)ActiveMDIChild) -> Caption.c_str(); // Set Falgs with appropiate values. LEADDlgFile1->DlgFileFlags = 0; LEADDlgFile1->DlgFlags= DLG_SAVE_AUTOPROCESS | DLG_SAVE_SHOW_FILEOPTIONS_PROGRESSIVE | DLG_SAVE_SHOW_FILEOPTIONS_STAMP | DLG_SAVE_SHOW_FILEOPTIONS_J2KOPTIONS | DLG_SAVE_SHOW_FILEOPTIONS_BASICJ2KOPTIONS | DLG_SAVE_SHOW_FILEOPTIONS_QFACTOR; if ( LEADDlgFile1->ShowSaveDlg ( this ) == SUCCESS_DLG_OK ) { //if the Image saved Reset the bSaved flag; ((TChildFrm *)ActiveMDIChild)->Saved(); } } } //--------------------------------------------------------------------------- void __fastcall TMainFrm::ColseMenuItmClick(TObject *Sender) { if(MDIChildCount>0) // close Active Child. ActiveMDIChild->Close(); } //--------------------------------------------------------------------------- void TMainFrm::UnlockSupport ( ) { LEADImage1->UnlockSupport ( L_SUPPORT_DOCUMENT, L_KEY_DOCUMENT ); LEADImage1->UnlockSupport ( L_SUPPORT_GIFLZW, L_KEY_GIFLZW ); LEADImage1->UnlockSupport ( L_SUPPORT_TIFLZW, L_KEY_TIFLZW ); LEADImage1->UnlockSupport ( L_SUPPORT_OCR, L_KEY_OCR ); LEADImage1->UnlockSupport ( L_SUPPORT_MEDICAL, L_KEY_MEDICAL ); LEADImage1->UnlockSupport ( L_SUPPORT_VECTOR, L_KEY_VECTOR ); LEADImage1->UnlockSupport ( L_SUPPORT_MEDICAL_NET, L_KEY_MEDICAL_NET ); LEADImage1->UnlockSupport ( L_SUPPORT_BARCODES_1D, L_KEY_BARCODES_1D ); LEADImage1->UnlockSupport ( L_SUPPORT_BARCODES_2D_READ, L_KEY_BARCODES_2D_READ ); LEADImage1->UnlockSupport ( L_SUPPORT_BARCODES_2D_WRITE, L_KEY_BARCODES_2D_WRITE ); LEADImage1->UnlockSupport ( L_SUPPORT_BARCODES_PDF_READ, L_KEY_BARCODES_PDF_READ ); LEADImage1->UnlockSupport ( L_SUPPORT_BARCODES_PDF_WRITE, L_KEY_BARCODES_PDF_WRITE ); LEADImage1->UnlockSupport ( L_SUPPORT_PDF, L_KEY_PDF ); LEADImage1->UnlockSupport ( L_SUPPORT_J2K, L_KEY_J2K ); LEADImage1->UnlockSupport ( L_SUPPORT_CMW, L_KEY_CMW ); LEADImage1->UnlockSupport ( L_SUPPORT_DICOM, L_KEY_DICOM ); LEADImage1->UnlockSupport ( L_SUPPORT_EXTGRAY, L_KEY_EXTGRAY ); LEADImage1->UnlockSupport ( L_SUPPORT_BITONAL, L_KEY_BITONAL ); LEADImage1->UnlockSupport ( L_SUPPORT_PDF_SAVE, L_KEY_PDF_SAVE ); LEADImage1->UnlockSupport ( L_SUPPORT_OCR_PDF_OUTPUT, L_KEY_OCR_PDF_OUTPUT ); LEADImage1->UnlockSupport ( L_SUPPORT_BARCODES_DATAMATRIX_READ, L_KEY_BARCODES_DATAMATRIX_READ ); LEADImage1->UnlockSupport ( L_SUPPORT_BARCODES_DATAMATRIX_WRITE, L_KEY_BARCODES_DATAMATRIX_WRITE ); LEADImage1->UnlockSupport ( L_SUPPORT_LTPRO, L_KEY_LTPRO ); LEADImage1->UnlockSupport ( L_SUPPORT_ABC, L_KEY_ABC ); LEADImage1->UnlockSupport ( L_SUPPORT_JBIG2, L_KEY_JBIG2 ); LEADImage1->UnlockSupport ( L_SUPPORT_ABIC_READ, L_KEY_ABIC_READ ); LEADImage1->UnlockSupport ( L_SUPPORT_ABIC_SAVE, L_KEY_ABIC_SAVE ); LEADImage1->UnlockSupport ( L_SUPPORT_PDF_READ, L_KEY_PDF_READ ); LEADImage1->UnlockSupport ( L_SUPPORT_PDF_ADVANCED, L_KEY_PDF_ADVANCED ); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::FormCreate(TObject *Sender) { UnlockSupport ( ); LEADScr1->ResetAreaOptions(); LEADScr1->ResetObjectOptions(); nImageCounter = 0; nRegionFramType = ftAnimated; // Display an animated frame. // The frame, itself, is inside the region. Application->OnHint = OnHint; Application->OnIdle = MyIdleHandler; if ( LEADDlgService1->InitDialogs ( 0 ) != SUCCESS ) { ShowMessage ( "Error Initializing Dialogs" ); Application->Terminate ( ); } } //--------------------------------------------------------------------------- void __fastcall TMainFrm::About1Click(TObject *Sender) { TAbout* dlg = new TAbout(this); dlg->ShowModal(); dlg->Free(); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::Cascade1Click(TObject *Sender) { Cascade(); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::Tile1Click(TObject *Sender) { Tile(); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::ArrangeIcons1Click(TObject *Sender) { ArrangeIcons(); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::CloseAll1Click(TObject *Sender) { for(int i=MDIChildCount-1; i >= 0; i--) MDIChildren[i]->Close(); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::CaptureClick(TObject *Sender) { // the Active Tab indexes // Area index 0 // Screen index 1 // Objext index 2 // Resource index 3 // the menu item index is order is the tab order. AnsiString operation = "Capturing"; try { CapDlg->SetActiveTab(((TMenuItem *)Sender)->MenuIndex); if(CapDlg->ShowModal()==mrOk) { EnableMenu(false); if ((CapDlg->HideAppChkBox->Checked ) && (CapDlg->CapPageCtrl->ActivePage != CapDlg->CapResTab)) Application->Minimize(); MainFrm->StopCaptureBtn->Enabled = true; // Disable colse button in the main form EnableMenuItem (GetSystemMenu (Handle,FALSE),SC_CLOSE,MF_GRAYED|MF_BYCOMMAND); if(CapDlg->CapPageCtrl->ActivePage ==CapDlg->CapAreaTab) // Capture Area Tab CaptureArea(); else if(CapDlg->CapPageCtrl->ActivePage == CapDlg->CapScrTab) // Capture Screen Tab CaptureScreen(); else if(CapDlg->CapPageCtrl->ActivePage == CapDlg->CapObjTab) // Capture Object Tab CaptureObject(); else if(CapDlg->CapPageCtrl->ActivePage == CapDlg->CapResTab) //Capture Reserces Tab CaptureResource(); } } catch (ELEADSCRError *e) { if ((CapDlg->HideAppChkBox->Checked ) && (CapDlg->CapPageCtrl->ActivePage != CapDlg->CapResTab)) Application->Restore(); if(MainFrm->LEADScr1->Error == ERROR_USER_ABORT) { if(CapDlg->CapPageCtrl->ActivePage != CapDlg->CapResTab) Application->MessageBox("Screen capturing aborted by the user.", Application->Title.c_str(), MB_OK | MB_ICONINFORMATION); } else Application->MessageBox(AnsiString(operation +":\n" + MainFrm->LEADScr1->ErrorMsg).c_str(), Application->Title.c_str(), MB_OK | MB_ICONERROR); } // Disable colse button in the main form EnableMenuItem (GetSystemMenu (Handle,FALSE),SC_CLOSE,MF_ENABLED); EnableMenu(true); MainFrm->StopCaptureBtn->Enabled = false; if ((CapDlg->HideAppChkBox->Checked ) && (CapDlg->CapPageCtrl->ActivePage != CapDlg->CapResTab)) Application->Restore(); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::CaptureArea() { StopCaptureBtn->Enabled = true; int nCaptureType; if(CapDlg->HideAppChkBox->Checked) Application->Minimize(); switch(CapDlg->AreaCapRG->ItemIndex) { case 0: // Rectangle. nCaptureType = CAPTURE_AREA_RECT; break; // Round Rectangle. case 1: nCaptureType = CAPTURE_AREA_ROUNDRECT; break; case 2: // Triangle . nCaptureType = CAPTURE_AREA_TRIANGLE; break; case 3: // Polygon . nCaptureType = CAPTURE_AREA_POLYGON; break; case 4: // Ellips. nCaptureType = CAPTURE_AREA_ELLIPSE; break; case 5: // Free Hande nCaptureType = CAPTURE_AREA_FREEHAND; break; } // capture Area with specified Area Type. LEADScr1->CaptureArea(nCaptureType); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::CaptureScreen() { if(CapDlg->HideAppChkBox->Checked&&CapDlg->ScreenCapRG->ItemIndex!=0) Application->Minimize(); switch(CapDlg->ScreenCapRG->ItemIndex) { case 0: // Wall Paper. LEADScr1->CaptureWallPaper(); break; case 1: // Full Screen. LEADScr1->CaptureFullScreen(); break; case 2: // Active Client. LEADScr1->CaptureActiveClient(); break; case 3: // Active Window . LEADScr1->CaptureActiveWindow(); break; } } //--------------------------------------------------------------------------- void __fastcall TMainFrm::CaptureObject() { if(CapDlg->HideAppChkBox->Checked) Application->Minimize(); switch ( CapDlg->ObjectCapRG->ItemIndex) { case 0: //Mouse Cursor LEADScr1->CaptureMouseCursor(); break; case 1: // Selected Object. LEADScr1->CaptureSelectedObject(); break; case 2://Menu Under Cursor. LEADScr1->CaptureMenuUnderCursor(); break; case 3://Window Under Cursor LEADScr1->CaptureWindowUnderCursor(); break; } } //--------------------------------------------------------------------------- void __fastcall TMainFrm::CaptureResource() { int nDlgType,nResType = 0; switch(CapDlg->ResourceCapRG->ItemIndex) { case 0 : //Tree View nDlgType = CAPTURE_DLG_TREEVIEW; break; case 1: //Tab View nDlgType = CAPTURE_DLG_TABVIEW; break; } nResType |= (CapDlg->BitmapChkBox->Checked ? RESTYPE_BITMAP : 0); nResType |= (CapDlg->IconChkBox->Checked ? RESTYPE_ICON : 0); nResType |= (CapDlg->CursorChkBox->Checked ? RESTYPE_CURSOR : 0); LEADScr1->CaptureEXEDlg ( MainFrm, // Handle Parent Window. "", // File Name. nResType, // Resource Type . nDlgType, 0 ); // Dialog Type. } void __fastcall TMainFrm::EnableMenu(bool bEnable) { CaptureMenuItem->Enabled = bEnable; ExitMenuItem->Enabled = bEnable; } void __fastcall TMainFrm::OnHint(TObject* Sender) { StatusBar->SimpleText= Application->Hint; } void __fastcall TMainFrm::LEADScr1CaptureImage(TObject *Sender, int nCurrentPageNumber) { // This function is called by the VCL Capture When it finished Capturing. // you can Get the captured image from the Bitmap property of the VCL . TChildFrm * child; child= new TChildFrm(this); // Create New Child. child->LEADImage1->Bitmap=LEADScr1->Bitmap; // Assign it's Bitmap child->Caption = child->Caption + AnsiString(++nImageCounter); // Update It's Caption if(child->LEADImage1->HasRgn) // if the Bitmap Has Region child->LEADImage1->RgnFrameType=nRegionFramType; Application->Restore(); EnableMenuItem (GetSystemMenu (Handle,FALSE),SC_CLOSE,MF_ENABLED|MF_BYCOMMAND); EnableMenu(); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::StopCaptureBtnClick(TObject *Sender) { LEADScr1->StopCapture(); } //--------------------------------------------------------------------------- void __fastcall TMainFrm::MyIdleHandler(TObject *Sender, bool &Done) { if (MDIChildCount == 0) { SaveMenuItm->Enabled = false; ColseMenuItm->Enabled = false; } else { SaveMenuItm->Enabled = true; ColseMenuItm->Enabled = true; } } //---------------------------------------------------------------------------