//--------------------------------------------------------------------------- #include #include #pragma hdrstop #include "BrowsFrm.h" #include "MainForm.h" #include "LEADDef.hpp" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "LEADImgLst" #pragma link "LEADThmb" #pragma resource "*.dfm" #pragma resource "Common.res" TBrowseForm *BrowseForm; //--------------------------------------------------------------------------- __fastcall TBrowseForm::TBrowseForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- int __fastcall TBrowseForm::BrowseDir(AnsiString strDirectory, AnsiString Filter) { AnsiString Msg; int nIndex; int Result; Caption = "Browsing: "+ strDirectory; try { for (nIndex = 0; nIndex < LEADImgList1->Count; nIndex++) { if ((LEADImgList1->Item[nIndex]->Data != 0) ) { delete ((pLImageInfo)(LEADImgList1->Item[nIndex]->Data)); LEADImgList1->Item[nIndex]->Data = 0; } } LEADImgList1->Clear(); Show(); m_bCancelBrowsing= false; m_bInBrowsing = true; MainFrm->mnuOptions1->Enabled = false; for (nIndex = 0; nIndex < MainFrm->MDIChildCount; nIndex++) ((TChildImage *)(MainFrm->MDIChildren[nIndex]))->mnuOptions1->Enabled = false; LEADThumb1->Filter = Filter; LEADThumb1->LoadStamp= false; Result= LEADThumb1->BrowseDir(strDirectory); } catch (ELEADThumbError *e) { if ((m_bInBrowsing) ) { if (( LEADThumb1->Error == ERROR_USER_ABORT) ) { Msg = "Browsing aborted by the user."; Application->MessageBox(Msg.c_str() , Application->Title.c_str() , MB_OK | MB_ICONINFORMATION); Result= SUCCESS; } else { Msg = "Error Browsing " + strDirectory + ".\n" + LEADThumb1->ErrorMsg; Application->MessageBox(Msg.c_str(), Application->Title.c_str(), MB_OK | MB_ICONERROR); Hide(); Result= LEADThumb1->Error; } } else Result = SUCCESS; } catch( Exception *E) { Application->MessageBox(E->Message.c_str() , Application->Title.c_str(), MB_OK | MB_ICONERROR); Hide(); Result= FAILURE; } m_bInBrowsing = false; if ((LEADImgList1->Count == 0) ) { Msg = "No Images found."; Application->MessageBox(Msg.c_str(), Application->Title.c_str(), MB_OK | MB_ICONINFORMATION); Hide(); } MainFrm->mnuOptions1->Enabled = true; MainFrm->mnuOptions1->Enabled = true; for (nIndex = 0; nIndex < MainFrm->MDIChildCount; nIndex++) ((TChildImage *)(MainFrm->MDIChildren[nIndex]))->mnuOptions1->Enabled = true; return Result; } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::AddItem(TBitmapHandle Bitmap ,AnsiString fileName, int PageNumber) { AnsiString fileTitle; pLImageInfo pImageInfo; pImageInfo = new LImageInfo; if ((pImageInfo != NULL) ) { pImageInfo->FileName = fileName; pImageInfo->PageNumber = PageNumber; } fileTitle = ExtractFileName(fileName); LEADImgList1->Insert (Bitmap, fileTitle , (int)pImageInfo); LEADImgList1->EnsureVisible (LEADImgList1->Count -1); } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::DeleteSelectedItems() { int nIndex; for (nIndex = LEADImgList1->Count -1; nIndex >= 0; nIndex--) { if ( LEADImgList1->Item[nIndex]->Selected ) { if ((LEADImgList1->Item[nIndex]->Data != 0) ) delete (pLImageInfo(LEADImgList1->Item[nIndex]->Data)); LEADImgList1->Remove(nIndex); } } } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::SortItems(bool bAscending) { LEADImgList1->Sort(bAscending); } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::FormCreate(TObject *Sender) { Parent = MainFrm; m_bCancelBrowsing= false; m_bInBrowsing = false; m_nPageNumber= 1; m_OldFileName = ""; LEADImgList1->DisplayItemText = true; LEADImgList1->EnableKeyboard = true; LEADImgList1->SelectionStyle = SELECTIONSTYLE_SELECTCOLOR; LEADImgList1->AllowSelection = ALLOWSELECTION_SINGLE; LEADImgList1->ScrollStyle = SCROLLSTYLE_VERTICAL; LEADThumb1->StopOnError = false; LEADThumb1->IncludeSubDirectories = true; LEADThumb1->ExpandMultipage = false; Graphics::TBitmap* Btmp = new Graphics::TBitmap(); Btmp->LoadFromResourceName((unsigned int)HInstance, "FLAG"); int nRet = MainFrm->LEADImage2->FromHBitmap((L_HBITMAP)Btmp->Handle, (L_HPALETTE)Btmp->Palette); if(nRet == SUCCESS) { LEADImgList1->SetSelectionBitmap((TColor)RGB(0, 255, 0), MainFrm->LEADImage2->Bitmap); } Btmp->Free(); } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::FormDestroy(TObject *Sender) { for (int nIndex = 0; nIndex < LEADImgList1->Count; nIndex++) { if ((LEADImgList1->Item[nIndex]->Data != NULL) ) delete((pLImageInfo)LEADImgList1->Item[nIndex]->Data); } } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::LEADImgList1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key == VK_ESCAPE) m_bCancelBrowsing = true; } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::LEADImgList1ItemSelected(TObject *Sender, int nIndex) { AnsiString FileName; TChildImage *newChild; AnsiString Msg; pLImageInfo pImageInfo; m_bCancelBrowsing = true; pImageInfo = (pLImageInfo)(LEADImgList1->Item[nIndex]->Data); if ((pImageInfo != NULL) ) { FileName = pImageInfo->FileName; Screen->Cursor = crHourGlass; newChild = new TChildImage(this); newChild->SetImageName(FileName); try { newChild->LEADImage1->GetFileInfo(FileName, 0); if ((newChild->LEADImage1->InfoAnimation) ) newChild->LEADImage1->AutoAnimate = false; newChild->LEADImage1->Load(FileName, 0, 0,-1); newChild->LEADImage1->BitmapListIndex = pImageInfo->PageNumber -1; if ((newChild->LEADImage1->InfoAnimation) ) newChild->LEADImage1->AutoAnimate = true; } catch (Exception *e) { newChild->Close(); Msg = "An error occoured in your application." + AnsiString("\n") + "Casues by:" + newChild->LEADImage1->ErrorMsg; Application->MessageBox (Msg.c_str(),"Error! ",MB_OK); if ((LEADImgList1->Item[nIndex]->Data != 0) ) FreeMemory(pLImageInfo(LEADImgList1->Item[nIndex]->Data)); LEADImgList1->Remove(nIndex); Screen->Cursor = crDefault; return; } newChild->StatusBarChanged(newChild); newChild->Caption = FileName; MainFrm->StatusBar->Panels->Items[0]->Text = FileName; Screen->Cursor = crDefault; } LEADImgList1->SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::LEADThumb1ThumbnailEvent(TObject *Sender, TBitmapHandle Bitmap, AnsiString FileName, int nStatusCode, int nPercent) { if ( ! m_bInBrowsing ) { LEADThumb1->ContinueBrowse = false; return; } if ((nStatusCode == 0) ) { if (strcmp(m_OldFileName.c_str() ,FileName.c_str()) == 0) m_nPageNumber++; else m_nPageNumber = 1; AddItem (Bitmap, FileName, m_nPageNumber); m_OldFileName = FileName; } Application->ProcessMessages(); LEADThumb1->ContinueBrowse = ! m_bCancelBrowsing; } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::FormHide(TObject *Sender) { if(MainFrm->ComponentState.Contains(csDestroying)) { MainFrm->mnuInsertImage1->Enabled = false; MainFrm->mnuRemoveImage1->Enabled = false; } } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::FormShow(TObject *Sender) { LEADImgList1->SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::FormClose(TObject *Sender, TCloseAction &Action) { m_bCancelBrowsing = true; Action = caHide; MainFrm->mnuSortItems1->Enabled=False; } //--------------------------------------------------------------------------- void __fastcall TBrowseForm::LEADImgList1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { m_bCancelBrowsing = true; } //---------------------------------------------------------------------------