【文章內(nèi)容簡(jiǎn)介】
1組件的LoginPrompt屬性設(shè)定為false,這樣以后程序在運(yùn)行時(shí)就不會(huì)彈出“密碼輸入框”了。但如果你的數(shù)據(jù)庫(kù)有密碼且在上面的“連接”頁(yè)面中沒(méi)有輸入密碼沒(méi)有選中“允許保存密碼”,那么不要把此屬性設(shè)定為false,因?yàn)槟阋院笮枰止ぽ斎朊艽a。接著設(shè)定ADOTable1組件的Connection屬性為ADOConnection1,單擊ADOTable1組件的tablename屬性后的省略號(hào),將可圖33 數(shù)據(jù)連接屬性的連接,從中選擇一個(gè)如“表 1”,設(shè)定ADOTable1組件的Active屬性為True,則馬上可以在DbGrid中看到表中的數(shù)據(jù)了。如果馬上運(yùn)行程序就可以在窗口中瀏覽和編輯數(shù)據(jù)了。在本程序中,因?yàn)楹芏鄦卧家L問(wèn)數(shù)據(jù)庫(kù),所以為了方便,使用一個(gè)單元Datamodule1,在單元里放置一個(gè)控件Adoconnection1用于統(tǒng)一連接數(shù)據(jù)庫(kù),其它單元要訪問(wèn)時(shí),只要把a(bǔ)dotalbe或adoquery控件的數(shù)據(jù)源指向Datamodule1中的Adoconnection1控件就可以了。這樣大大減少了代碼量,減少了工作量。 新建數(shù)據(jù)庫(kù)及字段運(yùn)行Microsoft公司的Office2000辦公軟件中的Access數(shù)據(jù)庫(kù)軟件。①.點(diǎn)擊菜單“文件”,在出現(xiàn)的菜單項(xiàng)中選擇“新建”菜單項(xiàng)。②.然后點(diǎn)擊“空數(shù)據(jù)庫(kù)”,在彈出的“文件新建數(shù)據(jù)庫(kù)”對(duì)話框中鍵入數(shù)據(jù)庫(kù)的名稱。③.這時(shí)系統(tǒng)將會(huì)自動(dòng)進(jìn)入詳細(xì)的數(shù)據(jù)庫(kù)設(shè)計(jì)窗體。我們選擇“使用設(shè)計(jì)器”創(chuàng)建表。④.在彈出的“表4_1”設(shè)計(jì)窗體中,依次寫(xiě)入各個(gè)字段名以及他們相對(duì)應(yīng)的數(shù)據(jù)類型和說(shuō)明事項(xiàng)。⑤.設(shè)計(jì)好字段名后,關(guān)閉并保存表為“用戶信息表” 。⑥.雙擊“用戶信息表”然后在彈出的數(shù)據(jù)錄入窗體中錄入數(shù)據(jù),并保存。同時(shí)由于系統(tǒng)提供了房屋資料管理的功能,所以要在數(shù)據(jù)庫(kù)中增加“房屋資料”,它主要是用來(lái)保存房屋信息的,它的字段和類型如表4_2:表4_1 用戶信息表的描述字段名稱數(shù)據(jù)類型用戶名文本密碼文本用戶等級(jí)文本表4_2房屋資料的描述字段名稱數(shù)據(jù)類型位置文本樓層文本面積數(shù)字產(chǎn)權(quán)情況文本結(jié)構(gòu)文本價(jià)格數(shù)字狀態(tài)文本因?yàn)檐浖行枰膫€(gè)數(shù)據(jù)庫(kù)即“客戶資料”、“中介信息表”、“單位信息表”、“常識(shí)信息表”,增加記錄的步驟也與上面增加記錄的步驟完全一樣。由于篇幅的限制,其它幾個(gè)表的結(jié)構(gòu)(包括詳細(xì)的字段名、類型、大?。┰谶@里,我就不一一列舉出來(lái)了。設(shè)計(jì)完成后,按同樣的方法向其中加入數(shù)據(jù),即幾條含有原始數(shù)據(jù)的記錄。根據(jù)已有的需求信息和總體設(shè)計(jì),可以進(jìn)行系統(tǒng)的詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)。系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)如下: 系統(tǒng)項(xiàng)目文件 每一個(gè)Delphi工程都有一個(gè)項(xiàng)目文件,在本系統(tǒng)中,項(xiàng)目文件如下所示:program Mdiapp。uses Forms, windows, Sysutils, Classes, Main in 39。39。 {MainForm}, Common in 39。39。, SaleCause in 39。39。 {Frm_SaleCause}, base in 39。39。 {Frm_Base}, DataBase in 39。39。 {DataModule1: TDataModule}, login in 39。39。 {Frm_Login}, UserChgPwd in 39。39。 {Frm_UserChgPwd}, SaleDetail in 39。39。 {Frm_SaleDetail}, UserPower in 39。39。 {Frm_UserPower}, QuerySale in 39。39。 {Frm_QuerySale}, SysSet in 39。39。 {Frm_SysSet}, LendDetail in 39。39。 {Frm_LendDetail}, QueryLend in 39。39。 {Frm_QueryLend}, LendCause in 39。39。 {Frm_LendCause}, InfoList in 39。39。 {Frm_InfoList}, Unit1 in 39。39。 {Form1}, Unit2 in 39。39。 {Form2}, Unit3 in 39。39。 {Form3}。{$R *.RES}varform3:tform3。begin 。 form3:=(form3)。 //這里是啟動(dòng)閃現(xiàn)窗體 。 //啟動(dòng)閃現(xiàn)窗體的延時(shí)程序 gs_WorkPath := ExtractFilePath()。 //得到可執(zhí)行文件的路徑 // 打開(kāi)數(shù)據(jù)庫(kù)模板 := 39。房產(chǎn)中介管理系統(tǒng)39。 (TDataModule1, DataModule1)。 (TMainForm, MainForm)。 (TForm3, Form3)。 。 // 連接數(shù)據(jù)庫(kù) if f_ConnectDataBase()=False then begin (39。連接數(shù)據(jù)庫(kù)出錯(cuò),可能原因有:39。131039。1. 配置文件 的數(shù)據(jù)庫(kù)配置小節(jié)有問(wèn)題~n~r39。131039。2. 本系統(tǒng)運(yùn)行路徑不對(duì)39。131039。3. 本機(jī)未安裝數(shù)據(jù)庫(kù)的 Client 端驅(qū)動(dòng)程序39。131039。4. 其他問(wèn)題39。131039。請(qǐng)與管理員聯(lián)系.39。,39。系統(tǒng)出錯(cuò)39。,MB_OK)。 。 end。 // 系統(tǒng)參數(shù)初始化 f_SysParmInit()。 // 顯示登錄窗口 Frm_login:=(Application)。 try 。 if =True then begin // 為登錄用戶定制界面 [0].text :=gs_OrgName。 [1].text :=39。操作員:39。+gs_Login_UserName。 [2].text :=39。工作日期:39。+FormatDateTime(39。yyyymmdd39。,gt_login_time)。 // 。 // 打開(kāi)查詢窗口 end else begin 。 end。 Finally 。 end。 // 。 //關(guān)閉閃現(xiàn)窗體 。 //釋放閃現(xiàn)窗體 。 end. 閃現(xiàn)窗體的實(shí)現(xiàn)(1)閃現(xiàn)窗體的實(shí)際運(yùn)行圖(2)實(shí)現(xiàn)的方法:首先,制作一個(gè)名為Form3的窗體。畫(huà)面如上圖所示。其次,在其中加入一個(gè)過(guò)程,即一個(gè)延時(shí)程序的過(guò)程:makesplah。代碼如下:procedure 。begin borderstyle:=bsnone。 show。 update。 sleep(2000)。end。第三,在工程文件代碼中將入以下語(yǔ)句:一是在開(kāi)始部分加上:form3:=(form3)。 。二是在最后結(jié)果部分加上:。 //關(guān)閉閃現(xiàn)窗體 。 //釋放閃現(xiàn)窗體具體可以參見(jiàn)上上頁(yè)的哪一段工程項(xiàng)目文件的源程序。 用戶登錄模塊 (1)用戶登錄模塊的窗體效果圖 (2)核心代碼解釋: 在輸入登錄密碼后,按“確定”后觸發(fā)的事件。procedure (Sender: TObject)。begin //錄入檢驗(yàn) if =39。39。 then begin messagedlg(39。請(qǐng) 選 擇 用 戶 名 !39。,mtInformation,[mbok],0)。 ()。 exit。 end。 //登錄驗(yàn)證 with ADOQ_Temp do begin close。 。 (39。SELECT * From 用戶信息表 Where 用戶名=39。+39。39。39。39。++39。39。39。39。)。 Open。 //用戶有效性 IF not IsEmpty then begin //登錄失敗 If Fieldbyname(39。密碼39。).AsString then begin messagedlg(39。