📄 untbasesingleedit.pas
字号:
unit untBaseSingleEdit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, untBaseDialog, StdCtrls, Buttons, ExtCtrls, jpeg, DB, ADODB,
untGlobalVar, DBCtrls, fcButton, fcImgBtn;
type
TfrmBaseSingleEdit = class(TfrmBaseDialog)
dsSingle: TDataSource;
procedure btnOKClick(Sender: TObject);
private
FDataSet: TADODataSet;
FOpMode: TOperatorMode;
procedure SetDataSet(const Value: TADODataSet);
procedure SetOpMode(const Value: TOperatorMode);
procedure SaveRecord;
{ Private declarations }
protected
function CheckDataValid: Boolean; virtual;
procedure DoBeforePost; virtual;
procedure AfterPost; virtual;
procedure InitComponents; virtual;
public
{ Public declarations }
ContinueAppend: Boolean;
property DataSet: TADODataSet read FDataSet write SetDataSet;
property OpMode: TOperatorMode read FOpMode write SetOpMode;
end;
var
frmBaseSingleEdit: TfrmBaseSingleEdit;
implementation
uses
untGlobalFun;
{$R *.dfm}
{ TfrmBaseSingleEdit }
procedure TfrmBaseSingleEdit.SetDataSet(const Value: TADODataSet);
begin
FDataSet := Value;
dsSingle.DataSet := Value;
end;
procedure TfrmBaseSingleEdit.SetOpMode(const Value: TOperatorMode);
var
i: Integer;
begin
FOpMode := Value;
for i := 0 to ComponentCount - 1 do
begin
if Components[i] is TDBEdit then
begin
TDBEdit(Components[i]).ReadOnly := (Value in [omDel,omBrowse]);
if TDBEdit(Components[i]).ReadOnly then
TDBEdit(Components[i]).Color := clActiveBorder
else
TDBEdit(Components[i]).Color := clWindow;
end;
if Components[i] is TDBMemo then
begin
if (Components[i].Tag = 0) then
begin
TDBMemo(Components[i]).ReadOnly := (Value in [omDel,omBrowse]);
if TDBMemo(Components[i]).ReadOnly then
TDBMemo(Components[i]).Color := clActiveBorder
else
TDBMemo(Components[i]).Color := clWindow;
end;
end;
if Components[i] is TDBListBox then
begin
TDBListBox(Components[i]).ReadOnly := (Value in [omDel,omBrowse]);
if TDBListBox(Components[i]).ReadOnly then
TDBListBox(Components[i]).Color := clActiveBorder
else
TDBListBox(Components[i]).Color := clWindow;
end;
if Components[i] is TDBComboBox then
TDBComboBox(Components[i]).Enabled := not (Value in [omDel,omBrowse]);
if Components[i] is TDBCheckBox then
TDBCheckBox(Components[i]).Enabled := not (Value in [omDel,omBrowse]);
if Components[i] is TDBRadioGroup then
TDBRadioGroup(Components[i]).Enabled := not (Value in [omDel,omBrowse]);
if Components[i] is TDBLookupListBox then
begin
TDBLookupListBox(Components[i]).ReadOnly := (Value in [omDel,omBrowse]);
if TDBLookupListBox(Components[i]).ReadOnly then
TDBLookupListBox(Components[i]).Color := clActiveBorder
else
TDBLookupListBox(Components[i]).Color := clWindow;
end;
if Components[i] is TDBLookupComboBox then
TDBLookupComboBox(Components[i]).Enabled := not (Value in [omDel,omBrowse]);
if Components[i] is TDBRichEdit then
begin
TDBRichEdit(Components[i]).ReadOnly := (Value in [omDel,omBrowse]);
if TDBRichEdit(Components[i]).ReadOnly then
TDBRichEdit(Components[i]).Color := clActiveBorder
else
TDBRichEdit(Components[i]).Color := clWindow;
end;
end;
InitComponents;
end;
procedure TfrmBaseSingleEdit.btnOKClick(Sender: TObject);
begin
inherited;
SaveRecord;
end;
procedure TfrmBaseSingleEdit.SaveRecord;
begin
if not CheckDataValid then exit;
try
DataSet.Connection.BeginTrans;
DoBeforePost;
if DataSet.State in [dsInsert, dsEdit] then DataSet.Post;
AfterPost;
DataSet.Connection.CommitTrans;
MsgOk('数据更新成功!');
if ContinueAppend and (OpMode = omNew) then begin
DataSet.Append;
InitComponents;
end else
ModalResult := mrOK;
except
DataSet.Connection.RollbackTrans;
MsgOK('保存数据出错!');
end;
end;
function TfrmBaseSingleEdit.CheckDataValid: Boolean;
begin
Result := true;
end;
procedure TfrmBaseSingleEdit.DoBeforePost;
begin
end;
procedure TfrmBaseSingleEdit.AfterPost;
begin
end;
procedure TfrmBaseSingleEdit.InitComponents;
begin
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -