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

📄 fworkfloweditor.pas

📁 Workflow Studio是一款专为商业进程管理(BPM)设计的Delphi VCL框架。通过Workflow Studio你可以轻易地将工作流与BPM功能添加到你的应用程序里。这样能使你或你的最
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -