📄 frmnoticeimpl.pas
字号:
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 + -