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

📄 sjcustombrowsefrm.pas

📁 供水营销打印程序源码
💻 PAS
字号:
unit SJCustomBrowseFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, SJCustomFrm, PropStorageEh, Grids, DBGridEh, SJCustomProperty, DB,
  XPMenu, Menus, ActnList, DBGridEhImpExp, wwDialog, wwfltdlg, ImgList, Printers,
  RM_FormReport, RM_Desgn;

type
  TSJCustomBrowseForm = class(TSJCustomForm)
    grdBrowse: TDBGridEh;
    pmBrowse: TPopupMenu;
    XPMenu1: TXPMenu;
    ActList: TActionList;
    actBrowseSaveAs: TAction;
    actBrowseCut: TAction;
    actBrowseCopy: TAction;
    actBrowsePaste: TAction;
    actBrowseSelectAll: TAction;
    actBrowseNew: TAction;
    actBrowseEdit: TAction;
    actBrowseDelete: TAction;
    actBrowseFind: TAction;
    actBrowseRefresh: TAction;
    S1: TMenuItem;
    N1: TMenuItem;
    X1: TMenuItem;
    C1: TMenuItem;
    P1: TMenuItem;
    N2: TMenuItem;
    A1: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    E1: TMenuItem;
    D1: TMenuItem;
    N5: TMenuItem;
    F1: TMenuItem;
    R1: TMenuItem;
    Savedlg: TSaveDialog;
    FilterDialog: TwwFilterDialog;
    actBrowsePreview: TAction;
    actBrowsePrintSetup: TAction;
    actBrowsePrint: TAction;
    Images: TImageList;
    RMDesigner: TRMDesigner;
    FormReport: TRMFormReport;
    procedure ActListUpdate(Action: TBasicAction; var Handled: Boolean);
    procedure actBrowseSaveAsExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure actBrowsePreviewExecute(Sender: TObject);
    procedure actBrowsePrintSetupExecute(Sender: TObject);
    procedure actBrowsePrintExecute(Sender: TObject);
  private
    FFileName: string;
  protected
    FPropertyForm: TSJCustomPropertyForm;
    
    procedure Cut; virtual;
    procedure Copy; virtual;
    procedure Paste; virtual;
    procedure SelectAll; virtual;
    procedure New; virtual;
    procedure Edit; virtual;
    procedure Delete; virtual;
    procedure SaveToFile(const Afilename: string); virtual;
    procedure Search; virtual;
    procedure Refresh; virtual;

    function  GetPropertyForm: TSJCustomPropertyForm; virtual;
  public
    property  PropertyForm: TSJCustomPropertyForm read GetPropertyForm;
  end;

var
  SJCustomBrowseForm: TSJCustomBrowseForm;

implementation

uses InvPrintDM;

{$R *.dfm}

{ TSJCustomBrowseForm }

procedure TSJCustomBrowseForm.Copy;
begin
  with grdBrowse do
    if CheckCopyAction and (geaCopyEh in EditActions) then
      DBGridEh_DoCopyAction(grdBrowse, False);
end;

procedure TSJCustomBrowseForm.Cut;
begin
  with grdBrowse do
    if CheckCutAction and (geaCutEh in EditActions) then
      DBGridEh_DoCutAction(grdBrowse, False);
end;

procedure TSJCustomBrowseForm.Delete;
// 删除客户用水记录
var
  I: Integer;
begin
  if Application.MessageBox(Pchar('你真的要删除所选定的数据吗?'), Pchar('提示'), MB_YESNO) = IDNO then
    Exit;

  Screen.Cursor := crHourGlass;
  with grdBrowse, grdBrowse.DataSource.DataSet do
  try
    DisableControls;
    for I := 0 to SelectedRows.Count - 1 do
    try
      GotoBookmark(Pointer(SelectedRows.Items[I]));
      if not Bof or not Eof then // 如果已经删除完毕则不进行相关操作
        Delete;
    except
      on Exception do
        ShowMessage('删除当前记录失败,可能此记录已经被其它表引用不能删除 。');
    end;
  finally
    EnableControls;
    Screen.Cursor := crDefault;
  end;
end;

function TSJCustomBrowseForm.GetPropertyForm: TSJCustomPropertyForm;
begin
  //
end;

procedure TSJCustomBrowseForm.Paste;
begin
  with grdBrowse do
    if CheckPasteAction and (geaPasteEh in EditActions) then
      DBGridEh_DoPasteAction(grdBrowse, False);
end;

procedure TSJCustomBrowseForm.SaveToFile(const Afilename: string);
var
  ExpClass: TDBGridEhExportClass;
  Ext, Astr: string;
begin
  Savedlg.FileName := Afilename;
  if Savedlg.Execute then
  begin
    case Savedlg.FilterIndex of
      1: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
      2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
      3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
      4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
      5: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
    else
      ExpClass := nil; Ext := '';
    end;
    if ExpClass <> nil then
    begin
      Astr := Savedlg.FileName;
      if UpperCase(System.Copy(Astr, Length(Astr)-2, 3)) <> UpperCase(Ext) then
        Savedlg.FileName := Savedlg.FileName + '.' + Ext;
      SaveDBGridEhToExportFile(ExpClass, grdBrowse, Savedlg.FileName,False);
    end;
  end;
end;

procedure TSJCustomBrowseForm.SelectAll;
begin
  with grdBrowse do
    if CheckSelectAllAction and (geaSelectAllEh in EditActions) then
      Selection.SelectAll;
end;

procedure TSJCustomBrowseForm.ActListUpdate(Action: TBasicAction;
  var Handled: Boolean);
begin
  inherited;
  with grdBrowse do
    begin
      actBrowseCut.Enabled       := CheckCutAction and (geaCutEh in EditActions);
      actBrowseCopy.Enabled      := CheckCopyAction and (geaCopyEh in EditActions);
      actBrowsePaste.Enabled     := CheckPasteAction and (geaPasteEh in EditActions);
      actBrowseDelete.Enabled    := CheckDeleteAction and (geaDeleteEh in EditActions);
      actBrowseSelectAll.Enabled := CheckSelectAllAction and (geaSelectAllEh in EditActions);
      actBrowseSaveAs.Enabled    := CheckCopyAction and (geaCopyEh in EditActions);
    end;
end;

procedure TSJCustomBrowseForm.Search;
// 查找数据
begin
  if grdBrowse.DataSource.DataSet.IsEmpty then
    Exit;
    
  try
    FilterDialog.Caption := '查找';
    FilterDialog.DefaultField    := grdBrowse.DataSource.DataSet.Fields[0].Name;
    FilterDialog.DefaultFilterBy := fdFilterByValue;
    Screen.Cursor := crHourGlass;
    FilterDialog.Execute;
    Application.ProcessMessages;
  finally
    Screen.Cursor := crDefault;
  end;

end;

procedure TSJCustomBrowseForm.Refresh;
// 刷新当前数据集
var
  Abookmark: TBookMark;
begin
  with grdBrowse.DataSource.DataSet do
  try
    if not Active then
      Exit;
    Screen.Cursor := crHourGlass;
    Abookmark := GetBookMark;
    DisableControls;
    Close;
    try
      Open;
      GotoBookMark(Abookmark);
      FreeBookMark(Abookmark);
    except
      ShowMessage('刷新数据失败,请重新打开数据表 。');
    end;

  finally
    EnableControls;
    Screen.Cursor := crDefault;
  end;

end;

procedure TSJCustomBrowseForm.actBrowseSaveAsExecute(Sender: TObject);
var
  ATAG: Integer;
begin
  inherited;
  ATAG := TAction(Sender).Tag;

  case ATAG of
    101 : SaveTofile(FFileName);          // 另存文件
    102 : Cut;                            // 剪切
    103 : Copy;                           // 复制
    104 : Paste;                          // 粘贴
    105 : SelectAll;                      // 全部选择
    106 : New;                            // 新建
    107 : Edit;                           // 编辑
    108 : Delete;                         // 删除
    109 : Search;                         // 查找
    110 : Refresh;                        // 刷新
  end;
end;

procedure TSJCustomBrowseForm.Edit;
begin
  if not grdBrowse.DataSource.DataSet.Active then
    Exit;

  if grdBrowse.DataSource.DataSet.IsEmpty then
  begin
    ShowMessage('当前数据集为空,不能进行编辑操作 。');
    Exit;
  end;
  
  //with PropertyForm do
  try
    PropertyForm.NewRecord := False;
    grdBrowse.DataSource.DataSet.Edit;
    if PropertyForm.ShowModal = mrOK then
    begin
      try
        Screen.Cursor := crHourGlass;
        grdBrowse.DataSource.DataSet.Post;
      except
        ShowMessage('保存数据失败,请稍后再试 。');
      end;
    end else
      grdBrowse.DataSource.DataSet.Cancel;
  finally
    Screen.Cursor := crDefault;
  end;

end;

procedure TSJCustomBrowseForm.New;
begin
  if not grdBrowse.DataSource.DataSet.Active then
    Exit;

  //with PropertyForm do
  try
    PropertyForm.NewRecord := True;
    grdBrowse.DataSource.DataSet.Append;
    if PropertyForm.ShowModal = mrOK then
    begin
      try
        Screen.Cursor := crHourGlass;
        grdBrowse.DataSource.DataSet.Post;
      except
        ShowMessage('保存数据失败,请稍后再试 。');
      end;
    end else
      grdBrowse.DataSource.DataSet.Cancel;
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TSJCustomBrowseForm.FormCreate(Sender: TObject);
begin
  inherited;
  if Assigned(grdBrowse.DataSource.DataSet) then
    grdBrowse.DataSource.DataSet.Open;
end;

procedure TSJCustomBrowseForm.actBrowsePreviewExecute(Sender: TObject);
// 打印预览
begin
  inherited;
  FormReport.ReportTitle       := self.Caption;
  FormReport.PageLayout.pgSize := 9;
  FormReport.PageLayout.pgOr   := poLandscape;
  FormReport.PrintControl      := grdBrowse;
  FormReport.ShowReport;
end;

procedure TSJCustomBrowseForm.actBrowsePrintSetupExecute(Sender: TObject);
// 打印设置
begin
  inherited;
  FormReport.ReportTitle  := self.Caption;
  FormReport.PageSetup;
end;

procedure TSJCustomBrowseForm.actBrowsePrintExecute(Sender: TObject);
// 打印
begin
  inherited;
  FormReport.ReportTitle       := self.Caption;
  FormReport.PageLayout.pgSize := 9;
  FormReport.PageLayout.pgOr   := poLandscape;
  FormReport.PrintControl      := grdBrowse;
  FormReport.ShowPrintDialog   := True;
  FormReport.PrintReport;
end;

end.





























































































⌨️ 快捷键说明

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