Delphi 三层框架开发客户端开发
2014-10-24 15:04
435 查看
新建一个application
如图 添加以下控件
先启动scktsrvr.exe 此 在dephi程序的bin目录下 ) 然后 启动服务端
再进行属性设置
代码如下
dfm代码
新建记录修改和新增窗体 如下图
代码如下
运行客户端程序 进行测试如下
点击加载数据 显示数据
最后只有提交到服务器
才能真正的保存数据到数据库
此 基本结束 如有问题 请留言
项目源码下载 —— http://download.csdn.net/detail/gykthh/8077801
如图 添加以下控件
先启动scktsrvr.exe 此 在dephi程序的bin目录下 ) 然后 启动服务端
再进行属性设置
代码如下
<pre name="code" class="delphi">unit ufrmMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBClient, MConnect, SConnect, Grids, DBGrids, ExtCtrls, ActnList,ufrmCreate; type TfrmMain = class(TForm) sconn: TSocketConnection; btnInit: TButton; dbgrdDep: TDBGrid; ds3: TDataSource; dsTemp: TClientDataSet; pnl1: TPanel; btnNew: TButton; btnModify: TButton; btnSave: TButton; btnCancel: TButton; btn2: TButton; actlst1: TActionList; actCreate: TAction; actModify: TAction; actSave: TAction; actCancel: TAction; actDelete: TAction; btnPostData: TButton; procedure btnInitClick(Sender: TObject); procedure actSaveExecute(Sender: TObject); procedure btnSaveClick(Sender: TObject); procedure btnCancelClick(Sender: TObject); procedure actCancelExecute(Sender: TObject); procedure btn2Click(Sender: TObject); procedure actDeleteExecute(Sender: TObject); procedure btnModifyClick(Sender: TObject); procedure btnNewClick(Sender: TObject); procedure actCreateExecute(Sender: TObject); procedure actModifyExecute(Sender: TObject); procedure btnPostDataClick(Sender: TObject); procedure dsTempAfterInsert(DataSet: TDataSet); private procedure EnableControl(Flag:Boolean); public { Public declarations } end; var frmMain: TfrmMain; implementation {$R *.dfm} //添加函数 function GetGUID: string; //add lgm var LTep: TGUID; begin CreateGUID(LTep); Result := GUIDToString(LTep); end; procedure TfrmMain.btnInitClick(Sender: TObject); var a:OleVariant; begin sconn.Open; sconn.AppServer.GetData('tb_Department','1=1',a); dsTemp.Data:=a; sconn.Close; end; procedure TfrmMain.actSaveExecute(Sender: TObject); begin if dsTemp.State in [dsEdit,dsInsert] then begin dsTemp.Post; EnableControl(False); end; end; procedure TfrmMain.btnSaveClick(Sender: TObject); begin actSave.Execute; end; procedure TfrmMain.btnCancelClick(Sender: TObject); begin actCancel.Execute; end; procedure TfrmMain.actCancelExecute(Sender: TObject); begin if dsTemp.State in [dsEdit,dsInsert] then begin dsTemp.Cancel; EnableControl(False); end; end; procedure TfrmMain.btn2Click(Sender: TObject); begin actDelete.Execute; end; procedure TfrmMain.actDeleteExecute(Sender: TObject); begin if dsTemp.eof and dsTemp.bof then exit; if MessageDlg('是否删除?',mtWarning,[mbYes,mbNo],-1)=mrYes then begin dsTemp.Delete; end; end; procedure TfrmMain.btnModifyClick(Sender: TObject); begin if dsTemp.Active then if dsTemp.eof and dsTemp.bof then exit; actModify.Execute; end; procedure TfrmMain.btnNewClick(Sender: TObject); begin if dsTemp.Active then actCreate.Execute; end; procedure TfrmMain.actCreateExecute(Sender: TObject); begin frmCreate:=TfrmCreate.Create(self); try frmCreate.IsCreate:=True; if frmCreate.ShowModal=mrOK then begin EnableControl(true); end; finally frmCreate.Free; end; end; procedure TfrmMain.actModifyExecute(Sender: TObject); begin frmCreate:=TfrmCreate.Create(self); try frmCreate.IsCreate:=False; if frmCreate.ShowModal=mrOK then begin EnableControl(true); end; finally frmCreate.Free; end; end; procedure TfrmMain.EnableControl(Flag: Boolean); begin btnCancel.Enabled:=Flag; btnSave.Enabled:=Flag; btnNew.Enabled:=not Flag; btnModify.Enabled:=not Flag; end; procedure TfrmMain.btnPostDataClick(Sender: TObject); var b:OleVariant; begin //先进行保存 actSave.Execute; sconn.Open; sconn.AppServer.PostData('tb_Department',dstemp.Data,b); sconn.AppServer.GetData('tb_Department','1=1',b); dsTemp.Data:=b; sconn.Close; end; procedure TfrmMain.dsTempAfterInsert(DataSet: TDataSet); begin dsTemp.FieldByName('FKey').AsString:=GetGUID; end; end.C
dfm代码
object frmMain: TfrmMain Left = 724 Top = 400 Width = 588 Height = 369 Caption = 'frmMain' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object btnInit: TButton Left = 88 Top = 285 Width = 75 Height = 25 Caption = #21152#36733#25968#25454 TabOrder = 0 OnClick = btnInitClick end object dbgrdDep: TDBGrid Left = 0 Top = 41 Width = 572 Height = 204 Align = alTop DataSource = ds3 Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgConfirmDelete, dgCancelOnExit] TabOrder = 1 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'MS Sans Serif' TitleFont.Style = [] end object pnl1: TPanel Left = 0 Top = 0 Width = 572 Height = 41 Align = alTop TabOrder = 2 object btnNew: TButton Left = 15 Top = 7 Width = 75 Height = 25 Caption = #26032#24314 TabOrder = 0 OnClick = btnNewClick end object btnModify: TButton Left = 107 Top = 7 Width = 75 Height = 25 Caption = #20462#25913 TabOrder = 1 OnClick = btnModifyClick end object btnSave: TButton Left = 198 Top = 7 Width = 75 Height = 25 Caption = #20445#23384 Enabled = False TabOrder = 2 OnClick = btnSaveClick end object btnCancel: TButton Left = 290 Top = 7 Width = 75 Height = 25 Caption = #21462#28040 Enabled = False TabOrder = 3 OnClick = btnCancelClick end object btn2: TButton Left = 411 Top = 7 Width = 75 Height = 25 Caption = #21024#38500 TabOrder = 4 OnClick = btn2Click end end object btnPostData: TButton Left = 225 Top = 284 Width = 144 Height = 25 Caption = #25552#20132#25968#25454#21040#26381#21153#22120 TabOrder = 3 OnClick = btnPostDataClick end object sconn: TSocketConnection ServerGUID = '{82AEC5B8-E53F-4725-A24D-456FD570E355}' ServerName = 'Project1.TestService' Host = '10.10.60.3' Left = 107 Top = 143 end object ds3: TDataSource DataSet = dsTemp Left = 255 Top = 151 end object dsTemp: TClientDataSet Aggregates = <> Params = <> RemoteServer = sconn AfterInsert = dsTempAfterInsert Left = 191 Top = 147 end object actlst1: TActionList Left = 289 Top = 264 object actCreate: TAction Caption = 'actCreate' OnExecute = actCreateExecute end object actModify: TAction Caption = 'actModify' OnExecute = actModifyExecute end object actSave: TAction Caption = 'actSave' OnExecute = actSaveExecute end object actCancel: TAction Caption = 'actCancel' OnExecute = actCancelExecute end object actDelete: TAction Caption = 'actDelete' OnExecute = actDeleteExecute end end end
新建记录修改和新增窗体 如下图
代码如下
unit ufrmCreate; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,DBClient,DB; type TfrmCreate = class(TForm) edtName: TEdit; edtSex: TEdit; edtAge: TEdit; edtMobile: TEdit; mmoRemark: TMemo; lbl1: TLabel; lbl2: TLabel; lbl3: TLabel; lbl4: TLabel; lbl5: TLabel; btnSave: TButton; btnCancel: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure btnSaveClick(Sender: TObject); private FIsCreate: Boolean; FcdsDep: TClientDataSet; procedure SetIsCreate(const Value: Boolean); procedure init; { Private declarations } public property IsCreate:Boolean read FIsCreate write SetIsCreate; property cdsDep:TClientDataSet read FcdsDep write FcdsDep; end; var frmCreate: TfrmCreate; implementation uses ufrmMain; {$R *.dfm} { TfrmCreate } procedure TfrmCreate.SetIsCreate(const Value: Boolean); begin FIsCreate := Value; if IsCreate then Caption:='Create' else Caption:='Modify'; end; procedure TfrmCreate.FormCreate(Sender: TObject); begin cdsDep:=TClientDataSet.Create(Self); end; procedure TfrmCreate.FormDestroy(Sender: TObject); begin cdsDep.Free; end; procedure TfrmCreate.FormShow(Sender: TObject); begin if IsCreate then begin frmMain.dsTemp.Insert; end else begin init; frmMain.dsTemp.Edit; end; end; procedure TfrmCreate.btnSaveClick(Sender: TObject); begin if edtName.Text='' then begin ShowMessage('姓名不能为空'); Exit; end; if edtMobile.Text='' then begin ShowMessage('电话号码不能为空'); exit; end; if frmMain.dsTemp.State in [dsEdit,dsInsert] then begin frmMain.dsTemp.fieldbyName('FName').AsString:=edtName.Text; frmMain.dsTemp.fieldbyName('FSex').AsString:=edtSex.Text; frmMain.dsTemp.fieldbyName('FAge').AsString:=edtAge.Text; frmMain.dsTemp.fieldbyName('FMobile').AsString:=edtMobile.Text; frmMain.dsTemp.fieldbyName('FRemark').AsString:=mmoRemark.Text; ModalResult:=mrOk; end else ModalResult:=mrCancel; end; procedure TfrmCreate.init; begin edtName.Text:=frmMain.dsTemp.fieldbyName('FName').AsString; edtSex.Text:=frmMain.dsTemp.fieldbyName('FSex').AsString; edtAge.Text:=frmMain.dsTemp.fieldbyName('FAge').AsString; edtMobile.Text:=frmMain.dsTemp.fieldbyName('FMobile').AsString; mmoRemark.Text:=frmMain.dsTemp.fieldbyName('FRemark').AsString; end; end.
运行客户端程序 进行测试如下
点击加载数据 显示数据
最后只有提交到服务器
才能真正的保存数据到数据库
此 基本结束 如有问题 请留言
项目源码下载 —— http://download.csdn.net/detail/gykthh/8077801
相关文章推荐
- Delphi 三层框架开发 服务端开发
- Delphi 三层框架开发 服务端开发
- 用动软.NET代码生成器Codematic配合Nant开发W eb三层框架
- FastSpring.NET V2.0 Preview 1 发布[Spring.NET & NHibernate的三层的开发框架]
- Delphi三层数据库开发应用
- 利用飞信虚拟框架开发绿色.NET程序,让winform程序在客户端直接运行
- delphi 三层开发经验汇总
- 物流信息系统开发手记-Delphi的三层开发
- delphi 三层开发经验汇总[转]
- 简单的Delphi三层程序开发
- RooyeeMessenger由Delphi开发的XMPP即时通讯客户端(免费开源)
- 简单的Delphi三层程序开发
- 三层开发框架
- Java富客户端企级快速开发框架SOYFramework介绍(二)
- Java富客户端企级快速开发框架SOYFramework介绍(一)
- Delphi三层开发手册——三层开发基本概念介绍
- 简单的Delphi三层程序开发(转载备份)
- 简单的Delphi三层程序开发[转]
- 《开源合辑-(软件开发->框架)之(Delphi/Kylix)》 (2)
- 富客户端开发框架:ExtJS