📄 basedefine.pas
字号:
unit BaseDefine;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BaseInfoBase, wwDialog, wwidlg, DB, ADODB, ActnList, ComCtrls,
ToolWin, Grids, DBGridEh;
type
TfrmBaseDefine = class(TfrmBaseInfoBase)
DBGridEh1: TDBGridEh;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure QBaseInfoNewRecord(DataSet: TDataSet);
procedure dsBaseInfoStateChange(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure dsBaseInfoDataChange(Sender: TObject; Field: TField);
procedure acDeleteExecute(Sender: TObject);
procedure acSaveExecute(Sender: TObject);
procedure acCancelExecute(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure acModifyExecute(Sender: TObject);
procedure QBaseInfoAfterInsert(DataSet: TDataSet);
procedure acRefreshExecute(Sender: TObject);
procedure QBaseInfoAfterDelete(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
CanEdit,CanDelete,CanSave,CanCancel:Boolean;
protected
in_tablename:string;
in_adoquery:TADOQuery;
in_connection:TADOConnection;
in_field:TStringList;
in_sql:string;
in_datagrid:TDBGridEh;
function CheckSave: Boolean;
end;
var
frmBaseDefine: TfrmBaseDefine;
implementation
{$R *.dfm}
uses Global,DataModule;
procedure TfrmBaseDefine.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
//frmRsda:=nil;
//ShowMessage(Self.ClassName+'pasRsda');
FreeAndNil(in_field);
Action:=caFree;
end;
procedure TfrmBaseDefine.FormCreate(Sender: TObject);
begin
//inherited;
{CanEdit:=False;
CanDelete:=False;
CanSave:=False;
CanCancel:=False;}
GetPermiss;
if not QBaseInfo.Active then
QBaseInfo.Open;
if self.QBaseInfo.RecordCount=0 then
begin
CanEdit:=False;
CanDelete:=False;
end
else
begin
CanEdit:=True;
CanDelete:=True;
end;
dsBaseInfoStateChange(nil); {调用状态变化过程}
in_field:=TStringList.Create;
end;
procedure TfrmBaseDefine.QBaseInfoNewRecord(DataSet: TDataSet);
begin
//inherited;
CanSave:=True;
CanCancel:=True;
self.QBaseInfo.Post;
self.QBaseInfo.Edit;
end;
procedure TfrmBaseDefine.dsBaseInfoStateChange(Sender: TObject);
begin
//inherited;
//ShowMessage('state');
if (self.QBaseInfo.State in [dsEdit]) and (self.QBaseInfo.RecordCount<>0) then
begin
CanEdit:=False;
CanDelete:=True;
end
else if (self.QBaseInfo.State in [dsBrowse]) and (self.QBaseInfo.RecordCount<>0) then
begin
CanEdit:=True;
CanDelete:=True;
end
else if self.QBaseInfo.RecordCount=0 then
begin
CanEdit:=False;
CanDelete:=False;
end;
self.tbtModify.Enabled:=CanEdit;
self.tbtDelete.Enabled:=CanDelete;
Self.tbtSave.Enabled:=CanSave;
self.tbtCancel.Enabled:=CanCancel;
if (self.QBaseInfo.RecNo=1) OR (self.QBaseInfo.RecordCount=0) then
self.tbtFirst.Enabled:=False
else
self.tbtFirst.Enabled:=True;
if (self.QBaseInfo.RecNo=self.QBaseInfo.RecordCount) OR (self.QBaseInfo.RecordCount=0) then
self.tbtLast.Enabled:=False
else
self.tbtLast.Enabled:=True;
self.tbtPrior.Enabled:=self.tbtFirst.Enabled;
self.tbtNext.Enabled:=self.tbtLast.Enabled;
//ShowMessage(IntToStr(self.QBaseInfo.RecordCount));
end;
procedure TfrmBaseDefine.ToolButton1Click(Sender: TObject);
begin
inherited;
//self.QBaseInfo.DeleteRecords(arAll);
self.QBaseInfo.Filtered:=False;
self.QBaseInfo.Filter:='bh=''''';
Self.QBaseInfo.Filtered:=True;
end;
procedure TfrmBaseDefine.dsBaseInfoDataChange(Sender: TObject; Field: TField);
begin
//inherited;
//ShowMessage('datachange');
self.dsBaseInfoStateChange(nil);
end;
procedure TfrmBaseDefine.acDeleteExecute(Sender: TObject);
begin
//inherited;
if self.QBaseInfo.RecordCount=0 then
begin
ShowMessage('记录为空');
Exit;
end
else
begin
case MessageDlg('是否删除当前的记录?', mtWarning, [mbYes, mbNo], 0) of
mrYes:
begin
CanSave:=True;
CanCancel:=True;
QBaseInfo.Delete;
end;
mrNo:
begin
end;
end;
end;
end;
procedure TfrmBaseDefine.acSaveExecute(Sender: TObject);
begin
//inherited;
case MessageDlg('是否保存记录?', mtWarning, [mbYes, mbNo], 0) of
mrYes:
begin
try
CanSave:=False;
CanCancel:=False;
QBaseInfo.UpdateBatch();
except
ShowMessage('保存出错!');
CanSave:=True;
CanCancel:=True;
QBaseInfo.Edit;
//self.DBGridEh1.SetFocus;
self.tbtModify.Enabled:=False;
end;
end;
mrNo:
begin
end;
end;
end;
procedure TfrmBaseDefine.acCancelExecute(Sender: TObject);
begin
//inherited;
case MessageDlg('是否取消修改?', mtWarning, [mbYes, mbNo], 0) of
mrYes:
begin
CanSave:=False;
CanCancel:=False;
QBaseInfo.CancelBatch();
end;
mrNo:
begin
end;
end;
end;
function TfrmBaseDefine.CheckSave:Boolean;
begin
//ShowMessage('close');
if CanSave then
begin
try
case MessageDlg('是否保存当前的修改?', mtWarning, [mbYes, mbNo, mbCancel], 0) of
mrYes:
begin
QBaseInfo.UpdateBatch();
Result := QBaseInfo.State = dsBrowse; //状态是否为Browse
end;
mrNo:
begin
QBaseInfo.CancelBatch();
Result := QBaseInfo.State = dsBrowse; //状态是否为Browse
end;
mrCancel:
Result := False;
end;
except
begin
ShowMessage('保存出错!');
self.QBaseInfo.Edit;
self.tbtModify.Enabled:=False;
Result:=False;
end;
end;
end
else
Result:=True;
end;
procedure TfrmBaseDefine.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//inherited;
//ShowMessage('1');
CanClose:=CheckSave;
end;
procedure TfrmBaseDefine.acModifyExecute(Sender: TObject);
begin
CanSave:=True;
CanCancel:=True;
//CanEdit:=False;
inherited;
//self.tbtModify.Enabled:=False;
//CanEdit:=False;
//self.dsBaseInfoStateChange(nil);
end;
procedure TfrmBaseDefine.QBaseInfoAfterInsert(DataSet: TDataSet);
begin
inherited;
self.tbtModify.Enabled:=False;
end;
procedure TfrmBaseDefine.acRefreshExecute(Sender: TObject);
var
i:integer;
begin
//inherited;
//需传进in_sql字段,查询字符串
CanSave:=False;
CanCancel:=False;
Self.QBaseInfo.Filtered:=False;
self.QBaseInfo.Filter:='';
for i:=0 to Self.DBGridEh1.Columns.Count-1 do
begin
self.DBGridEh1.Columns[i].Visible:=True;
end;
try
self.QBaseInfo.DisableControls;
self.QBaseInfo.Close;
Self.QBaseInfo.SQL.Clear;
self.QBaseInfo.SQL.Add(in_sql);
self.QBaseInfo.Prepared:=True;
self.QBaseInfo.Open;
self.QBaseInfo.EnableControls;
except
ShowMessage('刷新出错!');
self.DBGridEh1.DataSource:=nil;
Exit;
end;
ShowMessage('刷新成功!');
self.DBGridEh1.DataSource:=self.dsBaseInfo;
end;
procedure TfrmBaseDefine.QBaseInfoAfterDelete(DataSet: TDataSet);
begin
if dmClient.adocnequip_manage.InTransaction then
dmClient.adocnequip_manage.CommitTrans;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -