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

📄 fapprovaleditor.pas

📁 Workflow Studio是一款专为商业进程管理(BPM)设计的Delphi VCL框架。通过Workflow Studio你可以轻易地将工作流与BPM功能添加到你的应用程序里。这样能使你或你的最
💻 PAS
字号:
unit fApprovalEditor;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, wsClasses, wsBlocks, fAttachPermissions, fFieldFrame;

type
  TfmApprovalEditor = class(TForm)
    PageControl1: TPageControl;
    tsGeneral: TTabSheet;
    lbSubject: TLabel;
    edSubject: TEdit;
    lbDescription: TLabel;
    mmComments: TMemo;
    lbAssignment: TLabel;
    edAssignment: TComboBox;
    tsStatus: TTabSheet;
    lbStatusList: TLabel;
    mmStatus: TMemo;
    btCancel: TButton;
    btOk: TButton;
    cbMailNotification: TCheckBox;
    tsAttachments: TTabSheet;
    frPermissions: TfrAttachPermissions;
    tsFields: TTabSheet;
    frFields: TfrFieldFrame;
    procedure btOkClick(Sender: TObject);
    procedure btCancelClick(Sender: TObject);
    procedure PropertyChanged(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
    FDiagram: TWorkflowDiagram;
    FTask: TTaskDefinition;
    FUpdatingControls: integer;
    procedure TaskToInterface;
    procedure LoadTaskInEditors(ATask: TTaskDefinition);
    procedure SaveEditorsInTask(ATask: TTaskDefinition);
    procedure BeginUpdateControls;
    procedure EndUpdateControls;
    procedure SetControlsEnabled(AEnabled: boolean);
    procedure Localize;
  protected
    procedure Loaded; override;
  public
    { Public declarations }
    function EditApprovalDefinition(ABlock: TWorkflowApprovalBlock; ADiagram: TWorkflowDiagram): boolean;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

var
  fmApprovalEditor: TfmApprovalEditor;

implementation
uses wsMain, wsRes;

{$R *.DFM}

{ TForm1 }

function TfmApprovalEditor.EditApprovalDefinition(ABlock: TWorkflowApprovalBlock; ADiagram: TWorkflowDiagram): boolean;
begin
  FTask.Assign(ABlock.Task);
  FDiagram := ADiagram;
  frPermissions.OnPropertyChanged := PropertyChanged;
  TaskToInterface;
  result := ShowModal = mrOk;
  if result then
  begin
    frFields.SaveEditorsInTask(FTask);
    ABlock.Task.Assign(FTask);
  end;
end;

procedure TfmApprovalEditor.btOkClick(Sender: TObject);
begin
  ModalResult := mrOk;
end;

procedure TfmApprovalEditor.btCancelClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;

procedure TfmApprovalEditor.TaskToInterface;
begin
  LoadTaskInEditors(FTask);
end;

procedure TfmApprovalEditor.LoadTaskInEditors(ATask: TTaskDefinition);
begin
  if ATask <> nil then
  begin
    BeginUpdateControls;
    try
      edSubject.Text := ATask.Subject;
      mmComments.Lines.Text := ATask.Description;
      mmStatus.Lines := ATask.StatusList;
      edAssignment.Text := ATask.AssignmentRule;
      cbMailNotification.Checked := ATask.MailNotification;
      frPermissions.LoadTaskInEditors(ATask);
      frFields.LoadTaskInEditors(ATask, FDiagram);
      SetControlsEnabled(true);
    finally
      EndUpdateControls;
    end;
  end;
end;

procedure TfmApprovalEditor.SaveEditorsInTask(ATask: TTaskDefinition);
begin
  if ATask <> nil then
  begin
    ATask.Subject := edSubject.Text;
    ATask.Description := mmComments.Lines.Text;
    ATask.StatusList.Assign(mmStatus.Lines);
    ATask.AssignmentRule := edAssignment.Text;
    ATask.MailNotification := cbMailNotification.Checked;
    frPermissions.SaveEditorsInTask(ATask);
    frFields.SaveEditorsInTask(ATask);
  end;
end;

procedure TfmApprovalEditor.PropertyChanged(Sender: TObject);
begin
  if (FUpdatingControls = 0) then
    SaveEditorsInTask(FTask);
end;

constructor TfmApprovalEditor.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FTask := TTaskDefinition.Create(nil);
end;

destructor TfmApprovalEditor.Destroy;
begin
  FTask.Free;
  inherited;
end;

procedure TfmApprovalEditor.BeginUpdateControls;
begin
  inc(FUpdatingControls);
end;

procedure TfmApprovalEditor.EndUpdateControls;
begin
  dec(FUpdatingControls);
end;

procedure TfmApprovalEditor.SetControlsEnabled(AEnabled: boolean);
begin
  edSubject.Enabled := AEnabled;
  mmComments.Enabled := AEnabled;
  mmStatus.Enabled := AEnabled;
  edAssignment.Enabled := AEnabled;
  cbMailNotification.Enabled := AEnabled;
end;

procedure TfmApprovalEditor.FormCreate(Sender: TObject);
begin
  WorkflowStudio.UserManager.FillAssignmentList(edAssignment.Items);
  PageControl1.ActivePage := tsGeneral;
  ActiveControl := edSubject;
end;

procedure TfmApprovalEditor.Localize;
begin
  Self.Caption := _str('fmApprovalEditor.Self.Caption');
  tsGeneral.Caption := _str('fmApprovalEditor.tsGeneral.Caption');
  lbSubject.Caption := _str('fmApprovalEditor.lbSubject.Caption');
  lbDescription.Caption := _str('fmApprovalEditor.lbDescription.Caption');
  lbAssignment.Caption := _str('fmApprovalEditor.lbAssignment.Caption');
  cbMailNotification.Caption := _str('fmApprovalEditor.cbMailNotification.Caption');
  tsStatus.Caption := _str('fmApprovalEditor.tsStatus.Caption');
  lbStatusList.Caption := _str('fmApprovalEditor.lbStatusList.Caption');
  tsAttachments.Caption := _str('fmApprovalEditor.tsAttachments.Caption');
  tsFields.Caption := _str('fmApprovalEditor.tsFields.Caption');
  btCancel.Caption := _str('fmApprovalEditor.btCancel.Caption');
  btOk.Caption := _str('fmApprovalEditor.btOk.Caption');
end;

procedure TfmApprovalEditor.FormActivate(Sender: TObject);
begin
  edSubject.SetFocus;
end;

procedure TfmApprovalEditor.Loaded;
begin
  inherited;
  Localize;
end;

end.

⌨️ 快捷键说明

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