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

📄 frmnoticeimpl.pas

📁 多媒体播放后台管理系统适用于各种字幕播放软件的后台管理,包括播放内容、时间、等级等的管理。
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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 + -