📄 frmnoticeimpl.pas
字号:
begin
if (GetNextNo(qryMain, 'T_NOTICE', 'NOTICE_ID', strTemp, 8)) then
DataSet.FieldByName('NOTICE_ID').AsString := strTemp
else begin
ShowMessage('取通知ID时出错!');
Abort;
end;
DataSet.FieldByName('BROADCAST_DATE').AsDateTime := GetSysDateTime(qryPublic);
DataSet.FieldByName('BROADCAST_TIME').AsDateTime := GetSysDateTime(qryPublic);
DataSet.FieldByName('END_DATE').AsDateTime := GetSysDateTime(qryPublic);
DataSet.FieldByName('END_TIME').AsDateTime := GetSysDateTime(qryPublic) + 30/24/60;
DataSet.FieldByName('user_id').AsString := UserID;
DataSet.FieldByName('unit_id').AsString := DeptID;
DataSet.FieldByName('oper_time').AsDateTime := GetSysDateTime(qryPublic);
DataSet.FieldByName('status').AsString := UpperCase('P');
DataSet.FieldByName('grade').AsString := '通知';
FStatus := STATUS_EDIT;
FModified := True;
ShowActionStatus();
end;
procedure TFrmNotice.cdsMainAfterScroll(DataSet: TDataSet);
begin
ShowActionStatus();
end;
procedure TFrmNotice.cdsMainAfterDelete(DataSet: TDataSet);
begin
FStatus := STATUS_BROWSE;
FModified := False;
ShowActionStatus();
end;
procedure TFrmNotice.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if (FModified) then
begin
case (Application.MessageBox(PChar('是否保存对当前记录的修改?'),
PChar(Caption), MB_YESNOCANCEL + MB_ICONQUESTION + MB_DEFBUTTON1)) of
ID_YES:
begin
actSave.Execute();
CanClose := True;
end;
ID_NO:
begin
CanClose := True
end;
else
begin
CanClose := False
end;
end;
end
else begin
CanClose := True;
end;
end;
procedure TFrmNotice.FormShow(Sender: TObject);
begin
conMain.Open;
grdMain.Columns[7].KeyList.Clear;
grdMain.Columns[7].PickList.Clear;
cmbUnitID.Items.Clear;
cmbUnitID.KeyItems.Clear;
qryPublic.Close;
qryPublic.SQL.Clear;
qryPublic.SQL.Add('select distinct unit_id,name from t_sys_unit order by unit_id');
qryPublic.Open;
while not qryPublic.Eof do
begin
cmbUnitID.KeyItems.Add(qryPublic.FieldByName('unit_id').AsString);
cmbUnitID.Items.Add(qryPublic.FieldByName('name').AsString);
grdMain.Columns[7].KeyList.Add(qryPublic.FieldByName('unit_id').AsString);
grdMain.Columns[7].PickList.Add(qryPublic.FieldByName('name').AsString);
qryPublic.Next;
end;
grdMain.Columns[8].KeyList.Clear;
grdMain.Columns[8].PickList.Clear;
grdMain.Columns[11].KeyList.Clear;
grdMain.Columns[11].PickList.Clear;
cmbUserID.Items.Clear;
cmbUserID.KeyItems.Clear;
qryPublic.Close;
qryPublic.SQL.Clear;
qryPublic.SQL.Add('select distinct user_id,user_name from t_sys_user order by user_id');
qryPublic.Open;
while not qryPublic.Eof do
begin
cmbUserID.KeyItems.Add(qryPublic.FieldByName('user_id').AsString);
cmbUserID.Items.Add(qryPublic.FieldByName('user_name').AsString);
grdMain.Columns[8].KeyList.Add(qryPublic.FieldByName('user_id').AsString);
grdMain.Columns[8].PickList.Add(qryPublic.FieldByName('user_name').AsString);
grdMain.Columns[11].KeyList.Add(qryPublic.FieldByName('user_id').AsString);
grdMain.Columns[11].PickList.Add(qryPublic.FieldByName('user_name').AsString);
qryPublic.Next;
end;
qryPublic.Close;
if UpperCase(strCurOper) = 'ADD' then
begin
radLast2Days.Checked := True;
actNew.Enabled := True;
btnNew.Visible := True;
btnSep1.Visible := True;
actAudit.Enabled := False;
btnAudit.Visible := False;
sfrMain.Caption := '通知发布';
end
else if UpperCase(strCurOper) = 'MOD' then
begin
radAll.Checked := True;
actNew.Enabled := False;
btnNew.Visible := False;
btnSep1.Visible := False;
actAudit.Enabled := False;
btnAudit.Visible := False;
sfrMain.Caption := '通知修改';
end
else begin
radAll.Checked := True;
actNew.Enabled := False;
btnNew.Visible := False;
btnSep1.Visible := False;
// actSave.Enabled := False;
// btnSave.Visible := False;
// actCancel.Enabled := False;
// btnCancel.Visible := False;
actAudit.Enabled := True;
btnAudit.Visible := True;
sfrMain.Caption := '通知审批';
end;
Qry();
cdsMain.Open;
ShowActionStatus();
mmoContent.SetFocus;
end;
procedure TFrmNotice.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
conMain.Close;
except
end;
Action := caFree;
end;
procedure TFrmNotice.cdsMainBeforePost(DataSet: TDataSet);
var
objField: TField;
strTemp, strTemp2: String;
begin
objField := DataSet.FieldByName('CONTENT');
objField.AsString := Trim(objField.AsString);
if (objField.AsString = '') then
begin
ShowMessage('请输入“内容”!');
mmoContent.SetFocus;
Abort;
end;
objField := DataSet.FieldByName('grade');
objField.AsString := Trim(objField.AsString);
if (objField.AsString = '') then
begin
ShowMessage('请选择“通知等级”!');
cmbGrade.SetFocus;
Abort;
end;
objField := DataSet.FieldByName('unit_id');
objField.AsString := Trim(objField.AsString);
if (objField.AsString = '') then
begin
ShowMessage('请选择“发布部门”!');
cmbUnitID.SetFocus;
Abort;
end;
strTemp := FormatDateTime('YYMMDD', DataSet.FieldByName('BROADCAST_DATE').AsDateTime);
strTemp := strTemp + FormatDateTime('HHNN', DataSet.FieldByName('BROADCAST_TIME').AsDateTime);
strTemp2 := FormatDateTime('YYMMDD', DataSet.FieldByName('END_DATE').AsDateTime);
strTemp2 := strTemp2 + FormatDateTime('HHNN', DataSet.FieldByName('END_TIME').AsDateTime);
if (strTemp > strTemp2) then
begin
ShowMessage('“播出时间”不能大于“结束时间”,请重新输入!');
dtpBroadCastDate.SetFocus;
Abort;
end;
end;
procedure TFrmNotice.FormDestroy(Sender: TObject);
begin
if (self = FrmNotice) then
FrmNotice := Nil;
end;
procedure TFrmNotice.Qry();
var
Days: Integer;
strWhere: string;
begin
Days := 0;
if radLast1Day.Checked then
Days := 1
else if radLast2Days.Checked then
Days := 2
else if radLast1Week.Checked then
Days := 7
else
Days := -1;
qryMain.Close;
qryMain.SQL.Clear;
if (UpperCase(strCurOper) = 'ADD') or (UpperCase(strCurOper) = 'MOD') then
strWhere := ' where STATUS=''P'' and user_id=' + QuotedStr(UserID)
else
strWhere := ' where STATUS=''P'' and GRADE=''紧急通知''';
if Days = -1 then
qryMain.SQL.Add('SELECT * FROM T_NOTICE ' + strWhere)
else
qryMain.SQL.Add('SELECT * FROM T_NOTICE ' + strWhere + ' AND FORMAT(OPER_TIME, ''YYMMDD'')>=' + QuotedStr(FormatDateTime('YYMMDD', Trunc(GetSysDateTime(qryPublic)) - Days + 1)));
cdsMain.Close;
cdsMain.Open;
end;
procedure TFrmNotice.radLast1DayClick(Sender: TObject);
begin
Qry();
end;
procedure TFrmNotice.radLast2DaysClick(Sender: TObject);
begin
Qry();
end;
procedure TFrmNotice.radLast1WeekClick(Sender: TObject);
begin
Qry();
end;
function TFrmNotice.GetDocCanCancel: Boolean;
begin
Result := True;
if ((dtsMain.DataSet = nil) or (dtsMain.DataSet.State = dsInactive) or
(dtsMain.DataSet.RecordCount = 0)) then
Result := False;
end;
function TFrmNotice.GetDocCanDelete: Boolean;
begin
Result := True;
if ((dtsMain.DataSet = nil) or (dtsMain.DataSet.State = dsInactive) or
(dtsMain.DataSet.RecordCount = 0)) then
Result := False;
end;
function TFrmNotice.GetDocCanModify: Boolean;
var
objField: TField;
begin
Result := True;
objField := cdsMain.FieldByName('status');
if (dtsMain.DataSet = nil) or (dtsMain.DataSet.State = dsInactive) or
(dtsMain.DataSet.RecordCount = 0) or (objField.AsString <> 'P') then
Result := False;
end;
function TFrmNotice.GetDocCanAudit: Boolean;
var
objField: TField;
begin
objField := cdsMain.FieldByName('grade');
if IsAdmin and (objField.AsString = '紧急通知') and (cdsMain.FieldByName('status').AsString = 'P') then
Result := True
else
Result := False;
end;
procedure TFrmNotice.dtsMainStateChange(Sender: TObject);
begin
if ((dtsMain.DataSet.State = dsEdit) and (FStatus <> STATUS_EDIT)) then
begin
FStatus := STATUS_EDIT;
FModified := True;
ShowActionStatus;
end;
end;
procedure TFrmNotice.pvdMainBeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind; var Applied: Boolean);
var
objField: TBlobField;
objStream: TMemoryStream;
begin
objStream := TMemoryStream.Create;
if (UpdateKind = ukInsert) then
begin
cmdPublic.CommandText := 'INSERT INTO T_NOTICE (GRADE,NOTICE_ID,CONTENT,BROADCAST_DATE,BROADCAST_TIME,END_DATE,END_TIME,UNIT_ID,USER_ID,OPER_TIME,STATUS,REMARK) VALUES ' +
'(:GRADE,:NOTICE_ID,:CONTENT,:BROADCAST_DATE,:BROADCAST_TIME,:END_DATE,:END_TIME,:UNIT_ID,:USER_ID,:OPER_TIME,:STATUS,:REMARK)';
cmdPublic.Parameters.ParamByName('GRADE').Value := DeltaDS.FieldByName('GRADE').Value;
cmdPublic.Parameters.ParamByName('NOTICE_ID').Value := DeltaDS.FieldByName('NOTICE_ID').Value;
cmdPublic.Parameters.ParamByName('CONTENT').Value := DeltaDS.FieldByName('CONTENT').Value;
cmdPublic.Parameters.ParamByName('BROADCAST_DATE').DataType := ftFloat;
cmdPublic.Parameters.ParamByName('BROADCAST_DATE').Value := DeltaDS.FieldByName('BROADCAST_DATE').Value;
cmdPublic.Parameters.ParamByName('BROADCAST_TIME').DataType := ftFloat;
cmdPublic.Parameters.ParamByName('BROADCAST_TIME').Value := DeltaDS.FieldByName('BROADCAST_TIME').Value;
cmdPublic.Parameters.ParamByName('END_DATE').DataType := ftFloat;
cmdPublic.Parameters.ParamByName('END_DATE').Value := DeltaDS.FieldByName('END_DATE').Value;
cmdPublic.Parameters.ParamByName('END_TIME').DataType := ftFloat;
cmdPublic.Parameters.ParamByName('END_TIME').Value := DeltaDS.FieldByName('END_TIME').Value;
cmdPublic.Parameters.ParamByName('UNIT_ID').Value := DeltaDS.FieldByName('UNIT_ID').Value;
cmdPublic.Parameters.ParamByName('USER_ID').Value := DeltaDS.FieldByName('USER_ID').Value;
cmdPublic.Parameters.ParamByName('OPER_TIME').DataType := ftFloat;
cmdPublic.Parameters.ParamByName('OPER_TIME').Value := DeltaDS.FieldByName('OPER_TIME').Value;
cmdPublic.Parameters.ParamByName('STATUS').Value := DeltaDS.FieldByName('STATUS').Value;
cmdPublic.Parameters.ParamByName('REMARK').DataType := ftString;
cmdPublic.Parameters.ParamByName('REMARK').Size := 200;
if DeltaDS.FieldByName('REMARK').Value = '' then
cmdPublic.Parameters.ParamByName('REMARK').Value := Null
else
cmdPublic.Parameters.ParamByName('REMARK').Value := DeltaDS.FieldByName('REMARK').Value;
cmdPublic.Execute;
objField := TBlobField(DeltaDS.FieldByName('PIC'));
if (objField.IsNull) then
begin
cmdPublic.CommandText := 'UPDATE T_NOTICE SET PIC = NULL WHERE NOTICE_ID = :NOTICE_ID2';
end
else begin
objField.SaveToStream(objStream);
cmdPublic.CommandText := 'UPDATE T_NOTICE SET PIC = :PIC WHERE NOTICE_ID = :NOTICE_ID2';
cmdPublic.Parameters.ParamByName('PIC').LoadFromStream(objStream, ftBlob);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -