⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queryform.cpp

📁 骨灰盒规范化果腹
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <stdlib.h>
#include <stdio.h>
#include "QueryForm.h"
#include "DM1.h"
#include "HugSnowData.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfmQuery *fmQuery;
//---------------------------------------------------------------------------
__fastcall TfmQuery::TfmQuery(TComponent* Owner)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfmQuery::FormActivate(TObject *Sender)
{
   LoadList(DM->tbKey,clbKey->Items);
   LoadStringFromDataSet(clbKey->Items,DM->tbInfoType,DM->tbInfoType->FieldByName("信息类型"),false);
   LoadStringFromDataSet(clbKey->Items,DM->tbFileType,DM->tbFileType->FieldByName("文件类型"),false);
   LoadList(DM->tbInfoType,cbInfo->Items);
   cbInfo->Items->Add("全部类型");
   cbInfo->ItemIndex=cbInfo->Items->Count-1;
   LoadList(DM->tbFileType,cbFile->Items);
   cbFile->Items->Add("全部类型");
   cbFile->ItemIndex=cbFile->Items->Count-1;
   pc1->ActivePageIndex=0;
}
//---------------------------------------------------------------------------
//从数据库装入列表
void TfmQuery::LoadList(TDataSet * DataSet, TStrings * sl)
{
   DataSet->First();
   sl->Clear();
   while(!DataSet->Eof)
   {
      sl->Add(DataSet->FieldList->Fields[0]->AsString);
      DataSet->Next();
   }
}
//------------------------------------------------------------------
void __fastcall TfmQuery::btQueryClick(TObject *Sender)
{
   if(DM->q->Active)DM->q->Close();
   DM->q->SQL->Clear();
   DM->q->SQL->Add("SELECT 文件说明,扩展名,文件内容 FROM 信息库 WHERE (USERID="+QuotedStr(DM->tbUser->FieldByName("USERID")->AsString));
   //Query other public infomation
   if(chk1->Checked)
      DM->q->SQL->Add(" OR 公开=true OR USERID IN(SELECT USERID FROM 用户信息 WHERE 公开资料=TRUE)");
   DM->q->SQL->Add(")");
   DM->q->SQL->Add("AND (");
   int i,k=0;
   //关键字条件
   AnsiString gx=(rgGx->ItemIndex==0)?"AND":"OR";
   for(i=0;i<clbKey->Items->Count;i++)
      if(clbKey->Checked[i])
      {
         DM->q->SQL->Add(" 关键字 LIKE \'%"+clbKey->Items->Strings[i]+"%\' ");
         DM->q->SQL->Add(gx);
         k++;
      }
   DM->q->SQL->Delete(DM->q->SQL->Count-1);
   if(k>0)
      DM->q->SQL->Add(")");
   //信息类型条件
   if(cbInfo->ItemIndex<cbInfo->Items->Count-1)
      DM->q->SQL->Add("AND 信息类型="+QuotedStr(cbInfo->Text));
   //文件类型条件
   if(cbFile->ItemIndex<cbFile->Items->Count-1)
      DM->q->SQL->Add("AND 文件类型="+QuotedStr(cbFile->Text));
   //排序
   if(rgSort->ItemIndex<3)
   {
      gx="ORDER BY "+rgSort->Items->Strings[rgSort->ItemIndex]+" ";
      gx+=(rgSortRule->ItemIndex==0)?"ASC":"DESC";
      DM->q->SQL->Add(gx);
   }
   //ShowMessage(DM->q->SQL->Text);
   DM->q->Open();
   pc1->ActivePageIndex=1;
   sb1->Panels->Items[1]->Text=DM->q->RecordCount;
   sb1->Panels->Items[3]->Text=DM->q->RecNo;
}
//---------------------------------------------------------------------------

void __fastcall TfmQuery::btExportClick(TObject *Sender)
{
   TLocateOptions Opts;
   AnsiString ext=DM->q->FieldByName("扩展名")->AsString;
   sd1->Filter=ext.SubString(2,ext.Length())+"文件|*"+ext;
   sd1->DefaultExt=ext;
   if(sd1->Execute())
   {
      (dynamic_cast<TBlobField *>(DM->q->FieldByName("文件内容")))->SaveToFile(sd1->FileName);
   	if(MessageBox(NULL,
               "文件已保存,要马上打开吗?",
               "保存文件",
               MB_YESNO|MB_ICONQUESTION
               )==IDYES
      	)
      	if(UINT(ShellExecute(NULL,"open",sd1->FileName.c_str(),NULL,NULL,SW_SHOWNORMAL))<=32)
         {
            if(edExe->Text.IsEmpty())
               edExe->Text="NotePad";
            ShellExecute(NULL,"open",edExe->Text.c_str(),sd1->FileName.c_str(),NULL,SW_SHOWNORMAL);
         }
   }
}
//---------------------------------------------------------------------------

void __fastcall TfmQuery::btViewClick(TObject *Sender)
{
   AnsiString tmp=getenv("Temp");
   char s[80];
   tmpnam(s);
   tmp=tmp+"\\"+s;
   tmp=ChangeFileExt(tmp,DM->q->FieldByName("扩展名")->AsString);
   (dynamic_cast<TBlobField *>(DM->q->FieldByName("文件内容")))->SaveToFile(tmp);
   if(UINT(ShellExecute(NULL,"open",tmp.c_str(),NULL,NULL,SW_SHOWNORMAL))<=32)
   {
      if(edExe->Text.IsEmpty())
         edExe->Text="NotePad";
      ShellExecute(NULL,"open",edExe->Text.c_str(),tmp.c_str(),NULL,SW_SHOWNORMAL);
   }
}
//---------------------------------------------------------------------------

void __fastcall TfmQuery::DBNavigator1Click(TObject *Sender,
      TNavigateBtn Button)
{
   sb1->Panels->Items[1]->Text=DM->q->RecordCount;
   sb1->Panels->Items[3]->Text=DM->q->RecNo;
}
//---------------------------------------------------------------------------

void __fastcall TfmQuery::btDeleteClick(TObject *Sender)
{
   if(MessageBox(NULL,
                  "你真的要删除指定条件的记录吗?\n这些记录将不能恢复!",
                  "条件删除",
                  MB_OKCANCEL|MB_ICONWARNING|MB_DEFBUTTON2
                  )
      !=IDOK)
         return;
   if(DM->q->Active)DM->q->Close();
   DM->q->SQL->Clear();
   DM->q->SQL->Add("DELETE FROM 信息库 WHERE USERID="+QuotedStr(DM->tbUser->FieldByName("USERID")->AsString));
   //delete public infomation
   if(chk2->Checked)
      DM->q->SQL->Add("AND 公开=TRUE");
   DM->q->SQL->Add("AND (");
   int i,k=0;
   //关键字条件
   AnsiString gx=(rgGx->ItemIndex==0)?"AND":"OR";
   for(i=0;i<clbKey->Items->Count;i++)
      if(clbKey->Checked[i])
      {
         DM->q->SQL->Add(" 关键字 LIKE \'%"+clbKey->Items->Strings[i]+"%\' ");
         DM->q->SQL->Add(gx);
         k++;
      }
   DM->q->SQL->Delete(DM->q->SQL->Count-1);
   if(k>0)
      DM->q->SQL->Add(")");
   //信息类型条件
   if(cbInfo->ItemIndex<cbInfo->Items->Count-1)
      DM->q->SQL->Add("AND 信息类型="+QuotedStr(cbInfo->Text));
   //文件类型条件
   if(cbFile->ItemIndex<cbFile->Items->Count-1)
      DM->q->SQL->Add("AND 文件类型="+QuotedStr(cbFile->Text));
   ShowMessage(DM->q->SQL->Text);
   DM->q->ExecSQL();
   ShowMessage("已经完成删除操作!");
}
//---------------------------------------------------------------------------
AnsiString TfmQuery::GetEx(AnsiString FileType)
{
   /*TADOQuery *q=new TADOQuery(this);
   AnsiString s="";
   q->Connection=DM->ADOC1;
   q->SQL->Add("SELECT 扩展名 FROM 文件类型 WHERE 文件类型="+QuotedStr(FileType));
   q->Open();
   if(q->RecordCount>0)
      s=q->FieldByName("扩展名")->AsString;
   q->Close();
   delete q;
   return s;*/
}

void __fastcall TfmQuery::btSelecrClick(TObject *Sender)
{
   if(od1->Execute())
      edExe->Text=od1->FileName;   
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -