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

📄 fworkfloweditor.pas

📁 Workflow Studio是一款专为商业进程管理(BPM)设计的Delphi VCL框架。通过Workflow Studio你可以轻易地将工作流与BPM功能添加到你的应用程序里。这样能使你或你的最
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{***************************************************************************}
{ Diagram Studio                                                            }
{ for Delphi & C++Builder                                                   }
{ version 2.2                                                               }
{                                                                           }
{ written by TMS Software                                                   }
{            copyright ?2003-2007                                          }
{            Email : info@tmssoftware.com                                   }
{            Web : http://www.tmssoftware.com                               }
{                                                                           }
{ The source code is given as is. The author is not responsible             }
{ for any possible damage done due to the use of this code.                 }
{ The components can be freely used in any application. The complete        }
{ source code remains property of the author and may not be distributed,    }
{ published, given or sold in any form as such. No parts of the source      }
{ code can be included in any other component or application without        }
{ written authorization of the author.                                      }
{***************************************************************************}
unit fWorkflowEditor;

interface

uses
  Windows, Messages, SysUtils,
  {$IFNDEF VER130}
  Variants,
  {$ENDIF}
  Classes, Graphics, Controls, Forms,
  Dialogs, atDiagram, ExtCtrls, DiagramExtra, ImgList, StdCtrls, Menus,
  ActnList, DiagramActns, ComCtrls, ToolWin,
  DgrSelectors, DgrCombo, wsClasses, wsBlocks, LiveFlowChart,
  LiveDiagram;

type
  TfmWorkflowEditor = class(TForm)
    ImageList1: TImageList;
    MainMenu1: TMainMenu;
    Edittext1: TMenuItem;
    Edit1: TMenuItem;
    ActionList1: TActionList;
    DiagramEditText1: TDiagramEditText;
    File1: TMenuItem;
    Opendiagram1: TMenuItem;
    Savediagram1: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Copyasimage1: TMenuItem;
    Print1: TMenuItem;
    DiagramSelectAll1: TDiagramSelectAll;
    DiagramCopy1: TDiagramCopy;
    DiagramCut1: TDiagramCut;
    DiagramPaste1: TDiagramPaste;
    Edit2: TMenuItem;
    DiagramDelete1: TDiagramDelete;
    Cut1: TMenuItem;
    Copy1: TMenuItem;
    Paste1: TMenuItem;
    Delete1: TMenuItem;
    Selectall1: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    Newdiagram1: TMenuItem;
    N1: TMenuItem;
    StatusBar1: TStatusBar;
    Preview1: TMenuItem;
    PrintDialog1: TPrintDialog;
    DiagramSetZoom1: TDiagramSetZoom;
    DiagramViewLeftRuler1: TDiagramViewLeftRuler;
    DiagramViewTopRuler1: TDiagramViewTopRuler;
    DiagramSetZoom2: TDiagramSetZoom;
    DiagramSetZoom3: TDiagramSetZoom;
    DiagramSetZoom4: TDiagramSetZoom;
    DiagramSetZoom5: TDiagramSetZoom;
    DiagramSetZoom6: TDiagramSetZoom;
    DiagramSetZoom7: TDiagramSetZoom;
    View1: TMenuItem;
    Leftruler1: TMenuItem;
    Topruler1: TMenuItem;
    N2: TMenuItem;
    Zoom1: TMenuItem;
    N1001: TMenuItem;
    N5: TMenuItem;
    N3001: TMenuItem;
    N1501: TMenuItem;
    N751: TMenuItem;
    N501: TMenuItem;
    N251: TMenuItem;
    N101: TMenuItem;
    PopupMenu1: TPopupMenu;
    DiagramShapeColor1: TDiagramShapeColor;
    DiagramLineColor1: TDiagramLineColor;
    DiagramBlockPicture1: TDiagramBlockPicture;
    DiagramArrowShape1: TDiagramArrowShape;
    DiagramArrowShape2: TDiagramArrowShape;
    DiagramArrowShape3: TDiagramArrowShape;
    DiagramArrowShape4: TDiagramArrowShape;
    DiagramArrowShape5: TDiagramArrowShape;
    DiagramArrowShape6: TDiagramArrowShape;
    DiagramArrowShape7: TDiagramArrowShape;
    DiagramArrowShape8: TDiagramArrowShape;
    DiagramArrowShape9: TDiagramArrowShape;
    DiagramArrowShape10: TDiagramArrowShape;
    DiagramArrowShape11: TDiagramArrowShape;
    DiagramArrowShape12: TDiagramArrowShape;
    DiagramShapeColor11: TMenuItem;
    DiagramLineColor11: TMenuItem;
    Sourcearrow1: TMenuItem;
    Targetarrow1: TMenuItem;
    None1: TMenuItem;
    Solidarrow1: TMenuItem;
    Linearrow1: TMenuItem;
    Ellipse1: TMenuItem;
    Rectangle1: TMenuItem;
    Diamond1: TMenuItem;
    None2: TMenuItem;
    Solidarrow2: TMenuItem;
    Linearrow2: TMenuItem;
    Ellipse2: TMenuItem;
    Rectangle2: TMenuItem;
    Diamond2: TMenuItem;
    TabControl1: TTabControl;
    DiagramToolBar1: TDiagramToolBar;
    DiagramBlockPicture11: TMenuItem;
    acHasArrow: TAction;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton10: TToolButton;
    acNewDiagram: TAction;
    acOpenDiagram: TAction;
    acSaveDiagram: TAction;
    acPrintDiagram: TAction;
    acPreviewDiagram: TAction;
    ToolButton9: TToolButton;
    ToolButton13: TToolButton;
    Shapecolor1: TMenuItem;
    Linecolor1: TMenuItem;
    Picture1: TMenuItem;
    Sourcearrow2: TMenuItem;
    Targetarrow2: TMenuItem;
    None3: TMenuItem;
    Solidarrow3: TMenuItem;
    Linearrow3: TMenuItem;
    Ellipse3: TMenuItem;
    Rectangle3: TMenuItem;
    Diamond3: TMenuItem;
    None4: TMenuItem;
    Solidarrow4: TMenuItem;
    Linearrow4: TMenuItem;
    Ellipse4: TMenuItem;
    Rectangle4: TMenuItem;
    Diamond4: TMenuItem;
    N6: TMenuItem;
    DiagramSendToBack1: TDiagramSendToBack;
    DiagramBringToFront1: TDiagramBringToFront;
    ToolButton14: TToolButton;
    ToolButton15: TToolButton;
    N7: TMenuItem;
    N8: TMenuItem;
    DiagramBringToFront11: TMenuItem;
    DiagramSendToBack11: TMenuItem;
    DiagramControlFont1: TDiagramControlFont;
    ToolButton16: TToolButton;
    Font1: TMenuItem;
    N9: TMenuItem;
    Font2: TMenuItem;
    Edittext2: TMenuItem;
    DiagramGrid1: TDiagramGrid;
    Grid1: TMenuItem;
    DiagramGradientSetting1: TDiagramGradientSetting;
    Gradient1: TMenuItem;
    DiagramShadow1: TDiagramShadow;
    DiagramUndoAction1: TDiagramUndoAction;
    DiagramRedoAction1: TDiagramRedoAction;
    N10: TMenuItem;
    Undo1: TMenuItem;
    DiagramRedoAction11: TMenuItem;
    acAutomaticNodes: TAction;
    N11: TMenuItem;
    Automaticnodes1: TMenuItem;
    ToolButton19: TToolButton;
    DgrZoomSelector1: TDgrZoomSelector;
    btCheck: TToolButton;
    Workflow1: TMenuItem;
    Variables1: TMenuItem;
    DiagramConnectionId1: TDiagramConnectionId;
    DiagramConnectionId2: TDiagramConnectionId;
    DiagramConnectionId3: TDiagramConnectionId;
    Attachments1: TMenuItem;
    LiveDiagram1: TWorkflowDiagram;
    ToolBar2: TToolBar;
    DgrColorSelector1: TDgrColorSelector;
    DgrGradientDirectionSelector1: TDgrGradientDirectionSelector;
    DgrBrushStyleSelector1: TDgrBrushStyleSelector;
    DgrShadowSelector1: TDgrShadowSelector;
    DgrPenStyleSelector1: TDgrPenStyleSelector;
    DgrPenColorSelector1: TDgrPenColorSelector;
    DgrPenWidthSelector1: TDgrPenWidthSelector;
    DgrTextColorSelector1: TDgrTextColorSelector;
    ToolButton12: TToolButton;
    DiagramToolBar2: TDiagramToolBar;
    ToolButton11: TToolButton;
    DgrFontSelector1: TDgrFontSelector;
    DgrFontSizeSelector1: TDgrFontSizeSelector;
    procedure Copyasimage1Click(Sender: TObject);
    procedure LiveDiagram1Modified(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure TabControl1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure acHasArrowUpdate(Sender: TObject);
    procedure acNewDiagramExecute(Sender: TObject);
    procedure acOpenDiagramExecute(Sender: TObject);
    procedure acSaveDiagramExecute(Sender: TObject);
    procedure acPrintDiagramExecute(Sender: TObject);
    procedure acPreviewDiagramExecute(Sender: TObject);
    procedure acHasArrowExecute(Sender: TObject);
    procedure acAutomaticNodesExecute(Sender: TObject);
    procedure acAutomaticNodesUpdate(Sender: TObject);
    procedure btCheckClick(Sender: TObject);
    procedure LiveDiagram1DControlDblClick(Sender: TObject;
      ADControl: TDiagramControl);
    procedure Variables1Click(Sender: TObject);
    procedure LiveDiagram1LinkAdded(Sender: TObject;
      ADControl: TDiagramControl; ALink: TCustomDiagramLine;
      ALinkPoint: TLinkPoint);
    procedure LiveDiagram1LinkRemoved(Sender: TObject;
      ADControl: TDiagramControl; ALink: TCustomDiagramLine;
      ALinkPoint: TLinkPoint);
    procedure LiveDiagram1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Attachments1Click(Sender: TObject);
  private
    FOnSaveDiagram: TNotifyEvent;
    FLastUnlinkedLine: TCustomDiagramLine;
    FLastUnlinkedBlock: TDiagramControl;
    procedure WorkflowSave(Sender: TObject);
    procedure HideFileBasedOptions;
    procedure EditTransition(ALine: TCustomDiagramLine);
    procedure Localize;
  protected
    procedure Loaded; override;
  private
    { Private declarations }
    FModified: boolean;
    FWorkDef: TWorkflowDefinition; //temporary variable to know which workflow definition is being edited
    procedure SetModified(Value: boolean);
    procedure SetDiagramDefaults;
    property OnSaveDiagram: TNotifyEvent read FOnSaveDiagram write FOnSaveDiagram;
  public
    { Public declarations }
    procedure EditWorkflowDiagram(AWorkDef: TWorkflowDefinition);
  end;

implementation                                     
uses
  wsRes, wsMain, fVariableEditor, fTransitionEditor, fAttachmentEditor;

{$R *.dfm}

procedure TfmWorkflowEditor.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := not FModified or
    (MessageDlg(_str(SConfirmCloseAndDiscard), mtInformation,
      [mbOk, mbCancel],0) = mrOk);
end;

procedure TfmWorkflowEditor.SetModified(Value: boolean);
begin
  FModified := Value;
  if FModified then
    StatusBar1.Panels[0].Text := _str(SModified)
  else
    StatusBar1.Panels[0].Text := '';
end;

procedure TfmWorkflowEditor.LiveDiagram1Modified(Sender: TObject);
begin
  SetModified(True);
end;

procedure TfmWorkflowEditor.Copyasimage1Click(Sender: TObject);
begin
  LiveDiagram1.CopyBitmapToClipboard;
end;

procedure TfmWorkflowEditor.TabControl1Change(Sender: TObject);
begin
  if (TabControl1.TabIndex = 0) or (TabControl1.Tabs.Count <= 0) then
    DiagramToolBar1.Category := ''
  else
    DiagramToolBar1.Category := TabControl1.Tabs[TabControl1.TabIndex];
end;

procedure TfmWorkflowEditor.FormCreate(Sender: TObject);
var
  c: integer;
  SL: TStringList;
  ATab: string;
begin
  TabControl1.Tabs.Add(_str(SAllObjects));

  {Remove base live diagram blocks}
  c := 0;
  while c < RegDControlList.Count do
  begin
    if Pos('workflow', lowercase(RegDControlList[c].Category)) = 0 then
      RegDControlList[c].Free
    else
      inc(c);
  end;

  {add objects to the toolbar}
  SL := TStringList.Create;
  SL.Add(_str(SAllObjects));
  try
    for c := 0 to RegDControlList.Count - 1 do
    begin
      ATab := RegDControlList[c].Category;
      if (ATab <> '') and (SL.IndexOf(ATab) = -1) then
        SL.Add(RegDControlList[c].Category);
    end;

⌨️ 快捷键说明

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