📄 base_entry_body.pas
字号:
procedure TFrm_Base_Entry_Body.FormClose(Sender: TObject;
var Action: TCloseAction);
var FilterStr : String;
begin
inherited;
if(Act_Save.Enabled)then
begin
if(DispInfo('数据有改动,需要保存吗?',2)='y')then
begin
try
FilterStr := AdoQry_Body.Filter;
AdoQry_Body.Filtered := False;
SaveData;
if(AdoQry_Head.State in [dsEdit,dsInsert])then
AdoQry_Head.Post;
finally
AdoQry_Body.filter := FilterStr;
AdoQry_Body.Filtered := True;
end;
Self.ModalResult:=mrOk;
end
else
begin
if(AdoQry_Head.State in [dsInsert,dsEdit])then
AdoQry_Head.Cancel;
end;
end
else
begin
if(AdoQry_Head.State in [dsInsert])then
AdoQry_Head.Cancel
else if(AdoQry_Head.State in [dsEdit])then
AdoQry_Head.Post;
Self.ModalResult:=mrOk;
end;
end;
procedure TFrm_Base_Entry_Body.Act_InsertLineExecute(Sender: TObject);
var
i:integer;
begin//
inherited;
ActiveControl:=DBGridEh;
AllCheck;
SaveHeadData;
if(Frm_Entry_Detail<>nil)then
begin
Frm_Entry_Detail.SetUserParam(Param1,Param2,Param3,Param4,Param5,Param6);
Frm_Entry_Detail.SetSysParam(UserCode,ModuleCode,MenuId,LoginDate);
Frm_Entry_Detail.Modified:=Act_Save.Enabled;
Frm_Entry_Detail.InitForm(DBConnect,'Add',AdoQry_Head,AdoQry_Body);
Frm_Entry_Detail.ShowModal;
Act_Save.Enabled:=Frm_Entry_Detail.Modified;
end;
if not AdoQry_Body.IsEmpty then
for i:=0 to Pnl_Head.ControlCount-1 do
begin
if(not(Pnl_Head.Controls[i] is TLabel))and
(Pos(Pnl_Head.Controls[i].Name+',',EnableControls)=0)then
Pnl_Head.Controls[i].Enabled:=False
else
Pnl_Head.Controls[i].Enabled:=True;
end;
end;
procedure TFrm_Base_Entry_Body.Act_DeleteLineExecute(Sender: TObject);
var
i:Integer;
begin//
inherited;
if (not AdoQry_Body.IsEmpty)and
(DispInfo(' 真的删除当前记录吗? ',2)='y') then
begin
AdoQry_Body.Delete;
Act_Save.Enabled:=True;
if (AdoQry_Body.IsEmpty)and(Status<>'PArtEdit') then
begin
for i:=0 to Pnl_Head.ControlCount-1 do
begin
if(not(Pnl_Head.Controls[i] is TLabel))then
Pnl_Head.Controls[i].Enabled:=True;
end;
end;
end;
end;
procedure TFrm_Base_Entry_Body.SaveData;
begin
inherited;
ActiveControl:=DBGridEh;
AllCheck;
SaveHeadData;
end;
procedure TFrm_Base_Entry_Body.AllCheck;
var
i:Integer;
begin
Changed:=False;
ExecOnExit(ActiveControl);
for i:=0 to Pnl_Head.ControlCount-1 do
begin//按OK按钮时进行全部检查
if(not Pnl_Head.Controls[i].Enabled)then
continue;
ExecOnExit(Pnl_Head.Controls[i]);
end;
end;
procedure TFrm_Base_Entry_Body.Act_SaveExecute(Sender: TObject);
var FilterStr : String;
begin
inherited;
try
FilterStr := AdoQry_Body.Filter;
AdoQry_Body.Filtered := False;
SaveData;
if(AdoQry_Head.State in [dsEdit,dsInsert])then
AdoQry_Head.Post;
if(Status='Add')then
begin
Act_New.Enabled:=True;
InitForm(DBConnect,'ReadOnly',AdoQry_Head);
FormInitControls;
end
else
begin
//AdoQry_Head.Edit;
InitForm(DBConnect,'ReadOnly',AdoQry_Head);
FormInitControls;
end;
finally
AdoQry_Body.filter := FilterStr;
AdoQry_Body.Filtered := True;
end;
end;
procedure TFrm_Base_Entry_Body.DBGridEhDblClick(Sender: TObject);
begin
inherited;
if Act_Modify.Enabled then
Act_Modify.Execute;
end;
procedure TFrm_Base_Entry_Body.Act_NewExecute(Sender: TObject);
begin
inherited;
InitForm(DBConnect,'Add',AdoQry_Head);
FormInitControls;
Act_New.Enabled:=False;
end;
procedure TFrm_Base_Entry_Body.FormActivate(Sender: TObject);
begin
inherited;
ShowFlag:=False;
try
FormInitControls;
finally
ShowFlag:=True;
end;
AdoQry_Body.Filter := '';
end;
procedure TFrm_Base_Entry_Body.FormInitControls;
begin
InitControls;
Act_Save.Enabled:=False;
if AdoQry_Head<>nil then
begin
if(Status='Add')then
AdoQry_Head.Append
else if Status<>'ReadOnly' then
AdoQry_Head.Edit;
end;
end;
procedure TFrm_Base_Entry_Body.Act_PreviewExecute(Sender: TObject);
begin
inherited;
SetReport;
ExtPrintReport.preview;
end;
procedure TFrm_Base_Entry_Body.Act_PrintExecute(Sender: TObject);
begin
inherited;
SetReport;
ExtPrintReport.print(self);
end;
procedure TFrm_Base_Entry_Body.SetReport;
var
i,j:integer;
begin
if DBGridEh.DataSource.DataSet.Active=False then
Abort;
ExtPrintReport.DataSet :=nil;
ExtPrintReport.Headers.clear;
i:=0;
with ExtPrintReport do
begin
for j:=0 to DBGridEH.Columns.Count-1 do
if DBGridEH.Columns[j].Visible then
begin
Headers.Add;
Headers.Items[i].Caption :=DBGridEH.Columns[j].Title.Caption;
Headers.Items[i].FieldName :=DBGridEH.Columns[j].FieldName;
Headers.Items[i].DisplayWidth:=(DBGridEH.Columns[j].Width div (DBGridEH.Canvas.TextWidth(' ')));
Headers.Items[i].Alignment :=DBGridEH.Columns[j].Alignment;
if((DBGridEh.Columns[j].PickList.Count>0)and
(DBGridEh.Columns[j].KeyList.Count>0))
or(DBGridEh.Columns[j].Field.DataType in [ftFloat])then
begin
Headers.Items[i].style:=dstransform;
Headers.Items[i].TransformFunction:=GetTransValue;
end
else
SetColumnsStyle(i,DBGridEH.Columns[j].FieldName);
inc(i);
end;
DataSet:=DBGridEh.DataSource.DataSet;
InitReport;
end;
end;
procedure TFrm_Base_Entry_Body.InitReport;
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select SysParamValueC'+
' From SysParam'+
' Where SysParamCode=''Name0''';
AdoQry_Tmp.Open;
ExtPrintReport.Title1:=AdoQry_Tmp.fieldbyname('SysParamValueC').AsString;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select ReportName1,ISOCode1'+
' From ReportCtrl'+
' Where SysMenuId='+MenuId;
AdoQry_Tmp.Open;
ExtPrintReport.Title2:=AdoQry_Tmp.fieldbyname('ReportName1').AsString;
ExtPrintReport.SubTitle1:=AdoQry_Tmp.fieldbyname('ISOCode1').AsString;
end;
procedure TFrm_Base_Entry_Body.SetColumnsStyle(ItemIndex: Integer;
FieldName: String);
begin
end;
procedure TFrm_Base_Entry_Body.OnEnter(Sender: TObject);
begin
Changed:=False;
end;
procedure TFrm_Base_Entry_Body.Act_FilterExecute(Sender: TObject);
var
TableName:string;
begin//数据过滤处理过程
inherited;
TableName:= '#'+self.Name ;
if Frm_Sys_Condition=nil then
Frm_Sys_Condition:=TFrm_Sys_Condition.Create(Application);
Frm_Sys_Condition.SetUserParam(Param1,Param2,Param3,Param4,Param5,Param6);
Frm_Sys_Condition.SetSysParam(UserCode,ModuleCode,MenuId,LoginDate);
Frm_Sys_Condition.SetDBConnect(DBConnect);
if Frm_Sys_Condition is TFrm_Sys_Condition then
TFrm_Sys_Condition(Frm_Sys_Condition).SetSrcGrid(DBGridEh,TableName);
Frm_Sys_Condition.FatherForm:=Self;
if Frm_Sys_Condition.Showmodal=mrOk then
begin
// Condition:=Frm_Sys_Condition.Condition;
// Lbl_Condition.Caption:=Frm_Sys_Condition.ConditionHint;
AdoQry_Body.filter := stringReplace(Frm_Sys_Condition.Condition,'#tmptable.','',[rfReplaceAll]);
AdoQry_Body.Filtered := True;
end;
end;
procedure TFrm_Base_Entry_Body.Act_OrderExecute(Sender: TObject);
var
BookMArk:TBookMArk;
begin//排序字段设置处理过程
inherited;
if DBGridEh.DataSource.DataSet.Active=True then
begin
Frm_Sys_SortOrder.InitForm(DBGridEH,OrderByFields);
if(Frm_Sys_SortOrder.ShowModal=mrOk)then
begin
OrderByFields:=Frm_Sys_SortOrder.OrderFields;
BookMArk:=DBGridEh.DataSource.DataSet.GetBookmArk;
TAdoQuery(DBGridEh.DataSource.DataSet).Sort:=OrderByFields;
DBGridEh.DataSource.DataSet.GotoBookmArk(BookMArk);
DBGridEh.DataSource.DataSet.FreeBookMArk(BookMArk);
end;
end;
end;
procedure TFrm_Base_Entry_Body.Act_ExcelExecute(Sender: TObject);
begin
inherited;
DBGridEhToExcel(DBGridEh,Pnl_Head);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -