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

📄 mainsrc.pas

📁 通用题库管理系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
              New_DB_Info.Authen_DB_Pass[dbindex]:=EnCode(PassWord);
              Current_User.Created_DB[dbindex]:=DBName;
              Current_User.Authen_DB_Pass[dbindex]:=EnCode(PassWord);
              Seek(New_DB_Info_File,index);
              Write(New_DB_Info_File,New_DB_Info);
              break;
            end
            else if index=19 then
            begin
                messagedlg(#13'你所建的数据库个数已超过最大值,数据库创建失败!',mterror,[mbok],0);
                CloseFile(New_DB_Info_File);
                deletefile(NewFileName);
                abort;
            end;
          end;
        end;
      until Eof(New_DB_Info_File);
      CloseFile(New_DB_Info_File);
    end
    else
    begin
      messagedlg(#13'找不到数据库配置文件gmse.conf,数据库创建失败!',mterror,[mbok],0);
      deletefile(NewFileName);
      abort;
    end;
    Ext:=MidStr(NewFileName,1,length(NewFileName)-3)+'ldb';
    try
        vJE:=CreateOleObject('JRO.JetEngine');
        vJE.CompactDatabase(format('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'+
              'Jet OLEDB:Database Password=%s;',[NewFileName,'']),
              format('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
              +'Jet OLEDB:Database Password=%s;',[Ext,PassWord]));
        CopyFile(PChar(Ext),PChar(NewFileName),false);
        deletefile(Ext);
    except
        messagedlg(#13'数据库创建成功,但密码创建失败,你可以手动设置密码!',mterror,[mbok],0);
    end;
    NewDBReg.WriteString(DBName,'descri',dbalias);
    NewDBReg.WriteBool(DBName,'Registered',True);
    TreeView1.Items.AddChild(TreeView1.Items.Item[0],DBName);
    TreeView1.Items.Item[0].Expand(True);
    DataBaseNow.Text:=DBName;NewDBReg.Free;
    messagedlg(#13'数据库 '+DBName+' 创建成功,你可以创建表格!',mtInformation,[mbOK],0);
end;

procedure TMain.RegNewDBClick(Sender: TObject);
var RegNewDBIni:TIniFile;
    DBName,PassWord,dbalias:string;
    index,dbindex:integer;
    Reg_DB:TPersonInfo;
    Reg_DB_File:file of TPersonInfo;
    tablist:TStringList;
begin
    index:=-1;
    tablist:=TStringList.Create;
    dbname:=Trim(NewDBName.Text);
    PassWord:=Trim(db_user_pass.Text);
    dbalias:=Trim(NewDBNameAlias.Text);
    if not (MidStr(dbname,length(dbname)-3,4)='.mdb') then dbname:=dbname+'.mdb';
    if length(dbname)>15 then
    begin
      messagedlg(#13'数据库名太长,数据库创建失败!',mterror,[mbok],0);
      abort;
    end;
    if FileExists('./database/'+DBName) then
    begin
      try
         ADOConnPub.Close;
         ADOConnPub.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\database\'+
              DBName+';Mode=Share Deny None;Persist Security Info=False;'+
                    'Jet OLEDB:Database Password='+PassWord;
         ADOConnPub.Open;
      except
        messagedlg(#13'数据库 '+DBName+' 密码错误,数据库注册失败!',mterror,[mbok],0);
        abort;
      end;
      try
        ADOConnPub.GetTableNames(tablist,False);
      except
        messagedlg(#13'无法获取数据库 '+DBName+' 中的数据表信息!',mterror,[mbok],0);
        ADOConnPub.Close;
        abort;
      end;
      ADOConnPub.Close;
      try
        AssignFile(Reg_DB_File,'.\gmse.conf');
        Reset(Reg_DB_File);
      except
        messagedlg(#13'在打开数据库配置文件gmse.conf时发生错误,数据库注册失败!',mterror,[mbok],0);
        ADOConnPub.Close;
        abort;
      end;
      repeat
        Read(Reg_DB_File,Reg_DB);
        Inc(index);
        if Reg_DB.UserName=Current_User.UserName then
        begin
          for dbindex:=0 to 19 do
          begin
            if  Reg_DB.Created_DB[dbindex]='' then
            begin
              Reg_DB.Created_DB[dbindex]:=DBname;
              Reg_DB.Authen_DB_Pass[dbindex]:=PassWord;
              Current_User.Created_DB[dbindex]:=DBName;
              Current_User.Authen_DB_Pass[dbindex]:=PassWord;
              seek(Reg_DB_File,index);
              Write(Reg_DB_File,Reg_DB);
              break;
            end
            else  if index=19 then
            begin
              messagedlg(#13'你所建的数据库个数已超过最大值,数据库注册失败!',mterror,[mbok],0);
              CloseFile(Reg_DB_File);
              abort;
            end;
          end;
        end;
      until Eof(Reg_DB_File);
      CloseFile(Reg_DB_File);
      RegNewDBIni:=TIniFile.Create('./database.ini');
      if RegNewDBIni.ReadBool(DBName,'Registered',False) then
        messagedlg(#13'数据库 '+DBName+' 已经注册!',mtinformation,[mbok],0)
      else
      begin
        RegNewDBIni.WriteString(DBName,'alias',DBAlias);
        RegNewDBIni.WriteBool(DBName,'Registered',True);
        NewDBName.Text:='';
        db_user_pass.Text:='';
        db_user_password.Text:='';
        newdbnamealias.Text:='';
        RegNewDBIni.Free;
        messagedlg(#13'数据库库 '+DBName+' 注册成功!',mtinformation,[mbok],0);
      end;
    end
      else messagedlg(#13'数据库 '+DBName+' 不存在,数据库注册失败!',mterror,[mbok],0);


end;



procedure TMain.PageConChanging(Sender: TObject; var AllowChange: Boolean);
begin
GenPap.Left:=(PageCon.Width-GenPap.Width) div 2;
CreateDataBase.Left:=(PageCon.Width-CreateDataBase.Width) div 2;
PaperPreview.Left:=(PageCon.Width-PaperPreview.Width) div 2 ;
CreateDataBase.Left:=(PageCon.Width-CreateDataBase.Width) div 2;
GroupBox6.Left:=(PageCon.Width-GroupBox6.Width) div 2;
end;

procedure TMain.TypeDefineClick(Sender: TObject);
begin
      TableName.Text:=Trim(TypeDefine.Text)+'_'+Trim(TableLevel.Text);
end;

procedure TMain.CreateTableClick(Sender: TObject);
var DBNode:TStringList;
    TableCount,index,itemindex:integer;
    TableType:TIniFile;
begin
GroupBox3.Enabled:=False;
DBNode:= TStringList.Create;
if Trim(DataBaseNow.Text)='none' then messagedlg(#13'你还没有新建或选择数据!',mterror,[mbok],0) else
begin
  if FileExists('.\database\'+Trim(DataBaseNow.Text)) then
  begin
    for index:=0 to 19 do
    begin
      if Current_User.Created_DB[index]=Trim(DataBaseNow.Text) then
        break
      else if index=19 then
      begin
        messagedlg(#13'数据库 '+Current_User.Created_DB[index]+' 还没注册,无法新建数据表!',mterror,[mbok],0);
        GroupBox3.Enabled:=True;
        abort;
      end;
    end;
    try    {Connect to Created database and get all tables`name }
      ADOConnPub.Close;
      ADOConnPub.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\database\'+
                                    Current_User.Created_DB[index]+
                                    ';Persist Security Info=False;Jet OLEDB:Database Password='
                                    +DeCode(Current_User.Authen_DB_Pass[index]);
      ADOConnPub.Open;
    except
      messagedlg(#13'数据库 '+Current_User.Created_DB[index]+' 已找到,但无法连接!',mterror,[mbok],0);
      GroupBox3.Enabled:=True;
      Abort;
    end;
    try
      ADOConnPub.GetTableNames(DBNode,False);
    except
      messagedlg(#13'无法获取数据库 '+Current_User.Created_DB[index]+' 中的数据表信息!',mterror,[mbok],0);
      GroupBox3.Enabled:=True;
      ADOConnPub.Close;
      Abort;
    end;
    for TableCount:= 0 to DBNode.Count-1 do
    begin
      if DBNode.Strings[TableCount]=Trim(TableName.Text) then
        begin
          messagedlg(#13'表格 '+Trim(TableName.Text)+' 已经存在!',mterror,[mbok],0);
          TableName.Text:='';
          GroupBox3.Enabled:=True;
          ADOConnPub.Close;
          Abort;
        end;
    end;
    ADOComPub.Cancel;
    ADOComPub.Connection:=ADOConnPub;
    ADOComPub.CommandText:='CREATE TABLE '+Trim(TableName.Text)+'('+
                                                   'id AUTOINCREMENT(1,1) PRIMARY KEY,'+
                                                   'question_str_main MEMO,'+
                                                   'question_img IMAGE,'+
                                                   'question_str_sub MEMO,'+
                                                   'key_str MEMO,'+
                                                   'key_img IMAGE,'+
                                                   'last_date integer DEFAULT 20000101'+
                                                   ')';
    try
      ADOComPub.Execute;
      ADOCOmPub.Cancel;
      ADOConnPub.Close;
      for itemindex:=0 to TreeView1.Items.Item[0].Count-1 do
      if TreeView1.Items.Item[0].Item[itemindex].Text=Current_User.Created_DB[index] then break;
      TreeView1.Items.AddChild(TreeView1.Items.Item[0].Item[itemindex],Trim(TableName.Text));
      TreeView1.Items.Item[0].Item[itemindex].Expand(True);
      TableType:=TIniFIle.Create('.\database.ini');
      try
        TableType.WriteString(Trim(DataBaseNow.Text),Trim(TableName.Text),Trim(TypeDefine.Text)+'_'+Trim(TableLevel.Text));
      except
        messagedlg(#13'数据表类型注册失败!',mterror,[mbok],0);
      end;
      messagedlg(#13'数据表 '+Trim(TableName.Text)+' 创建成功!  ',mtinformation,[mbok],0);
      TableType.Free;
      GroupBox3.Enabled:=True;
    except
      messagedlg(#13'创建数据表时发生错误,创建数据表失败!',mterror,[mbok],0);
      ADOComPub.Cancel;
      ADOConnPub.Close;
      GroupBox3.Enabled:=True;
      Abort;
    end;
  end
  else
    begin
      showmessage('数据库 '+Trim(DataBaseNow.Text)+' 不存在!');
      DataBaseNow.Text:='';
      GroupBox3.Enabled:=True;
    end;
TableName.Text:='';
end;
end;

procedure TMain.TypeDefineChange(Sender: TObject);
begin
TypeDefineClick(Sender);
end;

procedure TMain.TableLevelClick(Sender: TObject);
begin
TypeDefineClick(Sender);
end;





procedure TMain.Button1Click(Sender: TObject);
begin
ADOTABLEAmend.Close;
end;






procedure TMain.LastDateDblClick(Sender: TObject);
begin
if Length(Trim(LastDate.Text))=0 then LastDate.Text:='20000101';
end;


procedure TMain.copyimg1Click(Sender: TObject);
begin
if DBImage1.Picture.Width<>0 then
DBimage1.CopyToClipboard;
end;

procedure TMain.pastimg1Click(Sender: TObject);
var  bmp:TBitMap;
begin
     bmp:=TBitMap.Create;
     if ClipBoard.HasFormat(CF_BITMAP) then
     begin
               bmp.LoadFromClipBoardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
               DBImage1.Picture.Bitmap:=bmp;
               DBImage1.Width:=bmp.Width;
               DBImage1.Height:=bmp.Height;
               ScrollBox1.HorzScrollBar.Range:=bmp.Width;
               ScrollBox1.VertScrollBar.Range:=bmp.Height;
               bmp.Free;
     end;
end;

procedure TMain.cutimg1Click(Sender: TObject);
begin
if DBImage1.Picture.Width<>0 then
DBImage1.CutToClipboard;
end;

procedure TMain.displaycoreimg1Click(Sender: TObject);
begin
displaycoreimg1.Checked:=True;
DBImage1.Center:=False;
displaycenterimg1.Checked:=False;
end;

procedure TMain.displaycenterimg1Click(Sender: TObject);
begin
displaycoreimg1.Checked:=False;
DBImage1.Center:=True;
displaycenterImg1.Checked:=True;
end;

procedure TMain.displaycoreimg2Click(Sender: TObject);
begin
displaycoreimg2.Checked:=True;
DBImage2.Center:=False;
displaycenterimg2.Checked:=False;
end;

procedure TMain.displaycenterimg2Click(Sender: TObject);
begin
displaycenterimg2.Checked:=True;
DBImage2.Center:=True;
displaycoreImg2.Checked:=False;
end;



procedure TMain.loadfromfile1Click(Sender: TObject);
var  bmp:TBitMap;
begin
bmp:=TBitMap.Create;
if OpenPicDial1.Execute then
begin
     bmp.LoadFromFile(OpenPicDial1.FileName);
     DBImage1.Picture.Bitmap:=bmp;
     DBImage1.Width:=bmp.Width;
     DBImage1.Height:=Bmp.Height;
     ScrollBox1.HorzScrollBar.Range:=Bmp.Width+2;
     ScrollBox1.VertScrollBar.Range:=Bmp.Height+2;
     bmp.Free;
end;

end;

procedure TMain.loadfromfile2Click(Sender: TObject);
var  bmp:TBitMap;
begin
bmp:=TBitMap.Create;
if OpenPicDial1.Execute then
begin
     bmp.LoadFromFile(OpenPicDial1.FileName);
     DBImage2.Picture.Bitmap:=bmp;
     DBImage2.Width:=bmp.Width;
     DBImage2.Height:=Bmp.Height;

⌨️ 快捷键说明

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