104 |
Fullfit the caption on the element's width
with SwimLane1 do begin with Elements.Add('<solidline><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;properties>+</a><br><solidline>+ balance: Currency = 0</so' + 'lidline><br>+ deposit(amount: Currency)<r><a 2;methods>+</a><br>+ withdraw(amount: Currency)',Null,Null) do begin CaptionSingleLine := EXSWIMLANELib_TLB.exCaptionBreakWrap; BackColor := $f8f8f8; AutoSize := False; Width := 194; Height := 76; CaptionAlign := EXSWIMLANELib_TLB.ContentAlignmentEnum($4); end; end |
103 |
Wrap the caption by <br> or "\r\n" sequence only
|
102 |
Display a custom tooltip
|
101 |
Shows the tooltip of the object moved relative to its default position
|
100 |
Add a pool to cover all visible-elements
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); Pools.Add(Null,Null,Null,Null).HeaderSize[EXSWIMLANELib_TLB.exHeaderLeft] := 24; EndUpdate(); end |
99 |
How can I ensure that a specified pool fits the surface's visible area
|
98 |
No property for the pool can be saved/restored through Undo/Redo feature
with SwimLane1 do begin AllowUndoRedo := True; with Pools.Add(OleVariant(-54),OleVariant(-47),OleVariant(244),OleVariant(112)) do begin l := StartUpdatePool; with Lane[EXSWIMLANELib_TLB.exLaneVertical] do begin Color := $f0f0f0; Children.Count := 2; end; EndUpdatePool(l); end; end |
97 |
Rename Undo/Redo commands into the control's toolbar
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; ToolBarFormat := '-1,100,102,101,|,103,104'; ToolBarCaption[103] := 'Anuleaza <img>4</img>'; ToolBarCaption[104] := '<img>5</img>Reface'; ToolBarToolTip[103] := 'Anuleaza ultima actiune UI. Pentru a anula o actiune apasati Ctrl+Z.'; ToolBarToolTip[104] := 'Inverseaza cea mai recenta operatie de anulare. Pentru a reface o actiune apasati Ctrl+Y.'; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); EndUpdate(); end |
96 |
Add Undo/Redo commands to control's toolbar
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; ToolBarFormat := '-1,100,102,101,|,103,104'; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); EndUpdate(); end |
95 |
Clear Undo/Redo queue (method 2)
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); c := UndoRedoQueueLength; UndoRedoQueueLength := 0; UndoRedoQueueLength := c; OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
94 |
Clear Undo/Redo queue (method 1)
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); AllowUndoRedo := True; OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
93 |
Removes Redo operations
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); Undo(); RedoRemoveAction(OleVariant(10),Null); OutputDebugString( RedoListAction[Null,Null] ); EndUpdate(); end |
92 |
Removes Undo operations
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); UndoRemoveAction(OleVariant(10),Null); OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
91 |
Record the UI operations as a block of undo/redo operations
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; StartBlockUndoRedo(); Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); EndBlockUndoRedo(); OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
90 |
Groups the next to current Undo/Redo Actions in a single block
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); GroupUndoRedoActions(3); OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
89 |
Limits the number of entries within the Undo/Redo queue
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; UndoRedoQueueLength := 1; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
88 |
Lists the Redo actions that can be performed on the surface
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); Undo(); OutputDebugString( RedoListAction[Null,Null] ); EndUpdate(); end |
87 |
Lists the Undo actions that can be performed on the surface
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
86 |
Checks whether the Undo operation is possible
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); Undo(); OutputDebugString( 'CanRedo' ); OutputDebugString( CanRedo ); EndUpdate(); end |
85 |
Call Redo by code
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); Undo(); Redo(); EndUpdate(); end |
84 |
Checks whether the Undo operation is possible
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); OutputDebugString( 'CanUndo' ); OutputDebugString( CanUndo ); EndUpdate(); end |
83 |
Call Undo by code
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); Undo(); EndUpdate(); end |
82 |
Save the element's properties for Undo/Redo operations, by code
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; StartBlockUndoRedo(); with Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null) do begin h := StartUpdateLink; Color := $ff; Width := 2; ShowDir := False; ShowLinkType := EXSWIMLANELib_TLB.exLinkStraight; EndUpdateLink(h); end; EndBlockUndoRedo(); EndUpdate(); end |
81 |
No color is restored for the link when Undo/Redo operation is executed
// AddElement event - A new element has been added to the surface. procedure TForm1.SwimLane1AddElement(ASender: TObject; Element : IElement); begin // Element.ShowCheckBox = True // Element.CheckBoxAlign = 2 end; with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; with Elements do begin Add('Check <b>1',OleVariant(-64),OleVariant(-64)); Add('Check <b>2',Null,Null).Checked := EXSWIMLANELib_TLB.exChecked; end; StartBlockUndoRedo(); with Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null) do begin h := StartUpdateLink; Color := $ff; Width := 2; ShowDir := False; ShowLinkType := EXSWIMLANELib_TLB.exLinkStraight; EndUpdateLink(h); end; EndBlockUndoRedo(); EndUpdate(); end |
80 |
Save the element's properties for Undo/Redo operations, by code
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Elements.Add('Item <b>1',OleVariant(-64),OleVariant(-64)); StartBlockUndoRedo(); with Elements.Add('Item <b>2',Null,Null) do begin h := StartUpdateElement; BackColor := $0; ForeColor := $ffffff; BorderColor := $ff; EndUpdateElement(h); end; EndBlockUndoRedo(); EndUpdate(); end |
79 |
No color is restored for the element when Undo/Redo operation is executed
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Elements.Add('Item <b>1',OleVariant(-64),OleVariant(-64)); StartBlockUndoRedo(); with Elements.Add('Item <b>2',Null,Null) do begin h := StartUpdateElement; BackColor := $0; ForeColor := $ffffff; BorderColor := $ff; EndUpdateElement(h); end; EndBlockUndoRedo(); EndUpdate(); end |
78 |
How can I ensure that a specified element fits the surface's visible area
|
77 |
LayoutEndChanging(exUndo), LayoutEndChanging(exRedo) or LayoutEndChanging(exUndoRedoUpdate) notifiy your application once a Undo/Redo operation is executed (CTRL+Z, CTRL+Y) or updated
|
76 |
Turn on the Undo/Redo feature
with SwimLane1 do begin BeginUpdate(); AllowUndoRedo := True; Pools.Add(OleVariant(-154),OleVariant(-82),OleVariant(244),OleVariant(122)); with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); EndUpdate(); end |
75 |
ImageSize property on 32 (specifies the size of control' icons/images/check-boxes/radio-buttons)
|
74 |
ImageSize property on 16 (default) (specifies the size of control' icons)
|
73 |
We want to have option to start/end connectors at the middle of each side of the elements
|
72 |
How can I determine the position the user clicks within the element's boundaries (Click event)
// Click event - Occurs when the user presses and then releases the left mouse button over the control. procedure TForm1.SwimLane1Click(ASender: TObject; ); begin with SwimLane1 do begin e := (IUnknown(ElementFromPoint[-1,-1]) as _TLB.Object); X := -1; Y := -1; PointToPosition(X,Y); OutputDebugString( e ); OutputDebugString( X ); OutputDebugString( Y ); end end; with SwimLane1 do begin BeginUpdate(); with Elements do begin Add('Element 1',Null,Null); Add('Element 2',OleVariant(128),OleVariant(64)); end; FitToClient(); EndUpdate(); end |
71 |
How can I determine the position the user clicks within the element's boundaries (MouseMove event)
// MouseMove event - Occurs when the user moves the mouse. procedure TForm1.SwimLane1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin with SwimLane1 do begin e := (IUnknown(ElementFromPoint[X,Y]) as _TLB.Object); PointToPosition(X,Y); OutputDebugString( e ); OutputDebugString( X ); OutputDebugString( Y ); end end; with SwimLane1 do begin BeginUpdate(); with Elements do begin Add('Element 1',Null,Null); Add('Element 2',OleVariant(128),OleVariant(64)); end; FitToClient(); EndUpdate(); end |
70 |
How can I convert the screen position (mouse) to surface position
// MouseMove event - Occurs when the user moves the mouse. procedure TForm1.SwimLane1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin with SwimLane1 do begin OutputDebugString( 'Point ' ); OutputDebugString( X ); OutputDebugString( Y ); PointToPosition(X,Y); OutputDebugString( 'Position ' ); OutputDebugString( X ); OutputDebugString( Y ); end end; with SwimLane1 do begin BeginUpdate(); with Elements do begin Add('Element <sha ;;0>1',Null,Null); Add('Element <sha ;;0>2',OleVariant(164),OleVariant(64)); Add('Element <sha ;;0>3',OleVariant(0),OleVariant(132)); end; with Links do begin Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); Add(SwimLane1.Elements.Item[OleVariant(3)],SwimLane1.Elements.Item[OleVariant(2)],Null); Add(SwimLane1.Elements.Item[OleVariant(3)],SwimLane1.Elements.Item[OleVariant(1)],Null); end; FitToClient(); AxisStyle := EXSWIMLANELib_TLB.exLinesSolid; AxisColor := RGB(128,128,128); EndUpdate(); end |
69 |
Is is possible to show just the positive coordinates
with SwimLane1 do begin BeginUpdate(); Coord := Integer(EXSWIMLANELib_TLB.exAllowPositiveOnly) Or Integer(EXSWIMLANELib_TLB.exCartesian); AxisColor := RGB(128,128,128); AxisStyle := Integer(EXSWIMLANELib_TLB.exLinesThick) Or Integer(EXSWIMLANELib_TLB.exLinesDot); ShowLinks := EXSWIMLANELib_TLB.exShowLinks; with Elements do begin Add('Element <sha ;;0>1',Null,Null); Add('Element <sha ;;0>2',OleVariant(164),OleVariant(64)); Add('Element <sha ;;0>3',OleVariant(0),OleVariant(132)); end; with Links do begin Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); Add(SwimLane1.Elements.Item[OleVariant(3)],SwimLane1.Elements.Item[OleVariant(2)],Null); end; FitToClient(); EndUpdate(); end |
68 |
Cartesian coordinates (positive coordinates are shown top-right to the origin)
|
67 |
Default coordinates (positive coordinates are shown bottom-right to the origin)
|
66 |
Is it possible to customize the path of the links orthogonally similar with Microsoft Visio tool
|
65 |
Does your control supports OLE Drag and Drop
// OLEDragDrop event - Occurs when a source component is dropped onto a target component when the source component determines that a drop can occur. procedure TForm1.SwimLane1OLEDragDrop(ASender: TObject; Data : IExDataObject;var Effect : Integer;Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin with SwimLane1 do begin OutputDebugString( Data ); end end; // OLEStartDrag event - Occurs when the OLEDrag method is called. procedure TForm1.SwimLane1OLEStartDrag(ASender: TObject; Data : IExDataObject;var AllowedEffects : Integer); begin // Data.SetData("some data to drag") end; with SwimLane1 do begin BeginUpdate(); OLEDropMode := EXSWIMLANELib_TLB.exOLEDropManual; with Pools.Add(OleVariant(-250),OleVariant(-150),OleVariant(500),OleVariant(250)) do begin Lane[EXSWIMLANELib_TLB.exLaneHorizontal].Children.Count := 2; Lane[EXSWIMLANELib_TLB.exLaneVertical].Children.Count := 1; end; with Elements do begin with Add('Click the Element wait for .5 second until + cursor is shown, to start <b>OLE Drag and Drop</b>',Null,Null) do begin CaptionSingleLine := EXSWIMLANELib_TLB.exCaptionWordWrap; AutoSize := False; X := -125; Y := -105; Width := 256; Height := 56; end; with Add('Click the Element wait for .5 second until + cursor is shown, to start <b>OLE Drag and Drop</b>',Null,Null) do begin CaptionSingleLine := EXSWIMLANELib_TLB.exCaptionWordWrap; AutoSize := False; X := -125; Width := 256; Height := 56; end; end; EndUpdate(); end |
64 |
Is it possible to disable customizing the path of a specified link
|
63 |
How do I let user customizes the link's path
with SwimLane1 do begin BeginUpdate(); AllowLinkControlPoint := EXSWIMLANELib_TLB.LinkControlPointEnum($ffffffe0 Or Integer(EXSWIMLANELib_TLB.exOrthoArrange) Or Integer(EXSWIMLANELib_TLB.exMiddleControlPoint) Or Integer(EXSWIMLANELib_TLB.exControlPoint) Or Integer(EXSWIMLANELib_TLB.exEndControlPoint) Or Integer(EXSWIMLANELib_TLB.exStartControlPoint)); with Elements do begin Add('Element <sha ;;0>A',Null,Null); Add('Element <sha ;;0>B',OleVariant(164),OleVariant(64)); Add('Element <sha ;;0>B',OleVariant(0),OleVariant(132)); end; with Links do begin Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null).CustomPath := '0.5,0.25,0.5,.75'; Add(SwimLane1.Elements.Item[OleVariant(3)],SwimLane1.Elements.Item[OleVariant(2)],Null).CustomPath := '0.5,0.25,0.5,.75'; with Add(SwimLane1.Elements.Item[OleVariant(3)],SwimLane1.Elements.Item[OleVariant(1)],Null) do begin ShowLinkType := EXSWIMLANELib_TLB.exLinkRound; StartPos := EXSWIMLANELib_TLB.LeftAlignment; end; end; Zoom := 200; FitToClient(); EndUpdate(); end |
62 |
How can I generate a picture/image/graph from my diagram
with SwimLane1 do begin with Elements do begin Add('Element A',Null,Null).ID := 'A'; Add('Element B',Null,Null).ID := 'B'; Add('Element C',Null,Null).ID := 'C'; Add('Element D',Null,Null).ID := 'D'; Add('Element E',Null,Null).ID := 'E'; Add('Element E',Null,Null).ID := 'F'; end; with Links do begin Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['B'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['C'],Null); Add(SwimLane1.Elements.Item['B'],SwimLane1.Elements.Item['D'],Null); Add(SwimLane1.Elements.Item['B'],SwimLane1.Elements.Item['C'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['E'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['F'],Null); end; DefArrange[EXSWIMLANELib_TLB.exDefArrangeCompact] := OleVariant(False); Arrange(Null); var_CopyTo := CopyTo['c:/temp/xtest.jpg']; OutputDebugString( '!!!check the file c:/temp/xtest.jpg!!!' ); end |
61 |
How can I generate a picture/image/graph from my diagram
with SwimLane1 do begin with Elements do begin Add('Element A',Null,Null).ID := 'A'; Add('Element B',Null,Null).ID := 'B'; Add('Element C',Null,Null).ID := 'C'; Add('Element D',Null,Null).ID := 'D'; Add('Element E',Null,Null).ID := 'E'; Add('Element E',Null,Null).ID := 'F'; end; with Links do begin Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['B'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['C'],Null); Add(SwimLane1.Elements.Item['B'],SwimLane1.Elements.Item['D'],Null); Add(SwimLane1.Elements.Item['B'],SwimLane1.Elements.Item['C'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['E'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['F'],Null); end; DefArrange[EXSWIMLANELib_TLB.exDefArrangeCompact] := OleVariant(False); Arrange(Null); with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do begin PrintExt := (IUnknown(SwimLane1.DefaultInterface) as EXSWIMLANELib_TLB.SwimLane); CopyTo('c:/temp/xtest.jpg'); end; OutputDebugString( '!!!check the file c:/temp/xtest.jpg!!!' ); end |
60 |
How can I print the component
with SwimLane1 do begin with Elements do begin Add('Element <sha ;;0>A',Null,Null); Add('Element <sha ;;0>B',OleVariant(0),OleVariant(76)); with Add('Element <sha ;;0>C',OleVariant(-76),OleVariant(32)) do begin AutoSize := False; Height := 32; end; with Add('Element <sha ;;0>D',OleVariant(76),OleVariant(32)) do begin AutoSize := False; Height := 32; end; end; with Links do begin with Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null) do begin StartPos := EXSWIMLANELib_TLB.CenterAlignment; EndPos := EXSWIMLANELib_TLB.CenterAlignment; end; with Add(SwimLane1.Elements.Item[OleVariant(2)],SwimLane1.Elements.Item[OleVariant(1)],Null) do begin StartPos := EXSWIMLANELib_TLB.CenterAlignment; EndPos := EXSWIMLANELib_TLB.CenterAlignment; end; Add(SwimLane1.Elements.Item[OleVariant(3)],SwimLane1.Elements.Item[OleVariant(4)],Null); with Add(SwimLane1.Elements.Item[OleVariant(4)],SwimLane1.Elements.Item[OleVariant(3)],Null) do begin StartPos := EXSWIMLANELib_TLB.LeftAlignment; EndPos := EXSWIMLANELib_TLB.RightAlignment; end; end; with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do begin PrintExt := (IUnknown(SwimLane1.DefaultInterface) as EXSWIMLANELib_TLB.SwimLane); Preview(); end; end |
59 |
How can I show direct-links
|
58 |
How can I show straight-links
|
57 |
How can I show round-links
|
56 |
I've tried to insert a "<br>" in the Caption property text and it just ignores it
with SwimLane1 do begin BeginUpdate(); with Elements do begin with Add('caption',Null,Null) do begin CaptionSingleLine := EXSWIMLANELib_TLB.exCaptionWordWrap; Caption := 'first caption<br>second caption<br>third caption'; end; end; EndUpdate(); end |
55 |
How do I align the extra-caption
with SwimLane1 do begin BeginUpdate(); with Elements do begin with Add('caption',Null,Null) do begin CaptionAlign := EXSWIMLANELib_TLB.exTopLeft; AutoSize := False; Width := 128; Height := 64; ExtraCaption := 'extra-caption'; ExtraCaptionAlign := EXSWIMLANELib_TLB.exBottomRight; end; end; EndUpdate(); end |
54 |
How can I add an extra caption
|
53 |
I am using the reserve-neighbors feature, the question is how to shift left/right the neighbors instead of up/down
with SwimLane1 do begin BeginUpdate(); AllowMoveNeighbors := EXSWIMLANELib_TLB.exMoveNeighborsHorizontally; DefArrange[EXSWIMLANELib_TLB.exDefArrangeDir] := OleVariant(1); with Elements do begin Add('Element <sha ;;0>A',Null,Null); Add('Element <sha ;;0>B ( move it )',OleVariant(16),OleVariant(32)); Add('Element <sha ;;0>C',OleVariant(128),OleVariant(0)); end; EndUpdate(); end |
52 |
I am using the reserve-neighbors feature, the question is if possible to specify the distance between neighbors
with SwimLane1 do begin BeginUpdate(); AllowMoveNeighbors := EXSWIMLANELib_TLB.exMoveNeighborsVertically; DefArrange[EXSWIMLANELib_TLB.exDefArrangeDX] := OleVariant(0); DefArrange[EXSWIMLANELib_TLB.exDefArrangeDY] := OleVariant(0); with Elements do begin Add('Element <sha ;;0>A',Null,Null); Add('Element <sha ;;0>B ( move it )',OleVariant(0),OleVariant(32)); Add('Element <sha ;;0>C',OleVariant(0),OleVariant(64)); end; EndUpdate(); end |
51 |
How do I enable the reserve-neighbors feature
|
50 |
I've noticed that recently, the elements get compacted once the Arrange method is performed. How can I prevent that
with SwimLane1 do begin with Elements do begin Add('Element A',Null,Null).ID := 'A'; Add('Element B',Null,Null).ID := 'B'; Add('Element C',Null,Null).ID := 'C'; Add('Element D',Null,Null).ID := 'D'; Add('Element E',Null,Null).ID := 'E'; Add('Element E',Null,Null).ID := 'F'; end; with Links do begin Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['B'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['C'],Null); Add(SwimLane1.Elements.Item['B'],SwimLane1.Elements.Item['D'],Null); Add(SwimLane1.Elements.Item['B'],SwimLane1.Elements.Item['C'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['E'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['F'],Null); end; DefArrange[EXSWIMLANELib_TLB.exDefArrangeCompact] := OleVariant(False); Arrange(Null); end |
49 |
How can I move an element to a specified lane/phase/pool
with SwimLane1 do begin BeginUpdate(); DefPoolHeaderCaptionFormat[True] := '<fgcolor 808080>Faza <off -4><b><font ;6>%i'; DefPoolHeaderCaptionFormat[False] := '<fgcolor 808080>Culoar <off -4><b><font ;6>%i'; with Pools.Add(OleVariant(-100),OleVariant(-100),OleVariant(250),OleVariant(180)) do begin Lane[EXSWIMLANELib_TLB.exLaneHorizontal].Children.Count := 3; Lane[EXSWIMLANELib_TLB.exLaneVertical].Children.Count := 3; Lane[EXSWIMLANELib_TLB.exLaneVertical].Children.Item[OleVariant(1)].Header.Caption := '<fgcolor FF0000><b>NEW'; end; with Elements.Add('element 1',OleVariant(200),OleVariant(200)) do begin LaneID[True] := '0:H.0,0:V.0'; end; with Elements.Add('element 2',OleVariant(200),OleVariant(200)) do begin LaneID[True] := '0:H.2,0:V.2'; end; EndUpdate(); end |
48 |
Is it possible to add a link to show from bottom/down to top/up, rather that right to left (method-2)
// AddLink event - A new link has been added to the links collection. procedure TForm1.SwimLane1AddLink(ASender: TObject; Link : ILink); begin with SwimLane1 do begin with Link do begin end; end end; with SwimLane1 do begin with Elements do begin Add('Element <sha ;;0>A',Null,Null); Add('Element <sha ;;0>B',OleVariant(48),OleVariant(48)); end; with Links do begin Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); end; end |
47 |
Is it possible to add a link to show from bottom/down to top/up, rather that right to left (method-1)
with SwimLane1 do begin with Elements do begin Add('Element <sha ;;0>A',Null,Null); Add('Element <sha ;;0>B',OleVariant(48),OleVariant(48)); end; with Links do begin with Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null) do begin StartPos := EXSWIMLANELib_TLB.DownAlignment; EndPos := EXSWIMLANELib_TLB.UpAlignment; end; end; end |
46 |
How do I enable the cross link support ( mixed )
with SwimLane1 do begin with Elements do begin Add('Element <sha ;;0>A',Null,Null); Add('Element <sha ;;0>B',OleVariant(0),OleVariant(76)); with Add('Element <sha ;;0>C',OleVariant(-76),OleVariant(32)) do begin AutoSize := False; Height := 32; end; with Add('Element <sha ;;0>D',OleVariant(76),OleVariant(32)) do begin AutoSize := False; Height := 32; end; end; with Links do begin with Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null) do begin StartPos := EXSWIMLANELib_TLB.CenterAlignment; EndPos := EXSWIMLANELib_TLB.CenterAlignment; end; with Add(SwimLane1.Elements.Item[OleVariant(2)],SwimLane1.Elements.Item[OleVariant(1)],Null) do begin StartPos := EXSWIMLANELib_TLB.CenterAlignment; EndPos := EXSWIMLANELib_TLB.CenterAlignment; end; Add(SwimLane1.Elements.Item[OleVariant(3)],SwimLane1.Elements.Item[OleVariant(4)],Null); with Add(SwimLane1.Elements.Item[OleVariant(4)],SwimLane1.Elements.Item[OleVariant(3)],Null) do begin StartPos := EXSWIMLANELib_TLB.LeftAlignment; EndPos := EXSWIMLANELib_TLB.RightAlignment; end; end; ShowLinks := Integer(EXSWIMLANELib_TLB.exShowCrossLinksMixt) Or Integer(EXSWIMLANELib_TLB.exShowExtendedLinks); end |
45 |
How do I enable the cross link support ( triangular )
with SwimLane1 do begin with Elements do begin Add('Element <sha ;;0>A',Null,Null); Add('Element <sha ;;0>B',OleVariant(0),OleVariant(76)); with Add('Element <sha ;;0>C',OleVariant(-76),OleVariant(32)) do begin AutoSize := False; Height := 32; end; with Add('Element <sha ;;0>D',OleVariant(76),OleVariant(32)) do begin AutoSize := False; Height := 32; end; end; with Links do begin with Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null) do begin StartPos := EXSWIMLANELib_TLB.CenterAlignment; EndPos := EXSWIMLANELib_TLB.CenterAlignment; end; with Add(SwimLane1.Elements.Item[OleVariant(2)],SwimLane1.Elements.Item[OleVariant(1)],Null) do begin StartPos := EXSWIMLANELib_TLB.CenterAlignment; EndPos := EXSWIMLANELib_TLB.CenterAlignment; end; Add(SwimLane1.Elements.Item[OleVariant(3)],SwimLane1.Elements.Item[OleVariant(4)],Null); with Add(SwimLane1.Elements.Item[OleVariant(4)],SwimLane1.Elements.Item[OleVariant(3)],Null) do begin StartPos := EXSWIMLANELib_TLB.LeftAlignment; EndPos := EXSWIMLANELib_TLB.RightAlignment; end; end; ShowLinks := Integer(EXSWIMLANELib_TLB.exShowCrossLinksTriangle) Or Integer(EXSWIMLANELib_TLB.exShowExtendedLinks); end |
44 |
How do I enable the cross link support ( rectangular )
with SwimLane1 do begin with Elements do begin Add('Element <sha ;;0>A',Null,Null); Add('Element <sha ;;0>B',OleVariant(0),OleVariant(76)); with Add('Element <sha ;;0>C',OleVariant(-76),OleVariant(32)) do begin AutoSize := False; Height := 32; end; with Add('Element <sha ;;0>D',OleVariant(76),OleVariant(32)) do begin AutoSize := False; Height := 32; end; end; with Links do begin with Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null) do begin StartPos := EXSWIMLANELib_TLB.CenterAlignment; EndPos := EXSWIMLANELib_TLB.CenterAlignment; end; with Add(SwimLane1.Elements.Item[OleVariant(2)],SwimLane1.Elements.Item[OleVariant(1)],Null) do begin StartPos := EXSWIMLANELib_TLB.CenterAlignment; EndPos := EXSWIMLANELib_TLB.CenterAlignment; end; Add(SwimLane1.Elements.Item[OleVariant(3)],SwimLane1.Elements.Item[OleVariant(4)],Null); with Add(SwimLane1.Elements.Item[OleVariant(4)],SwimLane1.Elements.Item[OleVariant(3)],Null) do begin StartPos := EXSWIMLANELib_TLB.LeftAlignment; EndPos := EXSWIMLANELib_TLB.RightAlignment; end; end; ShowLinks := Integer(EXSWIMLANELib_TLB.exShowCrossLinksRect) Or Integer(EXSWIMLANELib_TLB.exShowExtendedLinks); end |
43 |
How do I show a link frmo bottom to top, or reverse, not from left to right
with SwimLane1 do begin with Elements do begin Add('Element <sha ;;0>A',Null,Null); Add('Element <sha ;;0>B',OleVariant(0),OleVariant(64)); end; with Links do begin with Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null) do begin StartPos := EXSWIMLANELib_TLB.CenterAlignment; EndPos := EXSWIMLANELib_TLB.CenterAlignment; end; end; end |
42 |
Is it possible to control the links, so that they are always centered
|
41 |
What options to align the elements do I have if I use Arrange method
with SwimLane1 do begin BeginUpdate(); ShowGridLines := True; with Elements do begin h1 := Add('Top Alignment',Null,Null).ID; Add('Element',Null,Null); Add('Element',Null,Null); Add('Element',Null,Null); h2 := Add('Center Alignment',Null,OleVariant(96)).ID; Add('Element',Null,OleVariant(96)); Add('Element',Null,OleVariant(96)); Add('Element',Null,OleVariant(96)); h3 := Add('Bottom Alignment',Null,OleVariant(178)).ID; Add('Element',Null,OleVariant(192)); Add('Element',Null,OleVariant(192)); Add('Element',Null,OleVariant(192)); end; with Links do begin Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(2)],Null); Add(SwimLane1.Elements.Item[OleVariant(1)],SwimLane1.Elements.Item[OleVariant(3)],Null); Add(SwimLane1.Elements.Item[OleVariant(2)],SwimLane1.Elements.Item[OleVariant(4)],Null); Add(SwimLane1.Elements.Item[OleVariant(2)],SwimLane1.Elements.Item[OleVariant(3)],Null); Add(SwimLane1.Elements.Item[OleVariant(5)],SwimLane1.Elements.Item[OleVariant(6)],Null); Add(SwimLane1.Elements.Item[OleVariant(5)],SwimLane1.Elements.Item[OleVariant(7)],Null); Add(SwimLane1.Elements.Item[OleVariant(6)],SwimLane1.Elements.Item[OleVariant(8)],Null); Add(SwimLane1.Elements.Item[OleVariant(6)],SwimLane1.Elements.Item[OleVariant(7)],Null); Add(SwimLane1.Elements.Item[OleVariant(9)],SwimLane1.Elements.Item[OleVariant(10)],Null); Add(SwimLane1.Elements.Item[OleVariant(9)],SwimLane1.Elements.Item[OleVariant(11)],Null); Add(SwimLane1.Elements.Item[OleVariant(10)],SwimLane1.Elements.Item[OleVariant(12)],Null); Add(SwimLane1.Elements.Item[OleVariant(10)],SwimLane1.Elements.Item[OleVariant(11)],Null); end; DefArrange[EXSWIMLANELib_TLB.exDefArrangeAlign] := OleVariant(0); Arrange(OleVariant(h1)); DefArrange[EXSWIMLANELib_TLB.exDefArrangeAlign] := OleVariant(1); Arrange(OleVariant(h2)); DefArrange[EXSWIMLANELib_TLB.exDefArrangeAlign] := OleVariant(2); Arrange(OleVariant(h3)); EndUpdate(); end |
40 |
Is there an auto-arrange feature that will display the flow-chart centered and zoomed correctly after we are finished building it
|
39 |
Is it possible to change the distance between elements, when calling the Arrange method
with SwimLane1 do begin with Elements do begin Add('Element A',Null,Null).ID := 'A'; Add('Element B',Null,Null).ID := 'B'; Add('Element C',Null,Null).ID := 'C'; Add('Element D',Null,Null).ID := 'D'; end; with Links do begin Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['B'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['C'],Null); Add(SwimLane1.Elements.Item['B'],SwimLane1.Elements.Item['D'],Null); Add(SwimLane1.Elements.Item['B'],SwimLane1.Elements.Item['C'],Null); end; DefArrange[EXSWIMLANELib_TLB.exDefArrangeDX] := OleVariant(0); DefArrange[EXSWIMLANELib_TLB.exDefArrangeDY] := OleVariant(0); Arrange(Null); end |
38 |
How do I organize vertically the elements
with SwimLane1 do begin with Elements do begin Add('Element A',Null,Null).ID := 'A'; Add('Element B',Null,Null).ID := 'B'; Add('Element C',Null,Null).ID := 'C'; Add('Element D',Null,Null).ID := 'D'; end; with Links do begin Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['B'],Null); Add(SwimLane1.Elements.Item['A'],SwimLane1.Elements.Item['C'],Null); Add(SwimLane1.Elements.Item['B'],SwimLane1.Elements.Item['D'],Null); Add(SwimLane1.Elements.Item['B'],SwimLane1.Elements.Item['C'],Null); end; ShowLinksType := EXSWIMLANELib_TLB.exLinkStraight; DefArrange[EXSWIMLANELib_TLB.exDefArrangeDir] := OleVariant(1); Arrange(Null); end |
37 |
How can I add programatically a link
|
36 |
How do I get the link from the cursor
|
35 |
Is there a way to create a link which has the same start and end element
|
34 |
How can I show the pool's caption not-rotated or mirrored
with SwimLane1 do begin BeginUpdate(); AllowDesignHeader := EXSWIMLANELib_TLB.exDesignHeaderSingle; with Pools.Add(OleVariant(-150),OleVariant(-150),OleVariant(300),OleVariant(150)) do begin HeaderCaptionSupportRotate := False; HeaderSize[EXSWIMLANELib_TLB.exHeaderLeft] := 48; HeaderSize[EXSWIMLANELib_TLB.exHeaderRight] := 48; Lane[EXSWIMLANELib_TLB.exLaneHorizontal].Children.Count := 3; end; EndUpdate(); end |
33 |
How can I prevent creating sub-lanes or sub-phases
|
32 |
How do I show a complete frame/border around the header
with SwimLane1 do begin BeginUpdate(); with Pools.Add(OleVariant(-150),OleVariant(-150),OleVariant(300),OleVariant(150)) do begin HeaderSize[EXSWIMLANELib_TLB.exHeaderTop] := 32; HeaderSize[EXSWIMLANELib_TLB.exHeaderBottom] := 32; with Lane[EXSWIMLANELib_TLB.exLaneVertical].Children do begin Count := 3; Item[OleVariant(1)].Header.Pattern.Type := EXSWIMLANELib_TLB.exPatternFrameThick; end; end; EndUpdate(); end |
31 |
How do I show a complete frame/border around the lane
with SwimLane1 do begin BeginUpdate(); with Pools.Add(OleVariant(-150),OleVariant(-150),OleVariant(300),OleVariant(150)) do begin HeaderSize[EXSWIMLANELib_TLB.exHeaderTop] := 32; HeaderSize[EXSWIMLANELib_TLB.exHeaderBottom] := 32; with Lane[EXSWIMLANELib_TLB.exLaneVertical].Children do begin Count := 3; Item[OleVariant(1)].Pattern.Type := EXSWIMLANELib_TLB.exPatternFrameThick; end; end; EndUpdate(); end |
30 |
How can I define sub-lanes
with SwimLane1 do begin BeginUpdate(); with Pools.Add(OleVariant(-150),OleVariant(-150),OleVariant(300),OleVariant(250)) do begin HeaderSize[EXSWIMLANELib_TLB.exHeaderTop] := 32; HeaderSize[EXSWIMLANELib_TLB.exHeaderBottom] := 32; with Lane[EXSWIMLANELib_TLB.exLaneVertical].Children do begin Count := 3; Item[OleVariant(1)].Children.Count := 2; end; end; EndUpdate(); end |
29 |
How can I add default lanes when the user creates a new pool
// AddPool event - A new pool has been added to the surface. procedure TForm1.SwimLane1AddPool(ASender: TObject; Pool : IPool); begin // Pool.HeaderSize(1) = 24 // Pool.HeaderVisible(0) = False // Pool.HeaderVisible(1) = True // Pool.HeaderVisible(2) = False // Pool.HeaderVisible(3) = False // Pool.Lane(1).Children.Count = 2 end; with SwimLane1 do begin BeginUpdate(); Pools.Add(OleVariant(-100),OleVariant(-100),OleVariant(250),OleVariant(250)); EndUpdate(); end |
28 |
How do I prevent showing headers when the user creates new pools
// AddPool event - A new pool has been added to the surface. procedure TForm1.SwimLane1AddPool(ASender: TObject; Pool : IPool); begin with SwimLane1 do begin with Pool do begin end; end end; with SwimLane1 do begin BeginUpdate(); Pools.Add(OleVariant(-100),OleVariant(-100),OleVariant(250),OleVariant(250)).Lane[EXSWIMLANELib_TLB.exLaneHorizontal].Children.Count := 3; EndUpdate(); end |
27 |
How can I display icons on headers
with SwimLane1 do begin BeginUpdate(); Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA='); with Pools.Add(OleVariant(-100),OleVariant(-100),OleVariant(250),OleVariant(250)) do begin HeaderVisible[EXSWIMLANELib_TLB.exHeaderLeft] := False; HeaderVisible[EXSWIMLANELib_TLB.exHeaderRight] := False; HeaderVisible[EXSWIMLANELib_TLB.exHeaderBottom] := False; HeaderSize[EXSWIMLANELib_TLB.exHeaderTop] := 24; with Lane[EXSWIMLANELib_TLB.exLaneVertical].Children do begin Count := 3; Item[OleVariant(0)].Header.Caption := '<img>1</img> A'; Item[OleVariant(1)].Header.Caption := '<img>2</img> B'; Item[OleVariant(2)].Header.Caption := '<img>3</img> C'; end; end; EndUpdate(); end |
26 |
How do I change the Lane and Phase strings being displayed on the lanes
with SwimLane1 do begin BeginUpdate(); DefPoolHeaderCaptionFormat[True] := '<fgcolor 808080>Faza <off -4><b><font ;6>%i'; DefPoolHeaderCaptionFormat[False] := '<fgcolor 808080>Culoar <off -4><b><font ;6>%i'; with Pools.Add(OleVariant(-100),OleVariant(-100),OleVariant(250),OleVariant(250)) do begin Lane[EXSWIMLANELib_TLB.exLaneHorizontal].Children.Count := 3; Lane[EXSWIMLANELib_TLB.exLaneVertical].Children.Count := 3; Lane[EXSWIMLANELib_TLB.exLaneVertical].Children.Item[OleVariant(1)].Header.Caption := '<fgcolor FF0000><b>NEW'; end; EndUpdate(); end |
25 |
How can I enlarge the node while AutoSize property is True (method 2)
|
24 |
How can I enlarge the node while AutoSize property is True (method 1)
|
23 |
How can I get the lane of the element
with SwimLane1 do begin BeginUpdate(); Pools.Add(OleVariant(-150),OleVariant(-150),OleVariant(500),OleVariant(250)).Lane[EXSWIMLANELib_TLB.exLaneHorizontal].Children.Count := 3; with Elements.Add('Element',Null,Null) do begin CenterOnLane(False); lane := LaneID[False]; OutputDebugString( SwimLane1.LaneByID[OleVariant(lane)].Header.Caption ); end; EndUpdate(); end |
22 |
How can I define a different shape for elements
// AddElement event - A new element has been added to the surface. procedure TForm1.SwimLane1AddElement(ASender: TObject; Element : IElement); begin with SwimLane1 do begin with Element do begin end; end end; with SwimLane1 do begin BeginUpdate(); with VisualAppearance do begin Add(1,'gBFLBCJwBAEHhEJAAChABAQDg6AADACAxRDQNABQKAAzQFAYahuHKGAAGEaBYgmFgAQhFcZQSKUOQTDKMIziYBYJhEMQwDiAUIjIK8IhkGIcZAGIBJCjWGodQLOEgwHI' + 'ERQjEyUJAGGYqEjaO41SpAdI0PCxUScACnDQiegJRgmQ4cTJSchSAKENx1JaeYReewwAqNd5TRwNIiydZUIhqGC1YRte4ZWiCWoJVzSVDLfbgAT4X60IIlCi5Mi6MIgD' + 'ZJFDUNLUdRBMKNJ7qagaWoWOaQRbmAQQTRYLQ/TiEXZDQRAAyLJIWVRQWTAAKVbw1LiEcznGCcejzIIDaZpOh4DplWzTOgALjta4IRpvNwAbIAF4gBqsLyXXLcdQyORM' + 'iwbxZgSDhgnQbJFC6F5JhECA8CADwIgMeQnmoQJlh0eAfGcXYZjwccOHiWx/moAJ6jed4DC2dJnnmQRxBcKABBoWAcHULZLHyV4mmGOx0FmdpZAMAgQhEQBpBiRxBlQc' + 'gZFUdAMEYAxQDECBNgaUYglkCQKBGZANk0QgBgQXAQgcGI0FwJAHA6WI+DGDAjCiVg0g2Yw4mYNg7E0eJ1H+DpkAiYhBg6JApBYRMvDkJhGhKJIImEA4QledZ8H+FJlE' + 'EQhWBAJa8loRoCgkdhYBAExZHQKIXmUYRCFQI5mgWfZ4hMJpJC4boTGcCY0m0QJVBAIh2EIZZ5H4VIVAqeZ1H8M5oAmSg7g8TR1n4fQrmUQZCgqF5eEmYhYBgKQJiCD4' + 'PmaegKhWJZnAQDZkhqaYKFocYnGadZ8h+KJoiGQhfEIURAmKEAYAgeo1H8OZrAoeoyhGKYngaHInmuCpOjmKAkHMHo+iiSZxmKQoXkGCwWigRQlnqLh7jKSh7DYUYzm0' + 'CgAk+DIrFCAo3i6LYKnKWYuk6Wp4keKIqDsLh7BYLhJmaZo5mcYAijAOZtFsXpajubZLG6co8CSShtnYeJrGeVpzjwbxLnafI/mcK5ZnmPgtGuap+j6cIMB8CocDAK43' + 'AaQAwjwJwQkSaZsDcBI7jETBHBqRhxkibwWkCMQsgcG5Ii2TB+nkN5yEyJwjkqcJMh8DpKDKTIrB2TBmnyGwFkwMw8mcMpOmQbJbBiTwziyUxBDsc5sD8QJRnQKprEWT' + 'g0g0DxNlKMpsF8RpSHUTQ7BuUp0n0VxZi4MxrDSJ40DYDYHGKWJ2E2FxmyADYnGqMRBgeYh0FOLh9kccpcncJsVw7RdjvA2M4eovRmCSFkMwQIoAQEBA'); Add(2,'gBFLBCJwBAEHhEJAAChABAIDg6AADACAxRDQNABQKAAzQFAYaBmG6GAAGEaBYgmFgAQhFcZQSKUOQTDKMIziYBYJhEMQ1DAAUIjKLMIhmGAYJAGIBJCjWGodQLOEgwHI' + 'ERQjEyUpIyVAkYw5HqNaQjICoJoSOwAU47IaCIAFJSpCygKKgSjhRpoAAyU5IUgVPC4XSbD6zYDqapaTheEQyDSJNr3DCMUTlFYYLrmaQKMhqZJhWjbFSWXUpJ4pSrLM' + 'IyfTwZRJGzIK7jabLIjaP6GUDhVaYbRUL46CiEb5AAJsVpCCZrYRJOYVdQeDYbQCNLDhHQIDqaA6kZRAdQ2bpMBznPSvbovDgLWhGYqhbLCNibRC+d4HNrCYIlCjpMw3' + 'CYGIOHOMRsm0OxFjSZppneHQNFcSwRAOaprjqY4dgYe4VgGWwADucRuHYCpdByYROH8AAOC8D4NgEXwYBWEZyGAWoHg2MRCECBAkFAGhGDGUB1ByBhQkUIAPgCRAMEIE' + 'xhIuNhCEKBAlnAcwQgAYQXAIIRWEUFwJAGQ42CiCoihiLgugsYwDjSZ4MkICJWCaDZjgiZg6EIQQInSV4PmKeIyEKEBkBQDhEgwZBzjSd4SlEQJgk+E5khkRhIhSZA5F' + 'IUoVGWCQkl+FpkliTJnhXSYaFaGJOlEIhmC2ZoJgIZIaiWGYuG62IpDyT4TGSM5eGyCpmCnPIcCeQg+H6HZmnoAh6iAaBDjSL4hkUCgmgKHhlHmeIPh8BwKAqEohGkOg' + 'OHCI4pAmMoMhUKByj6CQUCkWoGhSKJpGkJoQiOJR6G4cYTmcSQuiKKRqEqPovhmBIJiCN4YEACQGFsN5lliToyiwbAKkKQoSGcWQ2HKERrhiJJvjLUR8leL5sDsBpQiU' + 'ZZpDaO4eAACZWh+LYtDsSpejQbmJnIEAuEsLJvECRgLiSH46m2W4Gl+OxpFqWo0ECSR7lQaI9m8C4+nqO4uAIHp+B4MAJmcAAeC+YgenmPwwHwHInkKRYMDaWIQGmeh3' + 'AmPpxDsCJHkWbhBAIdZDmMGZXBmRZMHwVwikUIwam0MAMC4awiEmOYyHsXwkkIMp5jMLBMDKaRiiqEBsmkNwpkwc5MyiHRrEKfxCiobIaFsQgvmsTBvD2SJuAwNBYkKS' + 'h6GsRYbDUDQ7EyVZmEwDwFiKdQ6BQf5XnYDRjD6IIujIfppBgKRcl6BZZnYXYLBWLYpn0KpglqLAtAIZoOneBsZw9RJjnQ+AYQAgCAg='); Add(3,'gBFLBCJwBAEHhEJAAChABQsMACAADACAxRDQNABQKAAzQFAYawLBgABhGUZoJhUAIIRZGMIjFDcEwxC6NIpAWCYQgUNQCQiNAzxAKQchhD4ZAIkGY4ZhyA42SBAcbyDC' + 'EShoGqPRhmCg5UjmM4oQLSFDULC0fSBBIYaSGEY5QoqIYfArGQYQTRUPyUdoOBIACwLChWLA1CTZdowSKoYTXBq3IgqerIapmSYaV7YNh3VY1IR/JSVJYlaYJDoyNI4T' + 'hHc5xVLtfSfAiiJrxOKcTAAFJ0QKFUbRUz+OgBTpvaZxagaSpSG5WRpWEI5PAdN4zTa7YDsS67FiSG5oWpEFq2eAGdzlVLMMqhG5gAxqNKzbLfMCXfJIbyrBIcYLoXIt' + 'CqFYskMTwxlgAY+haFZRlQZQ4HwHR3AoMx5jEch2lMfZGl8eY+jYXBvBsAAHFeRQDmuRR8nsSI2CoEgIEIRQBiQYwdAcUZIGUUIQhGGAGECRAhDYChGFERAMCgQheEcG' + 'QgHkEAwkICx2BCFoAj+B5iAiBgigiYhIgid4JkIQBwm2ChijiKgsguYpokYLYMmKQIiDYDgjgEAg6g6Y5InYPoPmOIAiEKEJFgkFIvhGYwIlIMoSTmAhOGgJJJC4UoSi' + 'USIcncKZlp8WoOAOAxeF6FBlEkNhPGcZgJhYU4ZiMMweGoDAmkGfhuhWJoJDgIIUCYeZWGGHYkhkWhuB+ZYhEIcIUmcKZSHeIJmgoFgyCeaIBgKCoYCgGYSHiI5oEoQg' + 'siKBgKCCH4SOAfoGiQaZKPmJ5jGCIJniiZgpk6DonGkKomgOHpnjqFoCiaawKioSYXg0eoGi6KZrBqIo6hgEIal6GosiwCpuDIBgsEqDJniYa4bVuFYkDqepKjCLQJii' + 'R4XCyawGk+JpGgsZIXjabRbEKV4disSYwDCH5OlsIpWjmaA5HKUomCYOp+l6OgkhoUoWiMLpbH6bw7G0KRynOHYuGuXobhWB4MAaaoaimO52naB4hnkYInhERYLBAGAh' + 'nECw+H2BwhkmSg7kMMIqHyb49hAECAg='); Add(4,'gBFLBCJwBAEHhEJAAChABOIDg6AADACAxRDQNABQKAAzQFAYaBqGCGAAGEZRSgmFgAQhFcZQTCsBw7DCEYxjOAwFgmEQxDIOIBQSKYcwiGQaRrkIYgEiONoaR7HchSFI' + 'cIxPFKRBhkKYocjyG5GRoBcIyXAcRSYAB2Q4ESoKShePw5UDTcCzHR8RxEDKNRLpOQbDgOUZTWbVUaDKIsXzZCKHbZhG4YRp6CZKRpYEB1bYtKTRKqLKrpeTbOoSHolT' + 'biIATTYlG4THyEZQrDIaDjOSIXZaGFzwSDWGgBJ60bRwHIaAxGWoHRxfEZVfBONQHMSBc5xa64JyHAImWrcUbWfaYYZ0AC6MRkK8cXABPQANixKZsCizE4DDbTYzjRhe' + 'C2F4nnEOJRG0BRXEWOICEocByiyCJTiQOJVGYIQ8gofpDgsG5uF+ah6D2Xp+GGP5gkCfwRHofwOnuSB2heVpZnIUZQhAIQJBQBoRgwdAdEcIYVEIQhGGAMQDBCBJYEUG' + 'gNhCEMcHsXIkCIAAMIILQWAkAZDjYJIJiIWIeCqCRMHiNI/guYwIkYMoMmMSJWDaDZjgiTIzg6Yo4iIPoPGIdAmECChiFKXhGAQJIAmISgQCSSQ2E6E5lAkRhShSZRJF' + 'QOoVkCaRkAqFpQhIPhehCY54hYQoRCOYo+GaExOnmJhghqZhJjIYYbmaaJ0l+HJkiCYgtDGY5RkIegfmeSY6GOD4MnoBh1D2aBJkYbYhmcCgigaIhOloEJ3h0aATD4bg' + 'WCkQoehaGAnniHhNgwKI6HaConmiSYCF4I5niGQoLDmaoAiKKoaE6eJ2H+HZnFoeohigKwqCwGItmqA4ejIHgrkIHo+iuEA4h6PGMmIHo1i0LIKk6SoMCSWwcm2LAkis' + 'AAAgmQgLFYcw3myaxmkmG4GgsdIXjebYjjaVQIC0eQFAONADguBpqjaaIKlwGIuG4GwOkWOYAAqDoljqbIrmIJ41m4O5iGYK5FAwBp0ikag7mqbI+GoCwyEyPgpBCQwO' + 'j0KRBGKFgpnAbAjXWMQ8EaeIuG6a5SHWHZxFyBoIjEbA8FQCJJmiZAmmOORwHyCwXgkbwqn8LYoDKOZNAmJpinyOzTm8aZrBWH5QhGAxCCedBMm8L5Fi+fAEFCPgvksV' + 'p0h8NQBn8RpLi7NQKBALxLHyF43EaDRPDOMoxkqXp4kYaRLlMTQIDWbQeguR5iluBxCBgNBCH6dIJnaSZjF+LQZgGQSh5DOFEa4dQsi5GILsaA8ReBuHoEYZ4ZwkDFFw' + 'JEYo2grjcHOFUAoFA7gJFqFEDYrQyilC+PwNgyRBBLH4C8FIzxiD8CeBYEgUQ9CtAiEwYgtQyDqDWPUTjBhXBrCmAcKoJQ6iGF6DEMA8BpieA4BgMQdxDg9GSOkLQgRC' + 'jhHiDMV4Ewfh3AoGULIiBujRAuJ0c4+gEi4ASOkRAfhWgjCKKEFACCAg'); Add(5,'gBFLBCJwBAEHhEJAAChABGgDg6AADACAxRDQNABQKAAzQFAYZBwGiGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziYBYJAKCQ3DTJUBjIKcIhiGsgAzAJIUaw1DqGY7nKZoRi' + 'oAIoSAMM7DCKUQSLGyQZqBSCQGjsAI+OyHAiABSNJwtHygIRoKqqHg2PoiSAEUZhdRlHShKSqLQiaIRSDUJZsW5EIyjBZ8EznOqbJApOKrCgOTYaWbUdSxPTEUwTFiXJ' + 'gmKRKIoiOAAY7IEgSFLsThrIKha5yDI4bxyAwXQjeYABbY0E4HQarcqzCrKGp/HYJXyAGgQHYkB5JAaQMBtGpoJrCeKQXDdVyXFwdET1BLZQA2HeUTTRVCScqnaTMZh8' + 'DgGxniKfYbngAxFkmVJAnSdougwDhRlMGZ1GEPR9HQapDGWWhyCMe4ugQDx9naYRvm6cQfAUJ47m8cofBYAZOGCHg2mETgCBCERAGkGJHEGVByBkUwUCSIgChAMQIE2B' + 'JRiQVQDAoEIWlWIxOgGBBcGyBQYlQXAkAcDpYh4KYKCKKI2CyC5ijONJvgySZ4lQWINkKCJmCWDpjkQaJPg+UA4joMYQiQI4eEYHAkgAYhKBgJJCh43JlAkEgwhSJA5E' + '4VoVE6UQCFoL5lkkBhXhUCR5gYOQKAieYUneGZlEmJhfhqZYJFIWgQCWQp+F6GxigmHJ3BoJ4JmYMw7maKZSH6HxoAiQhvhwZ1VHYFAogmBIXiAZ55jKDIQgeChGG+G5' + 'BAoVJHiWaBYkIecznoOoeiMZYCj6IoYmcGhckeCophONoKh4aZagKLYrGkEZggeLJkCmThGDmZg5m6L4nmuOoCHaGJNnsBooAAIopCAcIZEiep2kqLwpnqCIviIBQLA4' + 'dolEECZakuK4sksYhYAgLZLOsQJLHuBBIjibR7haWYfGwawhAOJpmBuGpajuJRJkYbxAmgORynCOZvgqApejcAgIG4OYUA0e5em+PhokQXhKAYKx8AsCo+FEcJDA6D5M' + 'nwLwDkTWJulQQJuDEIphC2cQsHYbJEDCYJBAOLBrDIHwekUMBIiITgpmMcRhAOKYDgyRwnkyYwMjcK4cnAfAnCmSgzkoGhnkGZ45k6SIxjMTPIFCZOZEKSBxA0Fpui2b' + '5LFoKIqGoaY/FKUY1gmdpQjOKxbBIV4zi0DQ6nmOhmFkUophCLILEMV5YiWCZkH+W5nl2HxfiiMwQmMTZOmqLhaLsx9iUH6JAMI1hCDjECFQawhghjBG2DseoGQzhNHw' + 'DwTAMAsgTEeCUZI1Q5jFHyLodYmWxB8GsPEVIPwxhSD6Awb4dgJD2HsAQQIoAQEB'); end; Background[EXSWIMLANELib_TLB.exElementBackColor] := $ffffff; with Elements do begin Add('Rectangular',OleVariant(0),OleVariant(0)).Shape := EXSWIMLANELib_TLB.exShapeRectangular; Add('Round',OleVariant(82),OleVariant(0)).Shape := EXSWIMLANELib_TLB.exShapeRound; Add('Rhomb',OleVariant(138),OleVariant(0)).Shape := EXSWIMLANELib_TLB.exShapeRhomb; Add('Circle',OleVariant(196),OleVariant(0)).Shape := EXSWIMLANELib_TLB.exShapeCircle; with Add('EBN 1',OleVariant(0),OleVariant(36)) do begin BackColor := $1000000; Border := EXSWIMLANELib_TLB.exNoLines; end; with Add('EBN 2',OleVariant(54),OleVariant(36)) do begin BackColor := $2000000; Border := EXSWIMLANELib_TLB.exNoLines; end; with Add('EBN 3',OleVariant(108),OleVariant(36)) do begin BackColor := $3000000; Border := EXSWIMLANELib_TLB.exNoLines; end; with Add('EBN 4 ',OleVariant(160),OleVariant(36)) do begin BackColor := $4000000; Border := EXSWIMLANELib_TLB.exNoLines; end; with Add('EBN 5 ',OleVariant(220),OleVariant(36)) do begin BackColor := $5000000; MinHeight := 64; MinWidth := 64; Border := EXSWIMLANELib_TLB.exNoLines; end; end; ScrollPos[False] := -160; EndUpdate(); end |
21 |
Is it possible to add an inner control on the surface
// OleEvent event - Occurs once an inside control fires an event. procedure TForm1.SwimLane1OleEvent(ASender: TObject; Element : IElement;Ev : IOleEvent); begin with SwimLane1 do begin OutputDebugString( Ev ); end end; with SwimLane1 do begin with Elements do begin with Add('activex hosting',Null,Null) do begin Type := EXSWIMLANELib_TLB.exElementHostControl; Control := 'Forms.CommandButton.1'; Caption := 'Command Button'; Height := 64; Width := 128; ElementFormat := '14;"caption"/"client"'; CaptionAlign := EXSWIMLANELib_TLB.exTopCenter; end; end; end |
20 |
How can I create a copy of the element
|
19 |
How can I define an opaque background for elements
|
18 |
How can I show a different context-menu for all elements
|
17 |
How can I show a different context-menu for element
|
16 |
How can I change the design-modes being shown on the control's toolbar
|
15 |
How can I change the default header's background color
with SwimLane1 do begin BeginUpdate(); with Pools.Add(OleVariant(-250),OleVariant(-150),OleVariant(500),OleVariant(250)) do begin Lane[EXSWIMLANELib_TLB.exLaneHorizontal].Children.Count := 4; Lane[EXSWIMLANELib_TLB.exLaneVertical].Children.Count := 4; end; Background[EXSWIMLANELib_TLB.exPoolHorizontalHeaderBackColor] := $ff00; Background[EXSWIMLANELib_TLB.exPoolVerticalHeaderBackColor] := $c000; EndUpdate(); end |
14 |
How can I remove the Design item from the control's toolbar, to be locked ( no-design )
with SwimLane1 do begin ToolBarFormat := '-1,100,101'; DesignMode := EXSWIMLANELib_TLB.exDesignLock; end |
13 |
How can I remove/disable the Color and Display-Grid from the surface's context menu
|
12 |
How can I change the element's context-menu when the user right-clicks the element
|
11 |
How do I prevent showing the context-menu when user right-clicks the surface
|
10 |
How do I create parent-child (tree) lanes
with SwimLane1 do begin BeginUpdate(); with Pools.Add(OleVariant(-250),OleVariant(-150),OleVariant(500),OleVariant(250)) do begin HeaderSize[EXSWIMLANELib_TLB.exHeaderTop] := 32; HeaderVisible[EXSWIMLANELib_TLB.exHeaderBottom] := False; with Lane[EXSWIMLANELib_TLB.exLaneVertical].Children do begin Count := 2; with Item[OleVariant(0)].Children do begin Count := 2; Item[OleVariant(0)].Header.Caption := 'Phase <b>1.1'; Item[OleVariant(1)].Header.Caption := 'Phase <b>1.2'; end; end; end; EndUpdate(); end |
9 |
How do I create a pool with horizontal and lanes
with SwimLane1 do begin BeginUpdate(); with Pools.Add(OleVariant(-250),OleVariant(-150),OleVariant(500),OleVariant(250)) do begin Lane[EXSWIMLANELib_TLB.exLaneHorizontal].Children.Count := 4; Lane[EXSWIMLANELib_TLB.exLaneVertical].Children.Count := 4; end; EndUpdate(); end |
8 |
How do I add programatically a pool with horizontal lanes
|
7 |
How do I add programatically a pool with vertical lanes
|
6 |
How can I change the toolbar's visual appearance
with SwimLane1 do begin VisualAppearance.Add(1,'c:\exontrol\images\normal.ebn'); Background[EXSWIMLANELib_TLB.exToolBarAppearance] := $1000000; Background[EXSWIMLANELib_TLB.exToolBarBackColor] := $ffffff; Background[EXSWIMLANELib_TLB.exToolBarForeColor] := $282828; Background[EXSWIMLANELib_TLB.exToolBarButtonDownBackColor] := $1606060; Background[EXSWIMLANELib_TLB.exToolBarButtonDownForeColor] := $f0f0f0; Background[EXSWIMLANELib_TLB.exToolBarButtonHotBackColor] := $1a0a0a0; Background[EXSWIMLANELib_TLB.exToolBarButtonHotForeColor] := $ffffff; end |
5 |
How can I change the toolbar's background color
|