📄 fworkfloweditor.pas
字号:
TabControl1.Tabs := SL;
finally
SL.Free;
end;
// WindowState := wsMaximized;
end;
procedure TfmWorkflowEditor.acHasArrowUpdate(Sender: TObject);
begin
acHasArrow.Enabled := LiveDiagram1.SelectedLinkCount > 0;
end;
procedure TfmWorkflowEditor.acNewDiagramExecute(Sender: TObject);
begin
if not FModified or (MessageDlg(_str(SConfirmNewDiagramAndDiscard),
mtInformation, [mbYes, mbNo], 0) = mrYes) then
begin
LiveDiagram1.Clear;
SetModified(False);
end;
end;
procedure TfmWorkflowEditor.acOpenDiagramExecute(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
if not FModified or (MessageDlg(_str(SConfirmOpenDiagramAndDiscard),
mtInformation, [mbYes, mbNo], 0) = mrYes) then
begin
LiveDiagram1.LoadFromFile(OpenDialog1.FileName);
SetModified(False);
end;
end;
end;
procedure TfmWorkflowEditor.acSaveDiagramExecute(Sender: TObject);
begin
if Assigned(FOnSaveDiagram) then
FOnSaveDiagram(Sender)
else
if SaveDialog1.Execute then
begin
LiveDiagram1.SaveToFile(SaveDialog1.FileName);
SetModified(False);
end;
end;
procedure TfmWorkflowEditor.acPrintDiagramExecute(Sender: TObject);
begin
if PrintDialog1.Execute then
LiveDiagram1.Print;
end;
procedure TfmWorkflowEditor.acPreviewDiagramExecute(Sender: TObject);
begin
LiveDiagram1.Preview;
end;
procedure TfmWorkflowEditor.acHasArrowExecute(Sender: TObject);
begin
//This line is needed to keep action active
end;
procedure TfmWorkflowEditor.acAutomaticNodesExecute(Sender: TObject);
begin
acAutomaticNodes.Checked := not acAutomaticNodes.Checked;
LiveDiagram1.AutomaticNodes := acAutomaticNodes.Checked;
LiveDiagram1.Modified;
end;
procedure TfmWorkflowEditor.acAutomaticNodesUpdate(Sender: TObject);
begin
acAutomaticNodes.Checked := LiveDiagram1.AutomaticNodes;
end;
procedure TfmWorkflowEditor.btCheckClick(Sender: TObject);
begin
if LiveDiagram1.Link then
ShowMessage(_str(SWorkflowCorrect));
end;
procedure TfmWorkflowEditor.EditWorkflowDiagram(
AWorkDef: TWorkflowDefinition);
begin
FWorkDef := AWorkDef;
AWorkDef.AssignToDiagram(LiveDiagram1);
SetDiagramDefaults;
OnSaveDiagram := WorkflowSave;
{Hide specific buttons}
HideFileBasedOptions;
ShowModal;
end;
procedure TfmWorkflowEditor.HideFileBasedOptions;
begin
acNewDiagram.Visible := false;
acOpenDiagram.Visible := false;
end;
procedure TfmWorkflowEditor.WorkflowSave(Sender: TObject);
var
AName: string;
begin
{Requires a name for the workflow}
while Trim(FWorkDef.Name) = '' do
begin
AName := FWorkDef.Name;
if not InputQuery(_str(SWorkflowDefinition), _str(STypeWorkdefName), AName) then
Abort;
FWorkDef.Name := AName;
end;
{update the workdef object with the edited diagram}
FWorkDef.AssignFromDiagram(LiveDiagram1);
{Save the workdef object in database}
WorkflowStudio.WorkflowManager.SaveWorkflowDefinition(FWorkDef);
SetModified(false);
end;
procedure TfmWorkflowEditor.LiveDiagram1DControlDblClick(Sender: TObject;
ADControl: TDiagramControl);
begin
if (ADControl is TCustomWorkflowBlock) and (TCustomWorkflowBlock(ADControl).EditorClass <> nil) then
TCustomWorkflowBlock(ADControl).EditorClass.Create.EditBlock(TCustomWorkflowBlock(ADControl));
if (ADControl is TCustomDiagramLine) then
EditTransition(TCustomDiagramLine(ADControl));
end;
procedure TfmWorkflowEditor.Variables1Click(Sender: TObject);
var
VarEditForm: TfmVariableEditor;
begin
VarEditForm := TfmVariableEditor.Create(Self);
try
if VarEditForm.EditVariables(LiveDiagram1.Variables) then
SetModified(true);
finally
VarEditForm.Free;
end;
end;
procedure TfmWorkflowEditor.EditTransition(ALine: TCustomDiagramLine);
var
TransitionForm: TfmTransitionEditor;
begin
{pass the owner of the block as the owner of the editor. The owner of the block
is the workflow editor. Since Position is poOwnerFormCenter, the
Editor form will be centered according to the workflow editor form}
TransitionForm := TfmTransitionEditor.Create(ALine.Owner);
try
if TransitionForm.EditTransition(ALine) then
if Assigned(ALine.Diagram) then
ALine.Diagram.Modified;
finally
TransitionForm.Free;
end;
end;
procedure TfmWorkflowEditor.LiveDiagram1LinkAdded(Sender: TObject;
ADControl: TDiagramControl; ALink: TCustomDiagramLine;
ALinkPoint: TLinkPoint);
begin
if ALinkPoint = ALink.SourceLinkPoint then
begin
if (ALink <> FLastUnlinkedLine) or (ADControl <> FLastUnlinkedBlock) then
begin
if Assigned(LiveDiagram1) and Assigned(ALink) then
if not (csLoading in LiveDiagram1.ComponentState) then
EditTransition(ALink);
end;
end;
end;
procedure TfmWorkflowEditor.LiveDiagram1LinkRemoved(Sender: TObject;
ADControl: TDiagramControl; ALink: TCustomDiagramLine;
ALinkPoint: TLinkPoint);
begin
if ALinkPoint = ALink.SourceLinkPoint then
begin
FLastUnlinkedLine := ALink;
FLastUnlinkedBlock := ADControl;
end;
end;
procedure TfmWorkflowEditor.SetDiagramDefaults;
begin
With LiveDiagram1 do
begin
AutoPage := true;
PageLines.Visible := true;
ConnectionLineId := 'TWorkflowTransition';
MouseWheelMode := mwVertical;
HorzScrollBar.Increment := 35;
VertScrollBar.Increment := 35;
end;
end;
procedure TfmWorkflowEditor.LiveDiagram1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = VK_DELETE then
LiveDiagram1.DeleteSelecteds;
end;
procedure TfmWorkflowEditor.Attachments1Click(Sender: TObject);
var
AttachEditForm: TfmAttachmentEditor;
begin
AttachEditForm := TfmAttachmentEditor.Create(Self);
try
if AttachEditForm.EditAttachments(LiveDiagram1.Attachments) then
SetModified(true);
finally
AttachEditForm.Free;
end;
end;
procedure TfmWorkflowEditor.Localize;
begin
Self.Caption := _str('fmWorkflowEditor.Self.Caption');
ToolBar1.Caption := _str('fmWorkflowEditor.ToolBar1.Caption');
btCheck.Caption := _str('fmWorkflowEditor.btCheck.Caption');
ToolBar2.Caption := _str('fmWorkflowEditor.ToolBar2.Caption');
DgrColorSelector1.Hint := _str('fmWorkflowEditor.DgrColorSelector1.Hint');
DgrGradientDirectionSelector1.Hint := _str('fmWorkflowEditor.DgrGradientDirectionSelector1.Hint');
DgrBrushStyleSelector1.Hint := _str('fmWorkflowEditor.DgrBrushStyleSelector1.Hint');
DgrShadowSelector1.Hint := _str('fmWorkflowEditor.DgrShadowSelector1.Hint');
DgrPenStyleSelector1.Hint := _str('fmWorkflowEditor.DgrPenStyleSelector1.Hint');
DgrPenColorSelector1.Hint := _str('fmWorkflowEditor.DgrPenColorSelector1.Hint');
DgrPenWidthSelector1.Hint := _str('fmWorkflowEditor.DgrPenWidthSelector1.Hint');
DgrTextColorSelector1.Hint := _str('fmWorkflowEditor.DgrTextColorSelector1.Hint');
DiagramToolBar2.Category := _str('fmWorkflowEditor.DiagramToolBar2.Category');
File1.Caption := _str('fmWorkflowEditor.File1.Caption');
Edit2.Caption := _str('fmWorkflowEditor.Edit2.Caption');
Copyasimage1.Caption := _str('fmWorkflowEditor.Copyasimage1.Caption');
View1.Caption := _str('fmWorkflowEditor.View1.Caption');
Zoom1.Caption := _str('fmWorkflowEditor.Zoom1.Caption');
Edittext1.Caption := _str('fmWorkflowEditor.Edittext1.Caption');
Sourcearrow2.Caption := _str('fmWorkflowEditor.Sourcearrow2.Caption');
Targetarrow2.Caption := _str('fmWorkflowEditor.Targetarrow2.Caption');
Workflow1.Caption := _str('fmWorkflowEditor.Workflow1.Caption');
Variables1.Caption := _str('fmWorkflowEditor.Variables1.Caption');
Attachments1.Caption := _str('fmWorkflowEditor.Attachments1.Caption');
DiagramCut1.Caption := _str('fmWorkflowEditor.DiagramCut1.Caption');
DiagramCut1.Hint := _str('fmWorkflowEditor.DiagramCut1.Hint');
DiagramCopy1.Caption := _str('fmWorkflowEditor.DiagramCopy1.Caption');
DiagramCopy1.Hint := _str('fmWorkflowEditor.DiagramCopy1.Hint');
DiagramPaste1.Caption := _str('fmWorkflowEditor.DiagramPaste1.Caption');
DiagramPaste1.Hint := _str('fmWorkflowEditor.DiagramPaste1.Hint');
DiagramSelectAll1.Caption := _str('fmWorkflowEditor.DiagramSelectAll1.Caption');
DiagramSelectAll1.Hint := _str('fmWorkflowEditor.DiagramSelectAll1.Hint');
DiagramDelete1.Caption := _str('fmWorkflowEditor.DiagramDelete1.Caption');
DiagramDelete1.Hint := _str('fmWorkflowEditor.DiagramDelete1.Hint');
DiagramEditText1.Caption := _str('fmWorkflowEditor.DiagramEditText1.Caption');
DiagramEditText1.Hint := _str('fmWorkflowEditor.DiagramEditText1.Hint');
DiagramViewLeftRuler1.Caption := _str('fmWorkflowEditor.DiagramViewLeftRuler1.Caption');
DiagramViewLeftRuler1.Hint := _str('fmWorkflowEditor.DiagramViewLeftRuler1.Hint');
DiagramViewTopRuler1.Caption := _str('fmWorkflowEditor.DiagramViewTopRuler1.Caption');
DiagramViewTopRuler1.Hint := _str('fmWorkflowEditor.DiagramViewTopRuler1.Hint');
DiagramShapeColor1.Caption := _str('fmWorkflowEditor.DiagramShapeColor1.Caption');
DiagramShapeColor1.Hint := _str('fmWorkflowEditor.DiagramShapeColor1.Hint');
DiagramLineColor1.Caption := _str('fmWorkflowEditor.DiagramLineColor1.Caption');
DiagramLineColor1.Hint := _str('fmWorkflowEditor.DiagramLineColor1.Hint');
DiagramBlockPicture1.Caption := _str('fmWorkflowEditor.DiagramBlockPicture1.Caption');
DiagramBlockPicture1.Hint := _str('fmWorkflowEditor.DiagramBlockPicture1.Hint');
DiagramArrowShape1.Caption := _str('fmWorkflowEditor.DiagramArrowShape1.Caption');
DiagramArrowShape2.Caption := _str('fmWorkflowEditor.DiagramArrowShape2.Caption');
DiagramArrowShape3.Caption := _str('fmWorkflowEditor.DiagramArrowShape3.Caption');
DiagramArrowShape4.Caption := _str('fmWorkflowEditor.DiagramArrowShape4.Caption');
DiagramArrowShape5.Caption := _str('fmWorkflowEditor.DiagramArrowShape5.Caption');
DiagramArrowShape6.Caption := _str('fmWorkflowEditor.DiagramArrowShape6.Caption');
DiagramArrowShape7.Caption := _str('fmWorkflowEditor.DiagramArrowShape7.Caption');
DiagramArrowShape8.Caption := _str('fmWorkflowEditor.DiagramArrowShape8.Caption');
DiagramArrowShape9.Caption := _str('fmWorkflowEditor.DiagramArrowShape9.Caption');
DiagramArrowShape10.Caption := _str('fmWorkflowEditor.DiagramArrowShape10.Caption');
DiagramArrowShape11.Caption := _str('fmWorkflowEditor.DiagramArrowShape11.Caption');
DiagramArrowShape12.Caption := _str('fmWorkflowEditor.DiagramArrowShape12.Caption');
DiagramBringToFront1.Caption := _str('fmWorkflowEditor.DiagramBringToFront1.Caption');
DiagramBringToFront1.Hint := _str('fmWorkflowEditor.DiagramBringToFront1.Hint');
acNewDiagram.Caption := _str('fmWorkflowEditor.acNewDiagram.Caption');
acNewDiagram.Hint := _str('fmWorkflowEditor.acNewDiagram.Hint');
acOpenDiagram.Caption := _str('fmWorkflowEditor.acOpenDiagram.Caption');
acOpenDiagram.Hint := _str('fmWorkflowEditor.acOpenDiagram.Hint');
acSaveDiagram.Caption := _str('fmWorkflowEditor.acSaveDiagram.Caption');
acSaveDiagram.Hint := _str('fmWorkflowEditor.acSaveDiagram.Hint');
acPrintDiagram.Caption := _str('fmWorkflowEditor.acPrintDiagram.Caption');
acPrintDiagram.Hint := _str('fmWorkflowEditor.acPrintDiagram.Hint');
acPreviewDiagram.Caption := _str('fmWorkflowEditor.acPreviewDiagram.Caption');
acPreviewDiagram.Hint := _str('fmWorkflowEditor.acPreviewDiagram.Hint');
DiagramSendToBack1.Caption := _str('fmWorkflowEditor.DiagramSendToBack1.Caption');
DiagramSendToBack1.Hint := _str('fmWorkflowEditor.DiagramSendToBack1.Hint');
DiagramControlFont1.Caption := _str('fmWorkflowEditor.DiagramControlFont1.Caption');
DiagramControlFont1.Hint := _str('fmWorkflowEditor.DiagramControlFont1.Hint');
DiagramGrid1.Caption := _str('fmWorkflowEditor.DiagramGrid1.Caption');
DiagramGrid1.Hint := _str('fmWorkflowEditor.DiagramGrid1.Hint');
DiagramGradientSetting1.Caption := _str('fmWorkflowEditor.DiagramGradientSetting1.Caption');
DiagramGradientSetting1.Hint := _str('fmWorkflowEditor.DiagramGradientSetting1.Hint');
DiagramShadow1.Caption := _str('fmWorkflowEditor.DiagramShadow1.Caption');
DiagramShadow1.Hint := _str('fmWorkflowEditor.DiagramShadow1.Hint');
DiagramUndoAction1.Caption := _str('fmWorkflowEditor.DiagramUndoAction1.Caption');
DiagramRedoAction1.Caption := _str('fmWorkflowEditor.DiagramRedoAction1.Caption');
acAutomaticNodes.Caption := _str('fmWorkflowEditor.acAutomaticNodes.Caption');
DiagramConnectionId1.Caption := _str('fmWorkflowEditor.DiagramConnectionId1.Caption');
DiagramConnectionId1.Hint := _str('fmWorkflowEditor.DiagramConnectionId1.Hint');
DiagramConnectionId2.Caption := _str('fmWorkflowEditor.DiagramConnectionId2.Caption');
DiagramConnectionId2.Hint := _str('fmWorkflowEditor.DiagramConnectionId2.Hint');
DiagramConnectionId3.Caption := _str('fmWorkflowEditor.DiagramConnectionId3.Caption');
DiagramConnectionId3.Hint := _str('fmWorkflowEditor.DiagramConnectionId3.Hint');
OpenDialog1.Filter := _str('fmWorkflowEditor.OpenDialog1.Filter');
OpenDialog1.Title := _str('fmWorkflowEditor.OpenDialog1.Title');
SaveDialog1.Filter := _str('fmWorkflowEditor.SaveDialog1.Filter');
SaveDialog1.Title := _str('fmWorkflowEditor.SaveDialog1.Title');
Sourcearrow1.Caption := _str('fmWorkflowEditor.Sourcearrow1.Caption');
Targetarrow1.Caption := _str('fmWorkflowEditor.Targetarrow1.Caption');
end;
procedure TfmWorkflowEditor.Loaded;
begin
inherited;
Localize;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -