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 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移動應用開發教程[完整中文版]》內的介紹

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM