📄 ut_data.pas
字号:
unit UT_DATA;
interface
uses
Windows, Classes, Controls, Forms,
Buttons, ExtCtrls, StdCtrls, Grids, DBGrids,
DB, DBTables;
type
TFM_DATA = class(TForm)
pEdit: TPanel;
pDataParent: TPanel;
pDCParent: TPanel;
pDC: TPanel;
pMod: TPanel;
bAdd: TBitBtn;
bModify: TBitBtn;
bDelete: TBitBtn;
pCommit: TPanel;
bCommit: TBitBtn;
bCancle: TBitBtn;
pData: TPanel;
DBGrid1: TDBGrid;
procedure bAddClick(Sender: TObject);
procedure bModifyClick(Sender: TObject);
procedure bDeleteClick(Sender: TObject);
procedure bCommitClick(Sender: TObject);
procedure bCancleClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
thisDataSet: TDataSet;
procedure SetMode(Mode: Word);
published
end;
var
FM_DATA: TFM_DATA;
implementation
{$R *.dfm}
//------------------------------------------------------------------------------
//自定义过程部分
//------------------------------------------------------------------------------
procedure TFM_DATA.SetMode(Mode: Word);
begin
case Mode of
0://浏览
pMod.BringToFront;
1://编辑
pCommit.BringToFront;
end;
end;
//------------------------------------------------------------------------------
//事件部分
//------------------------------------------------------------------------------
procedure TFM_DATA.bAddClick(Sender: TObject);
begin
thisDataSet.Append;
SetMode(1);
end;
//------------------------------------------------------------------------------
procedure TFM_DATA.bModifyClick(Sender: TObject);
begin
thisDataSet.Edit;
SetMode(1);
end;
//------------------------------------------------------------------------------
procedure TFM_DATA.bDeleteClick(Sender: TObject);
begin
thisDataSet.Delete;
end;
//------------------------------------------------------------------------------
procedure TFM_DATA.bCommitClick(Sender: TObject);
var
DataSetType: Word;
begin
if thisDataSet is TTable then DataSetType := 1
else if thisDataSet is TQuery then DataSetType := 2
else DataSetType := 0;
if DataSetType <> 0 then
with TDBDataSet(thisDataSet).Database do
try
if not InTransaction then StartTransaction;
thisDataSet.Post;
Commit;
with thisDataSet do
case DataSetType of
1: Refresh;
2:
begin
Close;
Open;
end;
end;
except
Rollback;
end;
end;
//------------------------------------------------------------------------------
procedure TFM_DATA.bCancleClick(Sender: TObject);
begin
thisDataSet.Cancel;
SetMode(0);
end;
//------------------------------------------------------------------------------
procedure TFM_DATA.FormCreate(Sender: TObject);
begin
try
thisDataSet := DBGrid1.DataSource.DataSet;
except
MessageBox(0,'数据源设置不正确。','提示',
MB_ICONINFORMATION+MB_OK);
end;
end;
//------------------------------------------------------------------------------
procedure TFM_DATA.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if thisDataSet.State in [dsEdit,dsInsert] then
begin
case MessageBox(0,'保存变动过的数据吗?','请选择',
MB_ICONQUESTION+MB_YESNOCANCEL) of
IDYES: bCommit.Click;
IDNO: bCancle.Click;
IDCANCEL: CanClose := False;
end;
end;
end;
//------------------------------------------------------------------------------
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -