1. 程式人生 > >10分鐘10行代碼開發APP(delphi 應用案例)

10分鐘10行代碼開發APP(delphi 應用案例)

程序 oid deb clas containe lec con 應用開發 winapi

總結一下用到的知識(開發環境安裝配置不計算在內):

  • 第六章 使用不同風格的按鈕;
  • 第十七章 讓布局適應不同大小與方向的窗體;
  • 第二十五章 使用 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 ClassSample Methods

技術分享圖片

4. 第四步,保留默認的TCP/ IP通信端口211。這將確保客戶端和服務器之間的通信將通過默認 DataSnap 端口。

技術分享圖片

5. 選擇服務器繼承至TDSServerModule

技術分享圖片

6. 保存窗體單元為DataSnapServerUnit

7. 切換到DataSnapServerUnit,並將窗體的Name

屬性更改為DSServerForm

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 應用案例)