📄 mainsrc.pas
字号:
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 + -