📄 fapprovaleditor.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 + -