?? mainform.pas
字號:
//---------------------------------------------------------
// 數據庫開發經典實例解析 清華大學出版社
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, DB, ADODB, StdCtrls;
type
Ttable=array[0..2] of string;
type
Tmain = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N15: TMenuItem;
StatusBar1: TStatusBar;
ADOQuery3: TADOQuery;
ADOCommand1: TADOCommand;
ADOQuery1: TADOQuery;
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N15Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
//para用于保存系統參數,FindForm用于尋找MDI子窗體,setpara用于更新para的值
para:Ttable;
function FindForm(caption:string):bool;
procedure setpara();
end;
var
main: Tmain;
para:Ttable;
implementation
{$R *.dfm}
uses SecSettingForm,AccountSettingForm,DocuInputForm,TotalAccountForm,DetailAccountForm,SumAccountForm,FinalReportForm;
//-------------------通過用戶定義的函數,判斷窗體是否已存在--------------------
function Tmain.FindForm(caption: string): bool;
var
i:integer;
begin
for i:=0 to main.MDIChildCount do
begin
// 通過對窗體標題判斷窗體是否存在
if main.MDIChildren[i].Caption=caption then
begin
//如果窗體已存在,則恢復窗體,并返回true
SendMessage(mdichildren[i].Handle, WM_SYSCOMMAND, SC_restore, 0);
mdichildren[i].Enabled:=true;
mdichildren[i].Show;
mdichildren[i].SetFocus;
result:=true;
break;
end
else
//如窗體不存在,則返回false,程序將創建窗體
result:=false;
end
end;
//----該函數的作用是保存系統參數表中的參數,并在調用前更新---
procedure Tmain.setpara;
var
i:integer;
begin
adoquery3.Active:=false;
adoquery3.Active:=true;
i:=0;
while not adoquery3.Eof do
begin
//保存系統參數
para[i]:=adoquery3.FieldByName('取值').AsString;
i:=i+1;
adoquery3.Next;
end;
end;
//----------------顯示會計科目設置窗體-------------------
procedure Tmain.N2Click(Sender: TObject);
var
newform:TSecSetting;
begin
if findForm('會計科目設置')=false then
begin
//若窗體不存在,則創建窗體
newform:=Tsecsetting.Create(application);
newform.Caption:='會計科目設置';
end;
end;
//----------------顯示帳戶設置窗體-------------------
procedure Tmain.N3Click(Sender: TObject);
var
newform:TaccountSetting;
begin
if findForm('帳戶設置(期初數據錄入)')=false then
begin
//若窗體不存在,則創建窗體
newform:=TaccountSetting.Create(application);
newform.Caption:='帳戶設置(期初數據錄入)';
end;
end;
//----------------顯示憑證設置窗體-------------------
procedure Tmain.N5Click(Sender: TObject);
var
newform:TDocuInput;
begin
if findForm('會計憑證輸入')=false then
begin
//若窗體不存在,則創建窗體
newform:=Tdocuinput.Create(application);
newform.Caption:='會計憑證輸入';
end;
end;
//----------------顯示總分類帳查詢窗體-------------------
procedure Tmain.N8Click(Sender: TObject);
var
newform:Ttotalaccount;
begin
if findForm('總分類帳查詢')=false then
begin
//若窗體不存在,則創建窗體
newform:=Ttotalaccount.Create(application);
newform.Caption:='總分類帳查詢';
end;
end;
//----------------顯示明細帳查詢窗體-------------------
procedure Tmain.N9Click(Sender: TObject);
var
newform:Tdetailaccount;
begin
if findForm('明細帳查詢')=false then
begin
//若窗體不存在,則創建窗體
newform:=Tdetailaccount.Create(application);
newform.Caption:='明細帳查詢';
end;
end;
//----------------顯示試算平衡表窗體-------------------
procedure Tmain.N11Click(Sender: TObject);
var
newform:Tsumaccount;
begin
if findForm('試算平衡表(正式使用)')=false then
begin
//若窗體不存在,則創建窗體
newform:=Tsumaccount.Create(application);
newform.Caption:='試算平衡表(正式使用)';
//在正式平衡表中使用
newform.foruse;
end;
end;
//----------------執行憑證過帳儲存過程---------------------
procedure Tmain.N6Click(Sender: TObject);
var
pnum,inputsum,outputsum:string;
begin
begin
//獲得分錄表中的統計數據
adoquery1.Active:=false;
adoquery1.Active:=true;
pnum:=adoquery1.FieldByName('憑證數').AsString;
inputsum:=adoquery1.FieldByName('借方金額').AsString;
outputsum:=adoquery1.FieldByName('貸方金額').AsString;
//執行儲存過程,實現憑證過帳
try
adocommand1.CommandText:='exec sf_憑證過帳';
adocommand1.Execute;
except
showmessage('過帳失敗');
exit;
end;
//顯示成功信息,并顯示統計數據
showmessage('過帳成功'+#13+#13+'過帳憑證數目為:'+pnum+#13+'借方金額合計:'+inputsum+#13+'貸方金額合計'+outputsum);
//刪除分錄表和憑證表
adocommand1.CommandText:='delete from 分錄表';
adocommand1.Execute;
adocommand1.CommandText:='delete from 憑證表';
adocommand1.Execute;
end;
end;
//-----執行期末結帳的儲存過程--------
procedure Tmain.N12Click(Sender: TObject);
begin
if application.MessageBox('結帳將進入下一個會計期間,是否結帳?','確認',MB_OKCANCEL)=IDOK then
begin
try
adocommand1.CommandText:='exec sf_期末結帳';
adocommand1.Execute;
except
showmessage('結帳失敗');
exit;
end;
showmessage('結帳成功');
end;
end;
//--------資產負債報表的生成和打印----------
procedure Tmain.N13Click(Sender: TObject);
var
index:integer;
inputstring:string;
newform:TFinalReport;
begin
//取得當前會計期間的值
setpara();
index:=strtoint(para[2]);
//提示用戶輸入要顯示的會計期間
inputstring:= InputBox('請選擇所要統計的會計期間', '會計期間', inttostr(index-1));
index:=strtoint(inputstring);
//計算資產負債表
adocommand1.CommandText:='exec sf_計算資產負債表 '''+inputstring+'''';
adocommand1.Execute;
//顯示報表窗體,這里不需要再查找是否已有報表窗體
//因為每次調用的報表窗體都可能顯示不同的會計期間
newform:=TFinalReport.Create(application);
newform.SetPeriod(index);
newform.QuickRep1.Preview;
end;
//------關閉窗體--------------------
procedure Tmain.N15Click(Sender: TObject);
begin
close;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -