⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base_entry_body.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -