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

📄 comjbzl.pas

📁 delphi作得信息业进销存源码.功能全面,运行稳定.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  bmJbzl: TBookMark;
  iniFile: TIniFile;
begin
  screen.Cursor := crHourGlass;
  blnPreview := false;
  aExit.ShortCut := 0;
  iniFile := TiniFile.Create(ExtractFilePath(Application.ExeName) + 'System\DefRpt.ini');
  ReportName := iniFile.ReadString(self.Name, 'Name', '');
  iniFile.Free;
  with dsJbzl do
  begin
    bmJbzl := GetBookmark;
    DisableControls;
    LoadPrintForm;
    if rpt1 <> nil then
    begin
      rpt1.Print;
      rpt1.Free;
      rpt1 := nil;
    end;
    try
      GotoBookmark(bmJbzl);
    finally
      FreeBookmark(bmJbzl);
      EnableControls;
    end;
  end;
  aExit.ShortCut := VK_ESCAPE;
  screen.Cursor := crDefault;
end;

//aPrinterSetup.Execute
procedure TfrmComJbzl.aPrinterSetupExecute(Sender: TObject);
begin
  frmMain.PrinterSetupDialog1.Execute;
end;

//aExit.Execute
procedure TfrmComJbzl.aExitExecute(Sender: TObject);
begin
  Close;
end;

//aNew.Execute
procedure TfrmComJbzl.aNewExecute(Sender: TObject);
begin
  if aNew.Hint = 'A' then
    LoadEditForm('A')
  else
    LoadEditForm('I');
end;

//aModify.Execute
procedure TfrmComJbzl.aModifyExecute(Sender: TObject);
begin
  if aModify.Enabled then
    LoadEditForm('M');
end;

//aDel.Execute
procedure TfrmComJbzl.aDelExecute(Sender: TObject);
begin
  if not dsJbzl.IsEmpty Then
    if HaveDetail(dsJbzl, strDetailTables, strDetailWheres) Then
      Application.MessageBox('已有明细资料,不能删除!', '资料删除', MB_OK + MB_ICONWARNING)
    else if Application.MessageBox('确定要删除此项资料吗?',
      '资料删除', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES then
    begin
      dsJbzl.Delete;
      dsJbzl.ApplyUpdates(0);
      SetButton;
    end;
end;

//aTotal.Execute
procedure TfrmComJbzl.aTotalExecute(Sender: TObject);
var
  evnTmp: TDataSetNotifyEvent;
  bmJbzl: TBookMark;
  strValues: string;
  i: integer;
begin
  if not (Screen.ActiveControl is TDBGrid) then exit;
  evnTmp := nil;
  if (strTotalFields = '') or (Copy(strTotalFields, Length(strTotalFields), 1) <> ';') then
    strTotalFields := strTotalFields + ';';
  strValues := '';
  with TClientDataSet(TDBGrid(Screen.ActiveControl).DataSource.DataSet) do
  begin
    screen.Cursor := crHourGlass;
    bmJbzl := GetBookmark;
    DisableControls;
    try
      evnTmp := OnCalcFields;
      //取消此事件再统计后,DBGrid中的计算字段就不能显示
      //OnCalcFields := nil;
      Last;
      strValues := '总记录数 : ' + IntToStr(RecordCount);
      for i := 0 to TDBGrid(Screen.ActiveControl).Columns.Count - 1 do
        with TDBGrid(Screen.ActiveControl).Columns[i] do
          if Visible and
            (TDBGrid(Screen.ActiveControl).DataSource.DataSet.FindField(FieldName) <> nil) and
            (Field.FieldKind = fkData) and
            (Width > 0) and
            (Field is TNumericField) and
            (UpperCase(strTotalFields) <> 'EMPTY') and
            ((strTotalFields = ';') or (Pos(UpperCase(FieldName) + ';', UpperCase(strTotalFields)) > 0)) then
          begin
            strValues := strValues + #13#10#13#10 + Title.Caption + ' : ';
            with Aggregates.Add do
            begin
              Expression := 'sum(' + FieldName + ')';
              Active := true;
              if Value = null then
                strValues := strValues +
                  FormatFloat(TNumericField(Field).DisplayFormat, 0)
              else
                strValues := strValues +
                  FormatFloat(TNumericField(Field).DisplayFormat, Value);
            end;
          end;
      Aggregates.Clear;
      GotoBookmark(bmJbzl);
    finally
      FreeBookmark(bmJbzl);
      EnableControls;
      OnCalcFields := evnTmp;
      screen.Cursor := crdefault;
    end;
  end;
  Application.MessageBox(Pchar(strValues), '资料统计', MB_OK);
end;

//aRefresh.Execute
procedure TfrmComJbzl.aRefreshExecute(Sender: TObject);
begin
	screen.Cursor := crHourGlass;
  try
    dsJbzl.Refresh;
  finally
  	screen.Cursor := crDefault;
  end;
end;

//aSearch.Execute
procedure TfrmComJbzl.aSearchExecute(Sender: TObject);
begin
  frmFilter.dbgFt := DBGrid1;
  if aSearch.Tag = 1 then
    frmFilter.dsFt := dsJbzl;
  frmFilter.ShowModal;
  If frmFilter.strFt <> '' Then
  begin
//    TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([dsJbzl.Name, frmFilter.strFt]));
    TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([Copy(dsJbzl.ProviderName, 2, Length(dsJbzl.ProviderName) - 1), frmFilter.strFt]));
    dsJbzl.Refresh;
    dsJbzl.First;
    SetButton;
  end;
end;

//aAll.Execute
procedure TfrmComJbzl.aAllExecute(Sender: TObject);
begin
  screen.Cursor := crHourGlass;
  labSearch.Caption := '查询项目: .';
//  TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([dsJbzl.Name,'']));
  TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([Copy(dsJbzl.ProviderName, 2, Length(dsJbzl.ProviderName) - 1), '']));
  dsJbzl.Refresh;
  SetButton;
  screen.Cursor := crDefault;
end;

//aSetColumn.Execute
procedure TfrmComJbzl.aSetColumnExecute(Sender: TObject);
begin
  if not (Screen.ActiveControl is TDBGrid) then exit;
  frmSetColumn.strFormName := self.Name;
  frmSetColumn.dbgSC := TDBGrid(Screen.ActiveControl);
  frmSetColumn.ShowModal;
end;

//aSetSort.Execute
procedure TfrmComJbzl.aSetSortExecute(Sender: TObject);
begin
  if not (Screen.ActiveControl is TDBGrid) then exit;
  frmSetSort.dbgSS := TDBGrid(Screen.ActiveControl);
  frmSetSort.ShowModal;
end;

{*****自定义过程*****}

//LoadEditForm
procedure TfrmComJbzl.LoadEditForm(strState:string);
begin
  frmEdit.strState := strState;
  frmEdit.ShowModal;
  frmEdit.Free;
  SetButton;
end;

//LoadPrintForm
procedure TfrmComJbzl.LoadPrintForm;
begin
  if frmSetPrint = nil then
    frmSetPrint := TfrmSetPrint.Create(application);
  with frmSetPrint do
  begin
    AForm := TfrmComJbzl(self);
    AGrid := TDBGrid(Screen.ActiveControl);
    ADataSet := TClientDataSet(TDBGrid(Screen.ActiveControl).DataSource.DataSet);
    blnPreview := self.blnPreview;
    ShowModal;
    self.ReportName := ReportName;
    Free;
  end;
  frmSetPrint := nil;
end;

//SetButton
procedure TfrmComJbzl.SetButton;
begin
  aPrint.Enabled := aPrint.Tag = 0;
  aPreview.Enabled := aPrint.Enabled;
  aNew.Enabled := aNew.Tag = 0;
  aModify.Enabled := (aModify.Tag = 0) and not (dsJbzl.IsEmpty);
  aDel.Enabled := (aDel.Tag = 0) and not (dsJbzl.IsEmpty);
  aTotal.Enabled := aTotal.Tag = 0;
end;

//OpenDataSet
procedure TfrmComJbzl.OpenDataSet;
var
  SaveCursor: TCursor;
begin
  SaveCursor := screen.Cursor;
  screen.Cursor := crHourGlass;
  dsJbzl.Close;
  dsJbzl.Open;
  strSql := dsJbzl.CommandText;
  SetButton;
  screen.Cursor := SaveCursor;
end;

//dsOnNewRecord
procedure TfrmComJbzl.dsOnNewRecord(DataSet: TDataSet);
begin
//
end;

//sDataChange
procedure TfrmComJbzl.sDataChange(Sender: TObject; Field: TField);
begin
//
end;

//SaveColumnQuery
procedure TfrmComJbzl.SaveColumnQuery;
var
  i: integer;
  strFileName: string;
  strOld, strNew: string;
begin
  if blnStopSetColumn then exit;
  for i := 0 to self.ComponentCount - 1 do
    if (self.Components[i] is TDBGrid) and (self.Components[i].Tag = 0) and
      (UpperCase(pstrUserCode) <> 'SYS') then
    begin
      strFileName := ExtractFilePath(Application.ExeName) + 'Column\' +
        FormatFloat('0000', pintUserID) +
        self.Name + TDBGrid(self.Components[i]).Name;
      TDBGrid(self.Components[i]).Columns.SaveToFile(strFileName + '.new');
      strOld := self.GetColumnInfo(strFileName + '.cur');
      strNew := self.GetColumnInfo(strFileName + '.new');
      if strOld <> strNew then
        if Application.MessageBox('是否保存对栏目布局的更改?',
          '栏目布局', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON1) = IDYES then
          TDBGrid(self.Components[i]).Columns.SaveToFile(strFileName + '.cur');
    end;
end;

//GetColumnInfo
function TfrmComJbzl.GetColumnInfo(FileName: string): string;
var
  strTmp, strTxt: string;
  f: TextFile;
begin
  if FileExists(FileName) then
  begin
    strTxt := '';
    AssignFile(f, FileName);
    Reset(f);
    try
      while not Eof(f) do
      begin
        Readln(f, strTmp);
        strTxt := strTxt + strTmp;
      end;
    finally
      CloseFile(f);
    end;
    result := strTxt;
  end
  else
    result := '';
end;

procedure TfrmComJbzl.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Shift = [ssCtrl]) and (Char(Key) in ['f', 'F']) then
    aSearch.Execute;
  if Screen.ActiveControl is TDBGrid then
  begin
    case Key of
      VK_DELETE :
        begin
          Key := 0;
          aDel.Execute;
        end;
      VK_LEFT :
        begin
          Key := 0;
          TDBGrid(Screen.ActiveControl).Perform(WM_HSCROLL, 0, 0);
        end;
      VK_RIGHT :
        begin
          Key := 0;
          TDBGrid(Screen.ActiveControl).Perform(WM_HSCROLL, 1, 0);
        end;
    end;
  end;
end;

procedure TfrmComJbzl.dsAfterScroll(DataSet: TDataSet);
begin
//
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -