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

📄 wfconnui.pas

📁 业生产并行开发过程 工作流流程编辑器参考源码 采用dxflowchart编写
💻 PAS
字号:
unit WfConnUI;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, ComCtrls, dxflchrt, WfView, WfConnG;

type
  TfWfConnUI = class(TForm)
    btnCancel: TButton;
    btnOK: TButton;
    cbDArrowStyle: TComboBox;
    cbSArrowStyle: TComboBox;
    ColorDialog: TColorDialog;
    FontDialog: TFontDialog;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    MemoText: TMemo;
    Panel1: TPanel;
    pBkColor: TShape;
    pColor: TShape;
    sbFont: TSpeedButton;
    seDArrowSize: TEdit;
    seDPoint: TComboBox;
    seSArrowSize: TEdit;
    seSPoint: TComboBox;
    udSArrowSize: TUpDown;
    udDArrowSize: TUpDown;
    lblLineWidth: TLabel;
    edtLineWidth: TEdit;
    udLineWidth: TUpDown;
    bvl1: TBevel;
    procedure MemoTextChange(Sender: TObject);
    procedure sbFontClick(Sender: TObject);
    procedure seSArrowSizeKeyPress(Sender: TObject; var Key: Char);
    procedure seSPointKeyPress(Sender: TObject; var Key: Char);
    procedure pColorMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  end;
  
  function ConnectEditor(Chart : TWfView; Con : TWfConnG) : Boolean;

var
  fWfConnUI: TfWfConnUI;

implementation

uses WfEditorUI;

{$R *.DFM}

function ConnectEditor(Chart : TWfView; Con : TWfConnG) : Boolean;
var i, D : integer;
begin
  Result := False;
  with TfWfConnUI.Create(nil) do
  begin
    udLineWidth.Position:=TWfConnG(Con).LineWidth;
    with Con do begin
      MemoText.Text := Text;
      sbFont.Font.Assign(Font);
      if Integer(ArrowSource.ArrowType)>0 then
        cbSArrowStyle.ItemIndex := Integer(ArrowSource.ArrowType)-1
      else
        cbSArrowStyle.ItemIndex := Integer(ArrowSource.ArrowType);
      cbDArrowStyle.ItemIndex := Integer(ArrowDest.ArrowType);
      udSArrowSize.Position := ArrowSource.Width;
      udDArrowSize.Position := ArrowDest.Height;
      if PointSource in [0..15] then seSPoint.ItemIndex := PointSource else seSPoint.ItemIndex := 0;
      if PointDest in [0..15] then seDPoint.ItemIndex := PointDest else seDPoint.ItemIndex := 0;
      pColor.Brush.Color := Color;
      pBkColor.Brush.Color := ArrowSource.Color;
      for i := 0 to ComponentCount - 1 do
        Components[i].Tag := 0;
    end;
    if ShowModal = mrOK then
      for i := 0 to Chart.SelectedConnectionCount-1 do
      begin
        TWfConnG(Chart.SelectedConnections[i]).LineWidth:=udLineWidth.Position;
        with Chart.SelectedConnections[i] do
        begin
          if MemoText.Tag = 1 then Text := MemoText.Text;
          if sbFont.Tag = 1 then Font.Assign(sbFont.Font);
          if cbSArrowStyle.Tag = 1 then
          begin
            if cbSArrowStyle.ItemIndex>0 then
              ArrowSource.ArrowType := TdxFcaType(cbSArrowStyle.ItemIndex+1)
            else
              ArrowSource.ArrowType := TdxFcaType(cbSArrowStyle.ItemIndex);
          end;
          if cbDArrowStyle.Tag = 1 then ArrowDest.ArrowType := TdxFcaType(cbDArrowStyle.ItemIndex);
          if seSArrowSize.Tag = 1 then ArrowSource.Width := udSArrowSize.Position;
          if seSArrowSize.Tag = 1 then ArrowSource.Height := udSArrowSize.Position;
          if seDArrowSize.Tag = 1 then ArrowDest.Width := udDArrowSize.Position;
          if seDArrowSize.Tag = 1 then ArrowDest.Height := udDArrowSize.Position;
          D := seSPoint.ItemIndex;
          if not (D in [0..15]) then D := 0;
          if seSPoint.Tag = 1 then SetObjectSource(ObjectSource, D);
          D := seDPoint.ItemIndex;
          if not (D in [0..15]) then D := 0;
          if seSPoint.Tag = 1 then SetObjectDest(ObjectDest, D);
          if pColor.Tag = 1 then Color := pColor.Brush.Color;
          if pBkColor.Tag = 1 then begin
            ArrowSource.Color := pBkColor.Brush.Color;
            ArrowDest.Color := pBkColor.Brush.Color;
          end;
          Result := True;
        end;
      end;
    Free;
  end;
  PostMessage(Chart.Handle, WM_LBUTTONUP, 0, MakeLParam(0, 0)); // Fix: by Kirill
end;

{
******************************* TFEditConnection *******************************
}
procedure TfWfConnUI.MemoTextChange(Sender: TObject);
begin
  TComponent(Sender).Tag := 1;
end;

procedure TfWfConnUI.sbFontClick(Sender: TObject);
begin
  FontDialog.Font.Assign(sbFont.Font);
  if FontDialog.Execute then begin
    sbFont.Font.Assign(FontDialog.Font);
    TSpeedButton(Sender).Tag := 1;
  end;
end;

procedure TfWfConnUI.seSArrowSizeKeyPress(Sender: TObject; var Key: Char);
begin
  if not fWfEditorUI.CanKeyEnter(TEdit(Sender), Key, 1, 9999999) then Key := #0;
end;

procedure TfWfConnUI.seSPointKeyPress(Sender: TObject; var Key: Char);
begin
  if not fWfEditorUI.CanKeyEnter(TEdit(Sender), Key, 1, 16) then Key := #0;
end;

procedure TfWfConnUI.pColorMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ColorDialog.Color := TShape(Sender).Brush.Color;
  if ColorDialog.Execute then begin
    TShape(Sender).Brush.Color := ColorDialog.Color;
    TShape(Sender).Tag := 1;
  end;
end;

end.

⌨️ 快捷键说明

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