📄 mainsrc.pas
字号:
ScrollBox2.HorzScrollBar.Range:=Bmp.Width+2;
ScrollBox2.VertScrollBar.Range:=Bmp.Height+2;
bmp.Free;
end;
end;
procedure TMain.copyimg2Click(Sender: TObject);
begin
if DBImage2.Picture.Width<>0 then DBImage2.CopyToClipboard;
end;
procedure TMain.cutimg2Click(Sender: TObject);
begin
if DBImage2.Picture.Width<>0 then DBImage2.CutToClipboard;
end;
procedure TMain.pasteimg2Click(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);
DBImage2.Picture.Bitmap:=bmp;
DBImage2.Width:=bmp.Width;
DBImage2.Height:=bmp.Height;
ScrollBox2.HorzScrollBar.Range:=bmp.Width;
ScrollBox2.VertScrollBar.Range:=bmp.Height;
bmp.Free;
end;
end;
procedure TMain.ToolButton2Click(Sender: TObject);
begin
if @ActiveFunc<>nil then ActiveFunc(False);
end;
procedure TMain.RegNewTableClick(Sender: TObject);
var RegTab:TIniFile;
RegTabList:TStringList;
TableCount,index:integer;
begin
RegTabList:=TStringList.Create;
GroupBox3.Enabled:=False;
for index:=0 to 19 do
if Current_User.Created_DB[index]=trim(DataBaseNow.Text) then break;
if FileExists('./database/'+trim(DataBaseNow.Text)) then
begin
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'数据库 '+Trim(NewDBName.Text)+'.mdb 已找到,但无法连接!',mterror,[mbok],0);
GroupBox3.Enabled:=True;
Abort;
end;
try
ADOConnPub.GetTableNames(RegTabList,False);
except
messagedlg(#13'无法获取数据库 '+Trim(DataBaseNow.Text)+' 中的数据表信息!',mterror,[mbok],0);
GroupBox3.Enabled:=True;
ADOConnPub.Close;
Abort;
end;
ADOConnPub.Close;
RegTab:=TIniFile.Create('./database.ini');
if RegTabList.Count>0 then
begin
for TableCount:=0 to RegTabList.Count-1 do
begin
if Trim(TableName.Text)=RegTabList.Strings[TableCount] then
begin
RegTab.WriteString(Trim(DataBaseNow.Text),Trim(TableName.Text),Trim(TypeDefine.Text)+'_'+Trim(TableLevel.Text));
messagedlg('难度:'+Trim(TableLevel.Text)+#13+'题目类型:'+Trim(TypeDefine.Text)+#13+'表格名称:'+Trim(TableName.Text)+#13+
'数据库名称:'+Trim(DataBaseNow.Text)+#13#13+'------ 以上信息注册成功 ------',mtinformation,[mbok],0);
RegTab.Free;
GroupBox3.Enabled:=True;
abort;
end;
end;
end;
messagedlg(#13'在数据库 '+Trim(DataBaseNow.Text)+' 中,无法找到数据表 '+Trim(TableName.Text)+
' ,注册失败!',mterror,[mbok],0);
RegTab.Free;
GroupBox3.Enabled:=True;
end
else
begin
messagedlg(#13'数据库 '+Trim(DataBaseNow.Text)+'不存在!',mterror,[mbok],0);
GroupBox3.Enabled:=True;
end;
end;
procedure TMain.PopTreePopup(Sender: TObject);
begin
pump_test.Enabled:=False;
del_db.Enabled:=False;
change_db_name.Enabled:=False;
Amend_table.Enabled:=False;
del_tab.Enabled:=False;
new_db.Enabled:=False;
new_tab.Enabled:=False;
try
begin
if TreeView1.Selected.Text='所有数据库' then
new_db.Enabled:=True
else if TreeView1.Selected.Parent.Text='所有数据库' then
begin
Pump_test.Enabled:=true;
del_db.Enabled:=true;
change_db_name.Enabled:=true;
new_tab.Enabled:=True
end
else if TreeView1.Selected.Parent.Parent.Text='所有数据库' then
begin
Amend_table.Enabled:=True;
del_tab.Enabled:=True;
end
else
abort;
end;
except
abort;
end;
end;
procedure TMain.pump_testClick(Sender: TObject);
begin
set_new_paperClick(Sender);
PageCon.ActivePage:=TabGenPap;
PapInf_DbName.Text:=TreeView1.Selected.Text;
end;
procedure TMain.amend_tableClick(Sender: TObject);
var bmp:TBitMap;
ms:TMemoryStream;
index:integer;
begin
set_tab_amendClick(Sender);
PageCon.ActivePage:=TabAmend;
try
ADOConAmend.Close;
for index:=0 to 19 do
if Current_User.Created_DB[index]= TreeView1.Selected.Parent.Text then
begin
ADOConAmend.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\database\'+
Current_User.Created_DB[index]+';Mode=Share Deny None;Persist Security Info=False;'+
'Jet OLEDB:Database Password='+DeCode(Current_User.Authen_DB_Pass[index]);
break;
end
else if index=19 then
begin
messagedlg(#13'找不到数据库 '+TreeView1.Selected.Parent.Text+' 的注册信息,无法维护数据表!',mterror,[mbok],0);
abort;
end;
ADOTableAmend.Connection:=ADOConAmend;
ADOTableAmend.TableName:=TreeView1.Selected.Text;
ADOConAmend.Open;
ADOTableAmend.Open;
except
messagedlg(#13'打开数据表'+TreeView1.Selected.Text+'发生错误,打开失败!',mterror,[mbok],0);
ADOConAmend.Close;
ADOTableAmend.Close;
ADOTableAmend.ConnectionString:='';
abort;
end;
PageCon.TabIndex:=3;
if ADOTableAmend.RecordCount>0 then
begin
bmp:=TBitMap.Create;
ms:=TMemoryStream.Create;
TBlobField(DBGrid1.Fields[2]).SaveToStream(ms);
ms.Position:=0;
bmp.LoadFromStream(ms);
DBImage1.Width:=bmp.Width;
DBImage1.Height:=bmp.Height;
ScrollBox1.HorzScrollBar.Range:=bmp.Width;
ScrollBox1.VertScrollBar.Range:=bmp.Height;
bmp.FreeImage;ms.Clear;
TBlobField(DBGrid1.Fields[5]).SaveToStream(ms);
ms.Position:=0;
bmp.LoadFromStream(ms);
DBImage2.Width:=bmp.Width;
DBImage2.Height:=bmp.Height;
ScrollBox2.HorzScrollBar.Range:=bmp.Width;
ScrollBox2.VertScrollBar.Range:=bmp.Height;
bmp.Free;ms.Free;
end;
end;
procedure TMain.skinsetClick(Sender: TObject);
begin
if skinset.Checked then
begin
ActiveFunc(False);
skinset.Checked:=False;
n5.Checked:=n5.Checked;
end
else
begin
ActiveFunc(True);
skinset.Checked:=True;
end;
end;
procedure TMain.del_tabClick(Sender: TObject);
var temp,tabname,database:string;
index:integer;
begin
tabname:=TreeView1.Selected.Text;
database:=TreeView1.Selected.Parent.Text;
if messagedlg(#13'你确定要删除数据表'+TreeView1.Selected.Text+'吗?',mtconfirmation,[mbyes,mbno],0)=6 then
begin
ADOConnPub.Close;
for index:=0 to 19 do
begin
if Current_User.Created_DB[index]=database then
begin
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]);
break;
end
else if index=19 then
begin
messagedlg(#13'找不到数据库 '+TreeView1.Selected.Parent.Text+' 的注册信息,无法删除数据表!',mterror,[mbok],0);
abort;
end;
end;
try
ADOConnPub.Open;
ADOConnPub.Execute('DROP TABLE '+tabname,cmdText,[]);
except
messagedlg(#13'在删除数据表时发生错误,删除数据表失败!',mterror,[mbok],0);
abort;
end;
temp:=#13'数据表'+TreeView1.Selected.Text+'删除成功!';
ADOConnPub.Close;
TreeView1.Selected.Delete;
TreeView1.Items.Item[0].Expand(True);
messagedlg(temp,mtinformation,[mbok],0);
end;
end;
procedure TMain.del_dbClick(Sender: TObject);
var temp:String;
Delete_DB_Info:TPersonInfo;
Delete_DB_Info_File:file of TPersonInfo;
index:integer;
begin
temp:=TreeView1.Selected.Text;
index:=-1;
try
AssignFile(Delete_DB_Info_File,'.\gmse.conf');
Reset(Delete_DB_Info_File);
except
messagedlg(#13'在删除数据库注册信息时发生错误,数据库删除失败!',mterror,[mbok],0);
abort;
end;
if messagedlg(#13'你确定要删除数据库'+TreeView1.Selected.Text+'吗?',mtconfirmation,[mbYes, mbNo],0)=6 then
begin
repeat
Read(Delete_DB_Info_File,Delete_DB_Info);
Inc(index);
if Delete_DB_Info.UserName=Current_User.UserName then
begin
Seek(Delete_DB_Info_File,index);
for index:=0 to 19 do
begin
if Delete_DB_Info.Created_DB[index]=temp then
begin
try
DeleteFile('./database/'+temp);
except
messagedlg(#13'数据库 '+temp+' 可能正在使用,删除失败!',mterror,[mbok],0);
CloseFile(Delete_DB_Info_File);
abort;
end;
Delete_DB_Info.Created_DB[index]:='';
Delete_DB_Info.Authen_DB_Pass[index]:='';
Current_User.Created_DB[index]:='';
Current_User.Authen_DB_Pass[index]:='';
Write(Delete_DB_Info_File,Delete_DB_Info);
break;
end;
end
end;
until Eof(Delete_DB_Info_File);
CloseFile(Delete_DB_Info_File);
TreeView1.Selected.Delete;
TabSysConfShow(Sender);
temp:=#13'数据库 '+temp+' 删除成功!';
TreeView1.Items.Item[0].Expand(True);
messagedlg(temp,mtinformation,[mbok],0);
end;
end;
procedure TMain.new_tabClick(Sender: TObject);
begin
DataBaseNow.Text:=TreeView1.Selected.Text;
PageCon.TabIndex:=2;
set_new_regClick(Sender);
end;
procedure TMain.new_dbClick(Sender: TObject);
begin
PageCon.TabIndex:=2;
set_new_regClick(Sender);
end;
procedure TMain.change_tab_nameClick(Sender: TObject);
var NewTabname:String;
begin
NewTabName:=Inputbox('GTKMS','请输入新的数据表名称:',TreeView1.Selected.Text);
Try
ADOComPub.Cancel;
ADOComPub.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database\'+TreeView1.Selected.Parent.Text+';Mode=Share Deny None;Persist Security Info=False';
ADOComPub.CommandText:='';
ADOComPub.Execute;
except
end;
end;
procedure TMain.change_db_nameClick(Sender: TObject);
var NewDBname,OldDBName:String;
index,itemindex:integer;
alter_db_name:TPersonInfo;
alter_db_name_file:file of TPersonInfo;
begin
OldDBName:=TreeView1.Selected.Text;
try
AssignFile(alter_db_name_file,'.\gmse.conf');
Reset(alter_db_name_file);
except
messagedlg(#13'读取数据库配置文件gmse.conf时发生错误,重命名数据库失败!',mterror,[mbok],0);
abort;
end;
NewDBName:=Inputbox('GTKMS','请输入新的数据库名称:',TreeView1.Selected.Text);
if (NewDBName=OldDBName) or (length(NewDBName)=0) then abort;
if not (LowerCase(MidStr(NewDBName,length(NewDBName)-3,4))='.mdb') then NewDBName:=NewDBName+'.mdb';
if length(NewDBName)>15 then
begin
messagedlg(#13'数据库名长度超出最大允许值,数据库更改名称失败!',mterror,[mbok],0);
CloseFile(alter_db_name_file);
abort;
end;
if RenameFile('.\database\'+OldDBName,'.\database\'+NewDBName) then
TreeView1.Selected.Text:=NewDBName
else
begin
messagedlg(#13'数据库可能正在使用,更改名称失败!',mterror,[mbok],0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -