1. 程式人生 > >Delphi - 手把手教你基於D7+Access常用管理系統架構的設計與實現 (更新中)

Delphi - 手把手教你基於D7+Access常用管理系統架構的設計與實現 (更新中)

前言

  從事軟體開發工作好多年了,學的越深入越覺得自己無知,所以還是要對知識保持敬畏之心,活到老,學到老!

健身和程式碼一樣都不能少,身體是革命的本錢,特別是我們這種高危工種,所以小夥伴們運動起來!有沒有健身擼鐵,體脂現在是多少呀?明年(2019/03/22)徐州的馬拉松有沒有報名呀!?

  扯的有點遠了,接下來我將抽三天時間手把手教你基於Delphi7+Access,同時搭配第三方控制元件RC、AlphaControl(第三方控制元件主要用於美化介面),完成通用管理系統架構的設計。騷年,想想是不是還有點小激動?

   


 涉及知識點

  • Access資料庫建立與關鍵表結構設計
  • Delphi ADOConnection動態連線Access資料庫
  • Delphi前臺fsMDIForm和fsMDIChild窗體設計
  • dxBarManager方式通用選單架構設計
  • 主介面常見狀態列涉及與動態更新(軟體版本資訊、時間狀態資訊、登入組資訊、滾動資訊、當前時間...)
  • Delphi通用登入介面設計及主介面載入互動
  • MD5方式驗證和儲存密碼
  • 動態窗體選單列表(開啟窗體事件、銷燬窗體事件)
  • RzCheckTree方式設計常見使用者許可權
  • imageList圖表庫
  • 第三方控制元件:RC、AlphaControl面板控制元件  

看到這麼多知識點是不是感覺有點暈啊!

沒關係,接下來我們一步一步實現!注意我們的口號,保持對知識的敬畏之心!  

 

 


 整體設計方案

  這個是我們系統實現部分的一個設計方案,因為系統是通用的嘛,所以這裡我就叫它Common Management System了,下面簡稱CMS。

 

  

  這裡暫不做DFEMA和PFEMA的深層次分析,有BUG的系統才是好系統,不然還要開發和維護人員做什麼?(客戶小姐姐:呸,渣男!)

   


 專案實現

  騷年,扶好了,我要教你開車了,  啊呸,我要教你開發了。

Access資料庫建立與關鍵表結構設計 

  建立一個Access檔案,命名為DataX.mdb,再建立兩張表,分別命名為sysUser和sysUserAuthority,其中ID欄位自動生成,VDate欄位為日期格式,其餘欄位均為長文字根式,並新增如下資料,如下圖。

 


 Delphi ADOConnection動態連線Access資料庫 

  啟動Delphi7,新建一個專案,分別命名為:工程檔案命名為:CommonManagementSystem.dpr,單元檔案命名為:uMain.pas,主窗體命名為:MainFrm。

然後儲存,注意檔案的儲存位置,因為接下來連線Access資料庫時需要根據相對路徑來,參考下圖。

  然後,在主窗體上放一個ADOConnection控制元件,命名為conMain。接下來在工程onShow事件中寫如下程式碼:

 

 1 procedure TMainFrm.FormShow(Sender: TObject);
 2 begin
 3   // 動態連線Access資料庫
 4   try
 5     Screen.Cursor := crSQLWait;
 6     ChDir(ExtractFilePath(Application.ExeName));
 7     ChDir('..');
 8     try //動態載入資料庫
 9       conMain.Connected := False;
10       conMain.ConnectionString := 'Provider=Microsoft.Jet.OlEDB.4.0;Data Source=' + GetCurrentDir + '\DataX\DataX.mdb' + ';User ID=admin;Password=;Persist security Info=False';
11       conMain.Connected := True;
12       conMain.LoginPrompt := False;
13       statusPaneAccess.Caption := '資料庫已連線';//狀態列控制元件statusPane
14       Screen.Cursor := crDefault;
15     except
16       Screen.Cursor := crDefault;
17       statusPaneAccess.Caption := '資料庫未連線';
18       MessageDlg('資料庫連線失敗,請確認!', mtError, [mbOK], 0);
19     end;
20     Screen.Cursor := crDefault;
21   except
22     statusPaneAccess.Caption := '資料庫未連線';
23     MessageDlg('資料庫連線失敗,請確認!', mtError, [mbOK], 0);
24   end;
25 end;

    OK,到這裡工程動態連線Access資料庫的功能已經實現了。

  騷年,是不是感覺很簡單,是的,你沒有看錯,跟著我一步步做,就是so easy!(