CDFind.cpp
上传用户:deyixm
上传日期:2007-01-06
资源大小:43k
文件大小:3k
源码类别:

行业应用

开发平台:

Visual C++

  1. //---------------------------------------------------------------------------
  2. // 学韬电子光盘册   版本: 1.2.1
  3. // 作者:颜承     时间:2000.1.17
  4. // 主要构件: TListView ,TTreeView ,TClientDataSet ,TList等
  5. // API函数: GetVolumeInformation,ShellExecute,GetDriveType,GetLogicDriveStrings
  6. // 自定义类: TSerchDisk 递归方法搜索整个磁盘目录文件结构
  7. // 此为检索光盘实现文件
  8. //---------------------------------------------------------------------------
  9. // 版权所有(C)2000 颜 承
  10. // 这一程序是自由软件,
  11. // 你可以遵照自由软件基金会出版的GNU通用公共许可证条款来修改和重新发布这一程序。
  12. // 发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定目的的隐含的担保。
  13. // 更详细的情况请参阅GNU通用公共许可证。
  14. // 你应该已经和程序一起收到一份GNU通用公共许可证的副本。
  15. // 我的联系方式:桂林集琦药业股份有限公司技术部(541004)
  16. // E-Mail: ycshowtop@sohu.com
  17. //-------------------------------------------------------------------------------
  18. #include <vcl.h>
  19. #pragma hdrstop
  20. #include "CDFind.h"
  21. #include "CDAdd.h"
  22. #include "main.h"
  23. //---------------------------------------------------------------------------
  24. #pragma package(smart_init)
  25. #pragma resource "*.dfm"
  26. TForm5 *Form5;
  27. //---------------------------------------------------------------------------
  28. __fastcall TForm5::TForm5(TComponent* Owner)
  29.         : TForm(Owner)
  30. {
  31. }
  32. //---------------------------------------------------------------------------
  33. //检索
  34. void __fastcall TForm5::Button1Click(TObject *Sender)
  35. {
  36.   unsigned long RetVal,a,b;
  37.   char str1[256],str2[156];
  38.   int i;
  39.   AnsiString TheCD;
  40.   for(i=0;i<256;i++) { str1[i]=''; str2[i]='';}
  41.   TheCD="";
  42.   AnsiString strDir= AnsiString(DriveComboBox1->Drive)+AnsiString(":\");
  43.   //取光盘序列号
  44.   GetVolumeInformation(strDir.c_str(), str1,256,&RetVal,&a,&b,str2,256);
  45.   if(RetVal==0) {   //没放入光盘 RetVal==0
  46.       Application->MessageBox("未能检测到光盘!","提示",MB_OK);
  47.       return;
  48.   }
  49.   else  TheCD=AnsiString(RetVal);
  50.  TLocateOptions op;
  51.  op.Clear();
  52.  op<<loCaseInsensitive;
  53.  //查找此光盘的记录
  54.  Form1->ClientDataSet1->First();
  55.  bool Isfind = Form1->ClientDataSet1->Locate("CDSeriNo",TheCD,op); //定位在此光盘的记录上
  56.  if(Isfind==false){
  57.    int res = MessageDlg("光盘库中没有这张光盘的记录!是否新建光盘记录?",mtWarning,TMsgDlgButtons()<<mbYes<<mbNo,0);
  58.    if(res==mrYes) {
  59.       Form3->DriveComboBox1->Drive=DriveComboBox1->Drive; //新建光盘记录
  60.       Form3->Show();
  61.    }
  62.    Close();
  63.  }
  64.  //检索到此光盘,在TreeView定位此光盘项目上
  65.  TTreeNode * myNode=Form1->TreeView1->Items->Item[1];
  66.  while(myNode!=NULL) {
  67.    if(myNode->Text==Form1->ClientDataSet1->FieldValues["CDName"]) break;
  68.    myNode=myNode->GetNext();
  69.  }
  70.  if(myNode!=NULL)  Form1->TreeView1->Selected=myNode;
  71.  Close();
  72. }
  73. //---------------------------------------------------------------------------