新建一个application
如图 添加以下控件
先启动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