新建一个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