10分鐘10行代碼開發APP(delphi 應用案例)
總結一下用到的知識(開發環境安裝配置不計算在內):
- 第六章 使用不同風格的按鈕;
- 第十七章 讓布局適應不同大小與方向的窗體;
- 第二十五章 使用 dbExpress訪問 InterBase ToGo
- 第二十九章 從移動客戶端連接到企業數據庫;
以下是具體制作步驟:
1、創建DataSnap服務VCL應用程序
1.1 創建服務程序
新建一個項目:Delphi Projects >DataSnap Server > DataSnap Server
1. 第一步,選擇Forms Application項目類型。
2. 第二步,VCL Application應用程序類型。
3. 第三步,在服務器功能列表是選擇TCP/IP協議、Server Methods Class、Sample Methods。
4. 第四步,保留默認的TCP/ IP通信端口211。這將確保客戶端和服務器之間的通信將通過默認 DataSnap 端口。
5. 選擇服務器繼承至TDSServerModule。
6. 保存窗體單元為DataSnapServerUnit。
7. 切換到DataSnapServerUnit,並將窗體的Name
8. 保存服務器方法單元 (默認情況下,通過該向導所創建︰ ServerMethodsUnit1)作為ServerModuleUnit。
9. 保存服務器容器單元 (默認情況下,通過該向導所創建︰ ServerContainerUnit1)作為ServerContainerUnit。
10. 將新項目保存為DataSnapServerProject。
11. 在Project Manager選擇 ProjectGroup1,並將項目另存為DataSnapTutorialProjectGroup.groupproj.
1.1定義DataSnap 服務器上的數據集
1. 切換到ServerContainerUnit.pas文件把implementation下的uses子句替換成:usesWinapi.Windows,ServerModuleUnit。
2. 切換到ServerModuleUnit.pas 文件。
3. 在窗體設計器,更改Name屬性為DSServerModule_Demodata。
4. 在服務器模塊(ServerModule)配置以下屬性:
(1)拖放 TSQLConnection 控件到服務器模塊,並設置以下屬性:
- 設置 Name 屬性為SQLConnection_Demodata.
- 設置 LoginPrompt 屬性為 False.
- 設置 Driver 屬性為 InterBase Server.
- 展開 Driver節點,設置 DataBase屬性為:G:\demo\DataSnap\database\DEMO_DATA.GDB.(本機數據文件位置。)
- 更改 Connected屬性為 True。
(2)拖放TSQLDataSet控件到服務器模塊,並設置以下屬性:
- 設置 Name 屬性為 SQLConnection_login.
- 設置SQLConnection 屬性為SQLDataSet_Demodata.
- 設置CommandType屬性為 ctQuery.
- 設置 CommandText屬性為 select CASE count(id) when 1 then 1else 0 end as cou from T_USER where user_name=:user_nameand pass=:pass
- 點擊Params後面[…]按鈕,設置參數類型如下:
- 更改 Active 屬性為 True。
(3)拖放TdataSetProvider控件到服務器模塊,並設置以下屬性:
- 設置 Name屬性為 DataSetProvider_login.
- 設置 DataSet屬性為 SQLDataSet_login:
(4)拖放TSQLDataSet控件到服務器模塊,並設置以下屬性:
- 設置 Name 屬性為 SQLDataSet_city.
- 設置SQLConnection 屬性為SQLConnection_Demodata.
- 設置CommandType屬性為 ctTable.
- 設置CommandText屬性為 T_CITY.
- 設置Active 屬性為 True。
(5)拖放TdataSetProvider控件到服務器模塊,並設置以下屬性:
- 設置 Name 屬性為 DataSetProvider_city.
- 設置 DataSet 屬性為 SQLDataSet_city:
1.3暴露DataSnap 服務器數據集
1. 在窗體設計器中,打開ServerContainerUnit.
2. 選擇DSServerClass1,並更新OnGetClass事件的現有事件處理程序。DSServerClass1事件處理程序中添加以下代碼:
PersistentClass := ServerMethodsUnit.TDSServerModule_Demodata;
1.4運行 DataSnap 服務
右鍵單擊DataSnapServerProject.exe並選擇Run Without Debugging。
運行效果如下:
2、 創建連接到DataSnap服務器的移動應用程序
1. 在 ProjectManager,右鍵點擊DataSnapTutorialProjectGroup,選擇Add New Project。
2. 在Delphi Projects頁選擇Multi-Device Application:
3. 保存新單元為DataSnapClientUnit。
4. 保存新項目為DataSnapClientProject。
5. 打開DataSnapClientUnit,更改Name屬性為DSClientForm。
6. 拖放以下控件到窗體設計器:
(1)TSQLConnection控件(SQLConnection1)
- 設置Driver屬性為DataSnap.
- 展開Driver屬性,並設置HostName 屬性為DataSnap服務器的主機名或IP。
- 設置 LoginPrompt 屬性為 False。
- 設置 Connected 屬性為 True。
(2)TDSProviderConnection控件(DSProviderConnection1)
- 設置 SQLConnection 屬性為 SQLConnection1。
- 設置 ServerClassName為 TDSServerModule_demodata。此名稱應匹配 DataSnap服務器的服務器模塊中類的名稱。
- 設置 Connected 屬性為 True。
(3)TClientDataSet控件(ClientDataSet1)
l 設置 Name屬性為ClientDataSet_login。
l 設置 RemoteServer屬性為 DSProviderConnection1。
l 設置 ProviderName屬性為:DataSetProvider_login。這個名稱必須與DataSnap服務器提供者的名稱匹配。
- 點擊Params後面[…]按鈕,設置參數類型如下:
- 設置 Active 屬性為 True。
(4)TListView控件
- 設置 Align 屬性為 Client。
- 其他設置如下屬性:
(5)TLayout控件
- 設置 Align 屬性為Center.
(6)兩個Tlabel,兩個TEDIT,一個按鈕控件放入Tlayout中;
- 分別設置Tlabel的屬性Text為用戶名、密碼;.
- 設置EDIT2 屬性PassWord為True;
- 設置按鈕Text屬性為登錄;
7. 打開LiveBindings Designer連接數據的用戶界面,如下所示:
(1)點擊BindSourceDB1中的 COU,拖動到ListView1中Visible;
(2)點擊BindSourceDB1中的 COU,拖動到BindSourceDB2中Active;
(3)點擊BindSourceDB2中的 CITY_NAME,拖動到ListView1中Item.Detail;
(3)選中LinkFillControlToField1,設置下圖三個屬性;
8. 雙擊按鈕,在代碼編輯器中輸入如入代碼:
if not((Edit1.Text.IsEmpty()) or(Edit2.Text.IsEmpty())) then begin ClientDataSet_login.Active := False; ClientDataSet_login.ParamByName(‘user_name‘).Value := Edit1.Text; ClientDataSet_login.ParamByName(‘pass‘).Value := Edit2.Text; ClientDataSet_login.Active := True; Layout1.Visible :=not(ClientDataSet_login.FieldByName(‘cou‘).AsInteger=1); end else ShowMessage(‘用戶名或密碼不能為空。‘); ---------------------
9. 所有開發完成,可編譯運行。發布IOS模擬器前需要部署MIDAS庫,具體部署方法可參看《Delphi XE8開發iOS和Android移動應用開發教程[完整中文版]》內的介紹
10分鐘10行代碼開發APP(delphi 應用案例)