frmnoticeimpl.pas
来自「多媒体播放后台管理系统适用于各种字幕播放软件的后台管理,包括播放内容、时间、等级」· PAS 代码 · 共 1,083 行 · 第 1/3 页
PAS
1,083 行
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 + =
减小字号Ctrl + -
显示快捷键?