Delphi 三层框架开发客户端开发

新建一个application

如图 添加以下控件


 先启动scktsrvr.exe   此 在dephi程序的bin目录下  ) 然后   启动服务端 


再进行属性设置


代码如下

[delphi]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <pre name="code" class="delphi">unit ufrmMain;  
  2.   
  3. interface  
  4.   
  5. uses  
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  7.   Dialogs, StdCtrls, DB, DBClient, MConnect, SConnect, Grids, DBGrids,  
  8.   ExtCtrls, ActnList,ufrmCreate;  
  9.   
  10. type  
  11.   TfrmMain = class(TForm)  
  12.     sconn: TSocketConnection;  
  13.     btnInit: TButton;  
  14.     dbgrdDep: TDBGrid;  
  15.     ds3: TDataSource;  
  16.     dsTemp: TClientDataSet;  
  17.     pnl1: TPanel;  
  18.     btnNew: TButton;  
  19.     btnModify: TButton;  
  20.     btnSave: TButton;  
  21.     btnCancel: TButton;  
  22.     btn2: TButton;  
  23.     actlst1: TActionList;  
  24.     actCreate: TAction;  
  25.     actModify: TAction;  
  26.     actSave: TAction;  
  27.     actCancel: TAction;  
  28.     actDelete: TAction;  
  29.     btnPostData: TButton;  
  30.     procedure btnInitClick(Sender: TObject);  
  31.     procedure actSaveExecute(Sender: TObject);  
  32.     procedure btnSaveClick(Sender: TObject);  
  33.     procedure btnCancelClick(Sender: TObject);  
  34.     procedure actCancelExecute(Sender: TObject);  
  35.     procedure btn2Click(Sender: TObject);  
  36.     procedure actDeleteExecute(Sender: TObject);  
  37.     procedure btnModifyClick(Sender: TObject);  
  38.     procedure btnNewClick(Sender: TObject);  
  39.     procedure actCreateExecute(Sender: TObject);  
  40.     procedure actModifyExecute(Sender: TObject);  
  41.     procedure btnPostDataClick(Sender: TObject);  
  42.     procedure dsTempAfterInsert(DataSet: TDataSet);  
  43.   private  
  44.     procedure EnableControl(Flag:Boolean);  
  45.   public  
  46.     { Public declarations }  
  47.   end;  
  48.   
  49. var  
  50.   frmMain: TfrmMain;  
  51.   
  52. implementation  
  53.   
  54. {$R *.dfm}  
  55. //添加函数  
  56. function GetGUID: string;        //add lgm  
  57. var  
  58.   LTep: TGUID;  
  59. begin  
  60.   CreateGUID(LTep);  
  61.   Result := GUIDToString(LTep);  
  62. end;  
  63.   
  64.   
  65.   
  66. procedure TfrmMain.btnInitClick(Sender: TObject);  
  67. var  
  68.   a:OleVariant;  
  69. begin  
  70.   sconn.Open;  
  71.   sconn.AppServer.GetData('tb_Department','1=1',a);  
  72.   dsTemp.Data:=a;  
  73.   sconn.Close;  
  74. end;  
  75.   
  76. procedure TfrmMain.actSaveExecute(Sender: TObject);  
  77. begin  
  78.    if dsTemp.State in [dsEdit,dsInsert] then  
  79.    begin  
  80.      dsTemp.Post;  
  81.      EnableControl(False);  
  82.    end;  
  83. end;  
  84.   
  85. procedure TfrmMain.btnSaveClick(Sender: TObject);  
  86. begin  
  87.   actSave.Execute;  
  88. end;  
  89.   
  90. procedure TfrmMain.btnCancelClick(Sender: TObject);  
  91. begin  
  92.   actCancel.Execute;  
  93. end;  
  94.   
  95. procedure TfrmMain.actCancelExecute(Sender: TObject);  
  96. begin  
  97.   if dsTemp.State in [dsEdit,dsInsert] then  
  98.   begin  
  99.     dsTemp.Cancel;  
  100.     EnableControl(False);  
  101.   end;  
  102. end;  
  103.   
  104. procedure TfrmMain.btn2Click(Sender: TObject);  
  105. begin  
  106.   
  107.   actDelete.Execute;  
  108. end;  
  109.   
  110. procedure TfrmMain.actDeleteExecute(Sender: TObject);  
  111. begin  
  112.   if dsTemp.eof and dsTemp.bof then exit;  
  113.   if MessageDlg('是否删除?',mtWarning,[mbYes,mbNo],-1)=mrYes then  
  114.   begin  
  115.     dsTemp.Delete;  
  116.   end;  
  117. end;  
  118.   
  119. procedure TfrmMain.btnModifyClick(Sender: TObject);  
  120. begin  
  121.   if dsTemp.Active then  
  122.   if dsTemp.eof and dsTemp.bof then exit;  
  123.   actModify.Execute;  
  124. end;  
  125.   
  126. procedure TfrmMain.btnNewClick(Sender: TObject);  
  127. begin  
  128.   if dsTemp.Active then  
  129.   actCreate.Execute;  
  130. end;  
  131.   
  132. procedure TfrmMain.actCreateExecute(Sender: TObject);  
  133. begin  
  134.   frmCreate:=TfrmCreate.Create(self);  
  135.   try  
  136.     frmCreate.IsCreate:=True;  
  137.     if  frmCreate.ShowModal=mrOK then  
  138.     begin  
  139.       EnableControl(true);  
  140.     end;  
  141.   finally  
  142.     frmCreate.Free;  
  143.   end;  
  144. end;  
  145.   
  146. procedure TfrmMain.actModifyExecute(Sender: TObject);  
  147. begin  
  148.   frmCreate:=TfrmCreate.Create(self);  
  149.   try  
  150.     frmCreate.IsCreate:=False;  
  151.     if  frmCreate.ShowModal=mrOK then  
  152.     begin  
  153.       EnableControl(true);  
  154.     end;  
  155.   finally  
  156.     frmCreate.Free;  
  157.   end;  
  158. end;  
  159.   
  160. procedure TfrmMain.EnableControl(Flag: Boolean);  
  161. begin  
  162.   btnCancel.Enabled:=Flag;  
  163.   btnSave.Enabled:=Flag;  
  164.   btnNew.Enabled:=not Flag;  
  165.   btnModify.Enabled:=not Flag;  
  166. end;  
  167.   
  168. procedure TfrmMain.btnPostDataClick(Sender: TObject);  
  169. var  
  170.   b:OleVariant;  
  171. begin  
  172.   //先进行保存  
  173.   actSave.Execute;  
  174.   sconn.Open;  
  175.   sconn.AppServer.PostData('tb_Department',dstemp.Data,b);  
  176.   sconn.AppServer.GetData('tb_Department','1=1',b);  
  177.   dsTemp.Data:=b;  
  178.   sconn.Close;      
  179. end;  
  180.   
  181. procedure TfrmMain.dsTempAfterInsert(DataSet: TDataSet);  
  182. begin  
  183.   dsTemp.FieldByName('FKey').AsString:=GetGUID;  
  184. end;  
  185.   
  186. end.C  


dfm代码
[delphi]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. object frmMain: TfrmMain  
  2.   Left = 724  
  3.   Top = 400  
  4.   Width = 588  
  5.   Height = 369  
  6.   Caption = 'frmMain'  
  7.   Color = clBtnFace  
  8.   Font.Charset = DEFAULT_CHARSET  
  9.   Font.Color = clWindowText  
  10.   Font.Height = -11  
  11.   Font.Name = 'MS Sans Serif'  
  12.   Font.Style = []  
  13.   OldCreateOrder = False  
  14.   PixelsPerInch = 96  
  15.   TextHeight = 13  
  16.   object btnInit: TButton  
  17.     Left = 88  
  18.     Top = 285  
  19.     Width = 75  
  20.     Height = 25  
  21.     Caption = #21152#36733#25968#25454  
  22.     TabOrder = 0  
  23.     OnClick = btnInitClick  
  24.   end  
  25.   object dbgrdDep: TDBGrid  
  26.     Left = 0  
  27.     Top = 41  
  28.     Width = 572  
  29.     Height = 204  
  30.     Align = alTop  
  31.     DataSource = ds3  
  32.     Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgConfirmDelete, dgCancelOnExit]  
  33.     TabOrder = 1  
  34.     TitleFont.Charset = DEFAULT_CHARSET  
  35.     TitleFont.Color = clWindowText  
  36.     TitleFont.Height = -11  
  37.     TitleFont.Name = 'MS Sans Serif'  
  38.     TitleFont.Style = []  
  39.   end  
  40.   object pnl1: TPanel  
  41.     Left = 0  
  42.     Top = 0  
  43.     Width = 572  
  44.     Height = 41  
  45.     Align = alTop  
  46.     TabOrder = 2  
  47.     object btnNew: TButton  
  48.       Left = 15  
  49.       Top = 7  
  50.       Width = 75  
  51.       Height = 25  
  52.       Caption = #26032#24314  
  53.       TabOrder = 0  
  54.       OnClick = btnNewClick  
  55.     end  
  56.     object btnModify: TButton  
  57.       Left = 107  
  58.       Top = 7  
  59.       Width = 75  
  60.       Height = 25  
  61.       Caption = #20462#25913  
  62.       TabOrder = 1  
  63.       OnClick = btnModifyClick  
  64.     end  
  65.     object btnSave: TButton  
  66.       Left = 198  
  67.       Top = 7  
  68.       Width = 75  
  69.       Height = 25  
  70.       Caption = #20445#23384  
  71.       Enabled = False  
  72.       TabOrder = 2  
  73.       OnClick = btnSaveClick  
  74.     end  
  75.     object btnCancel: TButton  
  76.       Left = 290  
  77.       Top = 7  
  78.       Width = 75  
  79.       Height = 25  
  80.       Caption = #21462#28040  
  81.       Enabled = False  
  82.       TabOrder = 3  
  83.       OnClick = btnCancelClick  
  84.     end  
  85.     object btn2: TButton  
  86.       Left = 411  
  87.       Top = 7  
  88.       Width = 75  
  89.       Height = 25  
  90.       Caption = #21024#38500  
  91.       TabOrder = 4  
  92.       OnClick = btn2Click  
  93.     end  
  94.   end  
  95.   object btnPostData: TButton  
  96.     Left = 225  
  97.     Top = 284  
  98.     Width = 144  
  99.     Height = 25  
  100.     Caption = #25552#20132#25968#25454#21040#26381#21153#22120  
  101.     TabOrder = 3  
  102.     OnClick = btnPostDataClick  
  103.   end  
  104.   object sconn: TSocketConnection  
  105.     ServerGUID = '{82AEC5B8-E53F-4725-A24D-456FD570E355}'  
  106.     ServerName = 'Project1.TestService'  
  107.     Host = '10.10.60.3'  
  108.     Left = 107  
  109.     Top = 143  
  110.   end  
  111.   object ds3: TDataSource  
  112.     DataSet = dsTemp  
  113.     Left = 255  
  114.     Top = 151  
  115.   end  
  116.   object dsTemp: TClientDataSet  
  117.     Aggregates = <>  
  118.     Params = <>  
  119.     RemoteServer = sconn  
  120.     AfterInsert = dsTempAfterInsert  
  121.     Left = 191  
  122.     Top = 147  
  123.   end  
  124.   object actlst1: TActionList  
  125.     Left = 289  
  126.     Top = 264  
  127.     object actCreate: TAction  
  128.       Caption = 'actCreate'  
  129.       OnExecute = actCreateExecute  
  130.     end  
  131.     object actModify: TAction  
  132.       Caption = 'actModify'  
  133.       OnExecute = actModifyExecute  
  134.     end  
  135.     object actSave: TAction  
  136.       Caption = 'actSave'  
  137.       OnExecute = actSaveExecute  
  138.     end  
  139.     object actCancel: TAction  
  140.       Caption = 'actCancel'  
  141.       OnExecute = actCancelExecute  
  142.     end  
  143.     object actDelete: TAction  
  144.       Caption = 'actDelete'  
  145.       OnExecute = actDeleteExecute  
  146.     end  
  147.   end  
  148. end  

新建记录修改和新增窗体 如下图

代码如下

[delphi]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. unit ufrmCreate;  
  2.   
  3. interface  
  4.   
  5.   
  6. uses  
  7.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  8.   Dialogs, StdCtrls,DBClient,DB;  
  9.   
  10.   
  11. type  
  12.   TfrmCreate = class(TForm)  
  13.     edtName: TEdit;  
  14.     edtSex: TEdit;  
  15.     edtAge: TEdit;  
  16.     edtMobile: TEdit;  
  17.     mmoRemark: TMemo;  
  18.     lbl1: TLabel;  
  19.     lbl2: TLabel;  
  20.     lbl3: TLabel;  
  21.     lbl4: TLabel;  
  22.     lbl5: TLabel;  
  23.     btnSave: TButton;  
  24.     btnCancel: TButton;  
  25.     procedure FormCreate(Sender: TObject);  
  26.     procedure FormDestroy(Sender: TObject);  
  27.     procedure FormShow(Sender: TObject);  
  28.     procedure btnSaveClick(Sender: TObject);  
  29.   private  
  30.     FIsCreate: Boolean;  
  31.     FcdsDep: TClientDataSet;  
  32.     procedure SetIsCreate(const Value: Boolean);  
  33.     procedure init;  
  34.     { Private declarations }  
  35.   public  
  36.     property IsCreate:Boolean  read FIsCreate write SetIsCreate;  
  37.     property cdsDep:TClientDataSet  read FcdsDep write  FcdsDep;  
  38.   end;  
  39.   
  40.   
  41. var  
  42.   frmCreate: TfrmCreate;  
  43.   
  44.   
  45. implementation  
  46.     uses ufrmMain;  
  47. {$R *.dfm}  
  48.   
  49.   
  50. { TfrmCreate }  
  51.   
  52.   
  53. procedure TfrmCreate.SetIsCreate(const Value: Boolean);  
  54. begin  
  55.   FIsCreate := Value;  
  56.   if IsCreate then  
  57.     Caption:='Create'  
  58.   else  
  59.     Caption:='Modify';  
  60. end;  
  61.   
  62.   
  63. procedure TfrmCreate.FormCreate(Sender: TObject);  
  64. begin  
  65.   cdsDep:=TClientDataSet.Create(Self);  
  66. end;  
  67.   
  68.   
  69. procedure TfrmCreate.FormDestroy(Sender: TObject);  
  70. begin  
  71.   cdsDep.Free;  
  72. end;  
  73.   
  74.   
  75. procedure TfrmCreate.FormShow(Sender: TObject);  
  76. begin     
  77.   if IsCreate then  
  78.   begin  
  79.     frmMain.dsTemp.Insert;  
  80.   end else  
  81.   begin  
  82.     init;  
  83.     frmMain.dsTemp.Edit;  
  84.   end;  
  85. end;  
  86.   
  87.   
  88. procedure TfrmCreate.btnSaveClick(Sender: TObject);  
  89. begin  
  90.   if edtName.Text=''  then  
  91.   begin  
  92.     ShowMessage('姓名不能为空');  
  93.     Exit;  
  94.   end;  
  95.   if edtMobile.Text='' then  
  96.   begin  
  97.      ShowMessage('电话号码不能为空');  
  98.      exit;  
  99.   end;  
  100.   if frmMain.dsTemp.State in [dsEdit,dsInsert] then  
  101.   begin  
  102.     frmMain.dsTemp.fieldbyName('FName').AsString:=edtName.Text;  
  103.     frmMain.dsTemp.fieldbyName('FSex').AsString:=edtSex.Text;  
  104.     frmMain.dsTemp.fieldbyName('FAge').AsString:=edtAge.Text;  
  105.     frmMain.dsTemp.fieldbyName('FMobile').AsString:=edtMobile.Text;  
  106.     frmMain.dsTemp.fieldbyName('FRemark').AsString:=mmoRemark.Text;  
  107.     ModalResult:=mrOk;  
  108.   end else  
  109.     ModalResult:=mrCancel;  
  110. end;  
  111.   
  112.   
  113. procedure TfrmCreate.init;  
  114. begin  
  115.   edtName.Text:=frmMain.dsTemp.fieldbyName('FName').AsString;  
  116.   edtSex.Text:=frmMain.dsTemp.fieldbyName('FSex').AsString;  
  117.   edtAge.Text:=frmMain.dsTemp.fieldbyName('FAge').AsString;  
  118.   edtMobile.Text:=frmMain.dsTemp.fieldbyName('FMobile').AsString;  
  119.   mmoRemark.Text:=frmMain.dsTemp.fieldbyName('FRemark').AsString;  
  120. end;  
  121.   
  122.   
  123. end.  

运行客户端程序 进行测试如下


点击加载数据 显示数据

最后只有提交到服务器 才能真正的保存数据到数据库
此 基本结束 如有问题 请留言

项目源码下载 —— http://download.csdn.net/detail/gykthh/8077801

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值