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

📄 frmnoticeimpl.pas

📁 多媒体播放后台管理系统适用于各种字幕播放软件的后台管理,包括播放内容、时间、等级等的管理。
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit FrmNoticeImpl;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Provider, DBClient, ImgList, ActnList, Grids,
  DBGridEh, ComCtrls, ToolWin, StdCtrls, DBCtrls, Mask, DBCtrlsEh,
  ExtCtrls, SUIForm, SUIButton, ExtDlgs, Jpeg, ExcelXP, OleServer, WordXP, Clipbrd;

type
  TFrmNotice = class(TForm)
    sfrMain: TsuiForm;
    imgSt: TImage;
    atlAtions: TActionList;
    actNew: TAction;
    actSave: TAction;
    actCancel: TAction;
    actFirst: TAction;
    actPrior: TAction;
    actNext: TAction;
    actLast: TAction;
    actDelete: TAction;
    actClose: TAction;
    actAudit: TAction;
    imlAction: TImageList;
    dtsMain: TDataSource;
    cdsMain: TClientDataSet;
    cdsMainNOTICE_ID: TWideStringField;
    cdsMainCONTENT: TWideStringField;
    cdsMainBROADCAST_DATE: TDateTimeField;
    cdsMainBROADCAST_TIME: TDateTimeField;
    cdsMainEND_DATE: TDateTimeField;
    cdsMainEND_TIME: TDateTimeField;
    cdsMainUNIT_ID: TWideStringField;
    cdsMainUSER_ID: TWideStringField;
    cdsMainOPER_TIME: TDateTimeField;
    cdsMainSTATUS: TWideStringField;
    cdsMainREMARK: TWideStringField;
    cdsMainGRADE: TWideStringField;
    pvdMain: TDataSetProvider;
    qryMain: TADOQuery;
    conMain: TADOConnection;
    qryPublic: TADOQuery;
    cmdPublic: TADOCommand;
    lblNoticeID: TLabel;
    lblContent: TLabel;
    lblStatus: TLabel;
    lblRemark: TLabel;
    lblBroadCastDate: TLabel;
    lblEndDate: TLabel;
    lblUnitID: TLabel;
    lblUserID: TLabel;
    lblOperTime: TLabel;
    Label1: TLabel;
    clbMain: TCoolBar;
    tlbStandard: TToolBar;
    btnNew: TToolButton;
    btnSep1: TToolButton;
    btnSave: TToolButton;
    btnCancel: TToolButton;
    btnAudit: TToolButton;
    btnSep2: TToolButton;
    btnFirst: TToolButton;
    btnPrior: TToolButton;
    btnNext: TToolButton;
    btnLast: TToolButton;
    btnSep4: TToolButton;
    btnDelete: TToolButton;
    btnSep6: TToolButton;
    btnClose: TToolButton;
    radLast1Day: TRadioButton;
    radLast2Days: TRadioButton;
    radLast1Week: TRadioButton;
    edtNoticeID: TDBEdit;
    edtOperTime: TDBEdit;
    cmbStatus: TDBComboBoxEh;
    dtpBroadCastDate: TDBDateTimeEditEh;
    dtpBroadCastTime: TDBDateTimeEditEh;
    dtpEndDate: TDBDateTimeEditEh;
    dtpEndTime: TDBDateTimeEditEh;
    cmbUnitID: TDBComboBoxEh;
    mmoRemark: TDBMemo;
    cmbUserID: TDBComboBoxEh;
    cmbGrade: TDBComboBoxEh;
    grdMain: TDBGridEh;
    radAll: TRadioButton;
    mmoContent: TDBMemo;
    imgPic: TDBImage;
    btnImportWord: TsuiButton;
    btnClear: TsuiButton;
    btnImportExcel: TsuiButton;
    btnImportPic: TsuiButton;
    dlgSelectFile: TOpenDialog;
    wapMain: TWordApplication;
    eapMain: TExcelApplication;
    opdPic: TOpenPictureDialog;
    suiButton1: TsuiButton;
    cdsMainPIC: TBlobField;
    cdsMainaudit_id: TWideStringField;
    procedure FormCreate(Sender: TObject);
    procedure actFirstExecute(Sender: TObject);
    procedure actPriorExecute(Sender: TObject);
    procedure actNextExecute(Sender: TObject);
    procedure actLastExecute(Sender: TObject);
    procedure actNewExecute(Sender: TObject);
    procedure actSaveExecute(Sender: TObject);
    procedure actCancelExecute(Sender: TObject);
    procedure actDeleteExecute(Sender: TObject);
    procedure actCloseExecute(Sender: TObject);
    procedure cdsMainBeforeDelete(DataSet: TDataSet);
    procedure cdsMainAfterOpen(DataSet: TDataSet);
    procedure cdsMainAfterClose(DataSet: TDataSet);
    procedure cdsMainAfterEdit(DataSet: TDataSet);
    procedure cdsMainAfterInsert(DataSet: TDataSet);
    procedure cdsMainAfterScroll(DataSet: TDataSet);
    procedure cdsMainAfterDelete(DataSet: TDataSet);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure cdsMainBeforePost(DataSet: TDataSet);
    procedure FormDestroy(Sender: TObject);
    procedure radLast1DayClick(Sender: TObject);
    procedure radLast2DaysClick(Sender: TObject);
    procedure radLast1WeekClick(Sender: TObject);
    procedure dtsMainStateChange(Sender: TObject);
    procedure pvdMainBeforeUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind; var Applied: Boolean);
    procedure actAuditExecute(Sender: TObject);
    procedure radAllClick(Sender: TObject);
    procedure btnImportPicClick(Sender: TObject);
    procedure btnImportWordClick(Sender: TObject);
    procedure suiButton1Click(Sender: TObject);
    procedure pvdPicBeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet;
      DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind;
      var Applied: Boolean);
    procedure btnImportExcelClick(Sender: TObject);
  private
    procedure Qry();
    procedure CalcFeat(Pic: TPicture; var Width: integer; var Height: integer);
  protected
    FStatus: Integer;
    FModified: Boolean;

    procedure ShowActionStatus; virtual;
    function GetDeleteConfirmMessage(): string; virtual;

    function GetDocCanModify: Boolean; virtual;
    function GetDocCanDelete: Boolean; virtual;
    function GetDocCanCancel: Boolean; virtual;
    function GetDocCanAudit: Boolean; virtual;
  public
    strCurOper: string;
    
    property DocCanModify: Boolean read GetDocCanModify;
    property DocCanDelete: Boolean read GetDocCanDelete;
    property DocCanCancel: Boolean read GetDocCanCancel;
    property DocCanAudit: Boolean read GetDocCanAudit;
  end;

const
  MAX_HEIGHT = 480;
  MAX_WIDTH = 640;

  strWordExt = '.doc';
  strWordFilter  = 'Word Files (*.doc)|*.DOC';

  strExcelExt = '.xls';
  strExcelFilter  = 'Excel Files (*.xls)|*.XLS';

var
  FrmNotice: TFrmNotice;

implementation

uses FrmMainImpl, temp;

{$R *.dfm}

procedure TFrmNotice.FormCreate(Sender: TObject);
begin
  FStatus := STATUS_INACTIVE;
end;

procedure TFrmNotice.ShowActionStatus;
begin
  if (FStatus = STATUS_BROWSE) and ((cdsMain.State = dsInsert) or (cdsMain.State = dsEdit)) then
    FStatus := STATUS_EDIT;

  case FStatus of
    STATUS_INACTIVE:
    begin
      actNew.Enabled := False;
      actSave.Enabled := False;
      actCancel.Enabled := False;
      actAudit.Enabled := False;
      actFirst.Enabled := False;
      actPrior.Enabled := False;
      actNext.Enabled := False;
      actLast.Enabled := False;
      actDelete.Enabled := False;
    end;

    STATUS_BROWSE:
    begin
      actNew.Enabled := (UpperCase(strCurOper) = 'ADD');
      actSave.Enabled := False;
      actCancel.Enabled := False;
      actAudit.Enabled := DocCanAudit;
      actFirst.Enabled := dtsMain.DataSet.RecNo > 1;
      actPrior.Enabled := actFirst.Enabled;
      actNext.Enabled := (dtsMain.DataSet.RecordCount > 0)
        and (dtsMain.DataSet.RecNo < dtsMain.DataSet.RecordCount);
      actLast.Enabled := actNext.Enabled;
      actDelete.Enabled := DocCanDelete;
      (TClientDataSet(dtsMain.DataSet)).ReadOnly := False or (not DocCanModify) or
        (dtsMain.DataSet.RecordCount = 0);
    end;

    STATUS_EDIT:
    begin
      actNew.Enabled := False;
      actSave.Enabled := True;
      actCancel.Enabled := True;
      actAudit.Enabled := False;
      actFirst.Enabled := False;
      actPrior.Enabled := False;
      actNext.Enabled := False;
      actLast.Enabled := False;
      actDelete.Enabled := dtsMain.DataSet.RecNo > 0;
    end;
  end;
end;

procedure TFrmNotice.actFirstExecute(Sender: TObject);
begin
  cdsMain.First();
  ShowActionStatus();
end;

procedure TFrmNotice.actPriorExecute(Sender: TObject);
begin
  cdsMain.Prior();
  ShowActionStatus();
end;

procedure TFrmNotice.actNextExecute(Sender: TObject);
begin
  cdsMain.Next();
  ShowActionStatus();
end;

procedure TFrmNotice.actLastExecute(Sender: TObject);
begin
  cdsMain.Last();
  ShowActionStatus();
end;

procedure TFrmNotice.actNewExecute(Sender: TObject);
begin
  (TClientDataSet(dtsMain.DataSet)).ReadOnly := False;
  dtsMain.DataSet.Append;
  FStatus := STATUS_EDIT;
  FModified := True;
  if (Visible) then
    ShowActionStatus();
end;

procedure TFrmNotice.actSaveExecute(Sender: TObject);
begin
  if (cdsMain.State = dsEdit) or (cdsMain.State = dsInsert) then
    cdsMain.Post();

  try
    Screen.Cursor := crHourGlass;

    if (cdsMain.ApplyUpdates(0) > 0) then
    begin
      ShowMessage('更新数据失败。');
      Abort;
    end;

    cdsMain.MergeChangeLog;
    cdsMain.CancelUpdates;

    FStatus := STATUS_BROWSE;
    FModified := False;
    ShowActionStatus();

    Screen.Cursor := crDefault;
  except
    on E: Exception do
    begin
      Screen.Cursor := crDefault;
      ShowMessage(E.Message);
    end;
  end;
end;

procedure TFrmNotice.actCancelExecute(Sender: TObject);
begin
  (TClientDataSet(dtsMain.DataSet)).CancelUpdates();
  FStatus := STATUS_BROWSE;
  FModified := False;
  ShowActionStatus();
end;

procedure TFrmNotice.actDeleteExecute(Sender: TObject);
var
  boolReadOnly: Boolean;
begin
  dtsMain.DataSet.Delete;
  (TClientDataSet(dtsMain.DataSet)).ApplyUpdates(0);
  FStatus := STATUS_BROWSE;
  FModified := False;
  ShowActionStatus();
end;

procedure TFrmNotice.actCloseExecute(Sender: TObject);
begin
  Close();
end;

procedure TFrmNotice.cdsMainBeforeDelete(DataSet: TDataSet);
begin
  if (Application.MessageBox(PChar(GetDeleteConfirmMessage()),
    PChar(Caption), MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) = ID_NO) then
    Abort;
end;

function TFrmNotice.GetDeleteConfirmMessage: string;
begin
  result := '您确定要删除当前记录吗?';
end;

procedure TFrmNotice.cdsMainAfterOpen(DataSet: TDataSet);
begin
  FStatus := STATUS_BROWSE;
  FModified := False;
  dtsMain.AutoEdit := True;
  ShowActionStatus();
end;

procedure TFrmNotice.cdsMainAfterClose(DataSet: TDataSet);
begin
  FStatus := STATUS_INACTIVE;
  FModified := False;
  ShowActionStatus();
end;

procedure TFrmNotice.cdsMainAfterEdit(DataSet: TDataSet);
begin
  FStatus := STATUS_EDIT;
  FModified := True;
  ShowActionStatus();
end;

procedure TFrmNotice.cdsMainAfterInsert(DataSet: TDataSet);
var
  strTemp: string;

⌨️ 快捷键说明

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