181 |
exUndo, An Undo operation is performed (CTR + Z), exRedo, A Redo operation is performed (CTR + Y). exUndoRedoUpdate, The Undo/Redo queue is updated
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( FormatABC('value case (default:value;32:`exUndoRedoUpdate`;33:`exUndo`;34:`exRedo`)',OleVariant(Operation),Null,Null) ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( FormatABC('value case (default:value;32:`exUndoRedoUpdate`;33:`exUndo`;34:`exRedo`)',OleVariant(Operation),Null,Null) ); end end; with Surface1 do begin BeginUpdate(); AllowUndoRedo := True; AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); Add('Node <b>3',OleVariant(64),OleVariant(-64)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); OutputDebugString( 'Press CTRL+Z to Undo, CTRL+Y to Redo' ); end |
180 |
exLinkObjects, the user creates an element on the surface. The AllowLinkObjects property specifies the keys combination to allow user to link elements on the surface
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( FormatABC('value = 9 ? `exLinkObjects` : value',OleVariant(Operation),Null,Null) ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( FormatABC('value = 9 ? `exLinkObjects` : value',OleVariant(Operation),Null,Null) ); end end; with Surface1 do begin BeginUpdate(); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); Add('Node <b>3',OleVariant(64),OleVariant(-64)); end; EndUpdate(); OutputDebugString( 'Hold SHIFT, click an element, and drag to another element to create a link between them' ); end |
179 |
exEditObject, the user edits the element's caption
// Click event - Occurs when the user presses and then releases the left mouse button over the control. procedure TForm1.Surface1Click(ASender: TObject; ); begin // ElementFromPoint(-1,-1).Edit(0) end; // LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( FormatABC('value = 8 ? `exEditObject` : value',OleVariant(Operation),Null,Null) ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( FormatABC('value = 8 ? `exEditObject` : value',OleVariant(Operation),Null,Null) ); end end; with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); Add('Node <b>3',OleVariant(64),OleVariant(-64)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); OutputDebugString( 'Click an element to edit its caption' ); end |
178 |
exCreateObject, the user creates an element on the surface. The AllowCreateObject property specifies the keys combination to allow user to create elements on the surface
|
177 |
exSelectNothing, the user clicks an empty zone of the surface. The AllowSelectNothing property specifies the keys combination to allow user to select nothing on the surface
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( FormatABC('value = 6 ? `exSelectNothing` : value',OleVariant(Operation),Null,Null) ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( FormatABC('value = 6 ? `exSelectNothing` : value',OleVariant(Operation),Null,Null) ); end end; with Surface1 do begin BeginUpdate(); AllowSelectNothing := True; AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null).Selected := True; Add('Node <b>3',OleVariant(64),OleVariant(-64)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); OutputDebugString( 'Select an element, and then click outside to select nothing' ); end |
176 |
exSelectObject, the user clicks the object to get it selected. The AllowSelectObject property specifies the keys combination to allow user to select the object
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( FormatABC('value = 5 ? `exSelectObject` : value',OleVariant(Operation),Null,Null) ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( FormatABC('value = 5 ? `exSelectObject` : value',OleVariant(Operation),Null,Null) ); end end; with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); Add('Node <b>3',OleVariant(64),OleVariant(-64)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); OutputDebugString( 'Hold ALT and click, then drag to select elements within the drawn rectangle. Click an element to select it. CTRL + CLick to unse' + 'lect it' ); end |
175 |
exMoveObject, the user moves the object. The AllowMoveObject property specifies the keys combination to allow user to move the object
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( FormatABC('value = 4 ? `exMoveObject` : value',OleVariant(Operation),Null,Null) ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( FormatABC('value = 4 ? `exMoveObject` : value',OleVariant(Operation),Null,Null) ); end end; with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); Add('Node <b>3',OleVariant(64),OleVariant(-64)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); OutputDebugString( 'Move an element' ); end |
174 |
exResizeObject, the user resizes the object. The AllowResizeObject property specifies the keys combination to allow user to resize the object
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( FormatABC('value = 3 ? `exResizeObject` : value',OleVariant(Operation),Null,Null) ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( FormatABC('value = 3 ? `exResizeObject` : value',OleVariant(Operation),Null,Null) ); end end; with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)).AutoSize := False; Add('Node <b>2',Null,Null).AutoSize := False; Add('Node <b>3',OleVariant(64),OleVariant(-64)).AutoSize := False; end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); OutputDebugString( 'Resize an element' ); end |
173 |
exSurfaceHome, the user clicks the Home button on the control's toolbar, so the surface is restored to original position. The Home method has the same effect
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( FormatABC('value = 2 ? `exSurfaceHome` : value',OleVariant(Operation),Null,Null) ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( FormatABC('value = 2 ? `exSurfaceHome` : value',OleVariant(Operation),Null,Null) ); end end; with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); Add('Node <b>3',OleVariant(64),OleVariant(-64)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); OutputDebugString( 'Click the Home button' ); end |
172 |
exSurfaceZoom, the user magnifies or shrinks the surface. The AllowZoomSurface property specifies the keys combination to allow user to zoom the surface
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( FormatABC('value = 1 ? `exSurfaceZoom` : value',OleVariant(Operation),Null,Null) ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( FormatABC('value = 1 ? `exSurfaceZoom` : value',OleVariant(Operation),Null,Null) ); end end; with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); Add('Node <b>3',OleVariant(64),OleVariant(-64)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); OutputDebugString( 'Click and drag the surface to reposition it' ); end |
171 |
exSurfaceMove, the user scrolls or moves the surface. The AllowMoveSurface property specifies the keys combination to allow user to move / scroll the surface
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( FormatABC('value = 0 ? `exSurfaceMove` : value',OleVariant(Operation),Null,Null) ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( FormatABC('value = 0 ? `exSurfaceMove` : value',OleVariant(Operation),Null,Null) ); end end; with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); Add('Node <b>3',OleVariant(64),OleVariant(-64)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); OutputDebugString( 'Click and drag the surface to reposition it' ); end |
170 |
FormatABC method formats the A,B,C values based on the giving expression and returns the result
|
169 |
FreezeEvents(Freeze) method prevents firing any event. For instance, FreezeEvents(True) freezes the control's events, no no event is fired, until the FreezeEvents(False) is called
// Event event - Notifies the application once the control fires an event. procedure TForm1.Surface1Event(ASender: TObject; EventID : Integer); begin with Surface1 do begin OutputDebugString( EventParam[-2] ); end end; with Surface1 do begin FreezeEvents(True); OutputDebugString( 'No event is fired after FreezeEvents(True) call' ); BeginUpdate(); AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); end |
168 |
The exAllowChangeFrom(0x20)/exAllowChangeTo(0x40) flag of LinkControlPointEnum type allows the user to adjust the link's from/to element by dragging and dropping the start control point (requires the exStartControlPoint/exEndControlPoint flag)
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( Operation ); OutputDebugString( FocusLink.ID ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( Operation ); OutputDebugString( FocusLink.ID ); end end; with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); Add('Node <b>3',OleVariant(64),OleVariant(-64)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); FocusLink := 'L1'; EndUpdate(); end |
167 |
The LayoutStartChanging(exFocusLink)/LayoutEndChanging(exFocusLink) event notifies your application when the user focuses on a new link
// LayoutEndChanging event - Notifies your application once the control's layout has been changed. procedure TForm1.Surface1LayoutEndChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutEndChanging' ); OutputDebugString( Operation ); OutputDebugString( FocusLink ); end end; // LayoutStartChanging event - Occurs when the control's layout is about to be changed. procedure TForm1.Surface1LayoutStartChanging(ASender: TObject; Operation : LayoutChangingEnum); begin with Surface1 do begin OutputDebugString( 'LayoutStartChanging' ); OutputDebugString( Operation ); OutputDebugString( FocusLink ); end end; with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint); with Elements do begin Add('Node <b>1',OleVariant(-64),OleVariant(-64)); Add('Node <b>2',Null,Null); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],'L1'); EndUpdate(); end |
166 |
Focus a link
|
165 |
The caption is displayed on the back, so the picture overrides it. How can I place the caption on the foreground
|
164 |
Draws a frame arround the link's arrow
|
163 |
Draws a frame arround the arrow for all links
with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := EXSURFACELib_TLB.LinkControlPointEnum($ffffff80 Or Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exOrthoArrange) Or Integer(EXSURFACELib_TLB.exMiddleControlPoint) Or Integer(EXSURFACELib_TLB.exControlPoint) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_TLB.exStartControlPoint)); LinksArrowSize := 8; LinksArrowColor := RGB(255,255,255); LinksArrowFrameColor := RGB(0,0,0); 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null).CustomPath := '0.5,0.25,0.5,.75'; Add(Surface1.Elements.Item[OleVariant(3)],Surface1.Elements.Item[OleVariant(2)],Null).CustomPath := '0.5,0.25,0.5,.75'; with Add(Surface1.Elements.Item[OleVariant(3)],Surface1.Elements.Item[OleVariant(1)],Null) do begin ShowLinkType := Integer(EXSURFACELib_TLB.exLinkStraight) Or Integer(EXSURFACELib_TLB.exLinkDirect); StartPos := EXSURFACELib_TLB.LeftAlignment; end; end; FitToClient(); EndUpdate(); end |
162 |
Change the size to display the arrow of the link
|
161 |
Change the size to display the arrows for all links
|
160 |
Extends the caption on the element's width
with Surface1 do begin with Elements.Add('<solidline> <c><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAAgAA4AAwisXjMYH0TAECMY' + 'AjsCMwAM4AkMGhEGOUei0Yl8bkQAOAAlsGmsSlp0h0SgkCF8DgsNhUMhEKiESkYAoMlk8phssmcCltLMNTAFOlFDlc2l0amMxjomAAjAA5AA2tMaHcfplZk1blVDqtuo' + 'NXjoAAEBA=>▲</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;e64=gA8ABjAA+AECM' + 'wAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEB' + 'A==>▲</a><br>+ withdraw(amount: Currency)',Null,Null) do begin ID := 'Account'; X := -128; CaptionSingleLine := EXSURFACELib_TLB.exCaptionBreakWrap; AutoSize := False; Width := 256; Height := AutoHeight; CaptionAlign := EXSURFACELib_TLB.ContentAlignmentEnum($4); end; end |
159 |
Gets the width/height of the element to fit its content ( as if the AutoSize property is True )
// AnchorClick event - Occurs when an anchor element is clicked. procedure TForm1.Surface1AnchorClick(ASender: TObject; AnchorID : WideString;Options : WideString); begin with Surface1 do begin with Elements.Item['Account'] do begin Height := AutoHeight; end; end end; with Surface1 do begin with Elements.Add('<solidline> <c><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAAgAA4AAwisXjMYH0TAECMY' + 'AjsCMwAM4AkMGhEGOUei0Yl8bkQAOAAlsGmsSlp0h0SgkCF8DgsNhUMhEKiESkYAoMlk8phssmcCltLMNTAFOlFDlc2l0amMxjomAAjAA5AA2tMaHcfplZk1blVDqtuo' + 'NXjoAAEBA=>▲</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;e64=gA8ABjAA+AECM' + 'wAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEB' + 'A==>▲</a><br>+ withdraw(amount: Currency)',Null,Null) do begin ID := 'Account'; X := -128; CaptionSingleLine := EXSURFACELib_TLB.exCaptionBreakWrap; AutoSize := False; Width := 256; Height := AutoHeight; CaptionAlign := EXSURFACELib_TLB.ContentAlignmentEnum($4); end; end |
158 |
Expandable-caption
// AnchorClick event - Occurs when an anchor element is clicked. procedure TForm1.Surface1AnchorClick(ASender: TObject; AnchorID : WideString;Options : WideString); begin with Surface1 do begin OutputDebugString( AnchorID ); end end; with Surface1 do begin with Elements.Add('<solidline> <c><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAAgAA4AAwisXjMYH0TAECMY' + 'AjsCMwAM4AkMGhEGOUei0Yl8bkQAOAAlsGmsSlp0h0SgkCF8DgsNhUMhEKiESkYAoMlk8phssmcCltLMNTAFOlFDlc2l0amMxjomAAjAA5AA2tMaHcfplZk1blVDqtuo' + 'NXjoAAEBA=>▲</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;e64=gA8ABjAA+AECM' + 'wAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEB' + 'A==>▲</a><br>+ withdraw(amount: Currency)',Null,Null) do begin ID := 'Account'; X := -256; Y := -164; CaptionSingleLine := EXSURFACELib_TLB.exCaptionBreakWrap; CaptionAlign := EXSURFACELib_TLB.ContentAlignmentEnum($4); end; with Elements.Add('<solidline> <c><b>Person</b></solidline><br>+ name: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAAgAA4AAwisXjMYH0TAECMYAjsCMwA' + 'M4AkMGhEGOUei0Yl8bkQAOAAlsGmsSlp0h0SgkCF8DgsNhUMhEKiESkYAoMlk8phssmcCltLMNTAFOlFDlc2l0amMxjomAAjAA5AA2tMaHcfplZk1blVDqtuoNXjoAAE' + 'BA=>▲</a><br><solidline># birth: Date</solidline><br>+ getCurrentAge(): int<r><a 2;e64=gA8ABjAA+AECMwAM8DABvABshoAOQAEAAHA' + 'AGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEBA==>▲</a>',Null,Null) do begin ID := 'Person'; Y := -164; CaptionSingleLine := EXSURFACELib_TLB.exCaptionBreakWrap; end; with Elements.Add('<solidline> <c><b>Student</b></solidline><br><solidline>+ classes: List<Course> <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAA+AAgAEC' + 'McTi4AMwAM4AjMGhEGOUVAA4AAwk8plcqihwAElg0wiUlOkOiUEgQvgcFhsKhkIhUQiUUnccj0gn0jmMagUlowAMNOpEfkMNkkmlEqrctjQmAAjAA5AA2sssHcbnkdq1' + 'Ln1QtVSjQAAEBA==>▲</a></solidline><br>- attend(class: Course)<r><a 2;e64=gA8ABjAA+AECMwAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAM' + 'oAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEBA==>▲</a><br>- sleep()',Null,Null) do begin ID := 'Student'; Y := -64; CaptionSingleLine := EXSURFACELib_TLB.exCaptionBreakWrap; end; with Links.Add(Surface1.Elements.Item['Account'],Surface1.Elements.Item['Student'],Null) do begin Caption := '<fgcolor A0A0A0><solidline 808080> <c><b>Link</b></solidline><br># count: number <r><a ;exp=12992>➤</a>'; end; end |
157 |
Expandable-caption
|
156 |
Fullfit the caption on the element's width
with Surface1 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 := EXSURFACELib_TLB.exCaptionBreakWrap; BackColor := $f8f8f8; AutoSize := False; Width := 194; Height := 76; CaptionAlign := EXSURFACELib_TLB.ContentAlignmentEnum($4); end; end |
155 |
Wrap the caption by <br> or "\r\n" sequence only
|
154 |
Display a custom tooltip
|
153 |
Shows the tooltip of the object moved relative to its default position
|
152 |
Rename Undo/Redo commands into the control's toolbar
with Surface1 do begin BeginUpdate(); AllowUndoRedo := True; ToolBarFormat := '-1,100,101,|,103,104'; ToolBarCaption[100] := '<img>1</img>Acasa'; ToolBarCaption[103] := 'Anuleaza <img>3</img>'; ToolBarCaption[104] := '<img>4</img>Reface'; ToolBarToolTip[100] := 'Restabileste vizualizarea la origine.'; ToolBarToolTip[101] := 'Mareste vizualizarea.'; 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.'; with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-48)); Add('Item <b>2',OleVariant(32),OleVariant(32)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); EndUpdate(); end |
151 |
Add Undo/Redo commands to control's toolbar
with Surface1 do begin BeginUpdate(); AllowUndoRedo := True; ToolBarFormat := '-1,100,101,|,103,104'; with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-48)); Add('Item <b>2',OleVariant(32),OleVariant(32)); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); EndUpdate(); end |
150 |
Clear Undo/Redo queue (method 2)
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); c := UndoRedoQueueLength; UndoRedoQueueLength := 0; UndoRedoQueueLength := c; OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
149 |
Clear Undo/Redo queue (method 1)
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); AllowUndoRedo := True; OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
148 |
Removes Redo operations
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); Undo(); RedoRemoveAction(OleVariant(10),Null); OutputDebugString( RedoListAction[Null,Null] ); EndUpdate(); end |
147 |
Removes Undo operations
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); UndoRemoveAction(OleVariant(10),Null); OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
146 |
Record the UI operations as a block of undo/redo operations
|
145 |
Groups the next to current Undo/Redo Actions in a single block
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); GroupUndoRedoActions(3); OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
144 |
Limits the number of entries within the Undo/Redo queue
with Surface1 do begin BeginUpdate(); AllowUndoRedo := True; UndoRedoQueueLength := 1; with Elements do begin Add('Item <b>1',OleVariant(-64),OleVariant(-64)); Add('Item <b>2',Null,Null); end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
143 |
Lists the Redo actions that can be performed on the surface
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); Undo(); OutputDebugString( RedoListAction[Null,Null] ); EndUpdate(); end |
142 |
Lists the Undo actions that can be performed on the surface
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); OutputDebugString( UndoListAction[Null,Null] ); EndUpdate(); end |
141 |
Checks whether the Undo operation is possible
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); Undo(); OutputDebugString( 'CanRedo' ); OutputDebugString( CanRedo ); EndUpdate(); end |
140 |
Call Redo by code
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); Undo(); Redo(); EndUpdate(); end |
139 |
Checks whether the Undo operation is possible
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); OutputDebugString( 'CanUndo' ); OutputDebugString( CanUndo ); EndUpdate(); end |
138 |
Call Undo by code
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); Undo(); EndUpdate(); end |
137 |
Save the element's properties for Undo/Redo operations, by code
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null) do begin h := StartUpdateLink; Color := $ff; Width := 2; ShowDir := False; ShowLinkType := EXSURFACELib_TLB.exLinkStraight; EndUpdateLink(h); end; EndBlockUndoRedo(); EndUpdate(); end |
136 |
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.Surface1AddElement(ASender: TObject; Element : IElement); begin // Element.ShowCheckBox = True // Element.CheckBoxAlign = 2 end; with Surface1 do begin BeginUpdate(); AllowUndoRedo := True; with Elements do begin Add('Check <b>1',OleVariant(-64),OleVariant(-64)); Add('Check <b>2',Null,Null).Checked := EXSURFACELib_TLB.exChecked; end; StartBlockUndoRedo(); with Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null) do begin h := StartUpdateLink; Color := $ff; Width := 2; ShowDir := False; ShowLinkType := EXSURFACELib_TLB.exLinkStraight; EndUpdateLink(h); end; EndBlockUndoRedo(); EndUpdate(); end |
135 |
Save the element's properties for Undo/Redo operations, by code
with Surface1 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 |
134 |
No color is restored for the element when Undo/Redo operation is executed
with Surface1 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 |
133 |
How can I ensure that a specified element fits the surface's visible area
|
132 |
LayoutEndChanging(exUndo), LayoutEndChanging(exRedo) or LayoutEndChanging(exUndoRedoUpdate) notifiy your application once a Undo/Redo operation is executed (CTRL+Z, CTRL+Y) or updated
|
131 |
Turn on the Undo/Redo feature
// AddElement event - A new element has been added to the surface. procedure TForm1.Surface1AddElement(ASender: TObject; Element : IElement); begin // Element.ShowCheckBox = True // Element.CheckBoxAlign = 2 end; with Surface1 do begin BeginUpdate(); AllowUndoRedo := True; with Elements do begin Add('Check <b>1',OleVariant(-64),OleVariant(-64)); Add('Check <b>2',Null,Null).Checked := EXSURFACELib_TLB.exChecked; end; Links.Add(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); EndUpdate(); end |
130 |
ImageSize property on 32 (specifies the size of control' icons/images/check-boxes/radio-buttons)
// AddElement event - A new element has been added to the surface. procedure TForm1.Surface1AddElement(ASender: TObject; Element : IElement); begin // Element.ShowCheckBox = True end; with Surface1 do begin BeginUpdate(); ImageSize := 32; Font.Size := 16; Images('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'); with VisualAppearance do begin Add(1,'gBFLBCJwBAEHhEJAAEhABfICg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6' + 'CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EM' + 'RwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsOatVqjG5sYjcGC3La9cz3Pq/bpuDCbMxuaK1TrYXr1TTrcofBDldAxXRKDxR' + 'DWVhLnYOw9i6XxzjuXprCaOoKB6EwbiCZZCGOdZYlcT4xHmbhMnwNxtn+G5bmqdZ7n4Pw/i+X5zm+dQ9g4CAFjsfAJheOI8HsDoWDWTB/lwSAQkmA5PEgRYoDyDwYFYF' + 'oFmGCBmBqBphDgRJ0gOTIYBGRB/lyRh0iSCZbjYWJzgWDwIjYLoLmMCJGDKDJjBgWgqG6YhyhGHRzA2aJ1mCABOAiOJvhCZBJBYRoRmSCQmEqEQimkAZgg8TZnDCV4Uk' + 'mCUmBKZYJGYWoWCUUhiFMNZckNUh2GENoaGaGZmgmJhqhqZpGGIEx2GYIxSGGGJdggWJth2Z4JmYeoemeSZ2H6H4hGmQhihyTRHGYLg7CiCgmgqIpokoNoOiOaJ4jqAo' + 'chqaZGgaCxpAoZoaiaaJqEmWIcGgShcnCJwqEqFoR3YOoFlgchflqNouiuawHmWSYqGkWZQhcatzmaOoumuSp2j6L5bBaKo0GQKRnGGCxqiyCwmkqMpsksNpOGUGI7A0' + 'ew1G0Rxlg0PptgsZuDG2Sx2l6N5tnYNZZjUDRXDCVo5l2FoymqOpukuNpujubwLjmWY5k0ZwxkaFxYlWdp6j6b5Lnafo/nABQdg2FxcUsY5BkmXAkmeQpckwNRrkKTh8' + 'CSHZBk4NwyC4KxxgMDwakOMZDn8GgwnGAo2C4cwthMcwmCcMoHBMHRehwTIghySYNksZwcH4HBMEsHx5hyPItiweYxnwSZEH4Mozn0fR+DMAo7EYJ50gkdZelKdNql2U' + 'gJn0GIukwH4HicQRai2GI4mSVpNl0dZGledgNgcYpYDWUx3FsOQi5YV5anaTY3G6W53A2RxylydxFjiaxEFCCgBBAQ=='); Add(2,'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' + 'RBCCQAgQEA=='); Add(3,'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'); end; Background[EXSURFACELib_TLB.exCheckBoxState0] := $1000000; Background[EXSURFACELib_TLB.exCheckBoxState1] := $2000000; Background[EXSURFACELib_TLB.exCheckBoxState2] := $3000000; with Elements do begin var_Element := Surface1.Elements.Add('Element Check 1',OleVariant(-64),OleVariant(-64)); Add('Child',Null,Null).Parent := (IUnknown(var_Element) as EXSURFACELib_TLB.Element); with var_Element do begin Pictures := '1/2'; Expanded := False; end; with Add('Element Check 2',OleVariant(32),OleVariant(96)) do begin Checked := EXSURFACELib_TLB.exChecked; Pictures := '1,2'; end; end; Home(); EndUpdate(); end |
129 |
ImageSize property on 16 (default) (specifies the size of control' icons)
// AddElement event - A new element has been added to the surface. procedure TForm1.Surface1AddElement(ASender: TObject; Element : IElement); begin // Element.ShowCheckBox = True end; with Surface1 do begin BeginUpdate(); ImageSize := 16; Images('gBJJgBAIDAAEg4ACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjMLjABAAgjUYkUnlUrlktl0vmExmUzmk1m03nE5nU7nkrQCAntBoVDolFo1HoM/ADAplLptImdMYFOqd' + 'SqlXq1QrVbrlGpVWsFNrNdnNjsk7pQAtNroFnt0sh8Yr9iulTuNxs1Eu8OiT/vsnsNVutXlk/oGGtVKxGLxWNtsZtN8iUYuNvy0Zvd+xNYwdwvl4p870GCqc8vOeuVtt' + 'mp1knyOayWVy+WzN/ze1wOElenm+12WUz/Bv2/3UyyWrzeutux2GSyGP2dQ33C1ur3GD3M4zUNzHdlWjq/E3nGzVpjWv4HA7fRy/Tv2IrN8rPW6nZ3ve7mUlfu20Z8ac' + 'vQyb+vY9jasYoDwMm+LytVBDqKG3z8O3Cb8P+mkAuY9cCQ2uL4KaxDKvkp8RNLEjqugnrwQo/UWPzFyeQw5sNLZFENrI4kOqU66pw8uzmOKvTqNqjULJvGL1JO48GtTG' + 'sbLdEL3scxLlyiw8dQeoUVxdLTtyKmUjwGlslRPJsnK1HbAKbKCrsQo8uQk/CeP44iaR/ATnTNPLvyxPU+z9P9AUDQVBowiofJXQ6Oo+kKMpIkjztE4TKn4P6JowfgPn' + 'wD5/nAjB8AOeAPo0eAA1IAFH07UhAIMpYAVIYFHqBUhwVjV1S1EtQAHxW65V0AZwAeuQAnwB5gAPYViEDVhwAHTQBkCjB4gOhwDmCyhH0sACAg=='); with Elements do begin var_Element := Surface1.Elements.Add('Element Check 1',OleVariant(-64),OleVariant(-64)); Add('Child',Null,Null).Parent := (IUnknown(var_Element) as EXSURFACELib_TLB.Element); with var_Element do begin Pictures := '1/2'; Expanded := False; end; with Add('Element Check 2',OleVariant(0),OleVariant(32)) do begin Checked := EXSURFACELib_TLB.exChecked; Pictures := '1,2'; end; end; Home(); EndUpdate(); end |
128 |
We want to have option to start/end connectors at the middle of each side of the elements
|
127 |
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.Surface1Click(ASender: TObject; ); begin with Surface1 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 Surface1 do begin BeginUpdate(); with Elements do begin Add('Element 1',Null,Null); Add('Element 2',OleVariant(128),OleVariant(64)); end; FitToClient(); EndUpdate(); end |
126 |
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.Surface1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin with Surface1 do begin e := (IUnknown(ElementFromPoint[X,Y]) as _TLB.Object); PointToPosition(X,Y); OutputDebugString( e ); OutputDebugString( X ); OutputDebugString( Y ); end end; with Surface1 do begin BeginUpdate(); with Elements do begin Add('Element 1',Null,Null); Add('Element 2',OleVariant(128),OleVariant(64)); end; FitToClient(); EndUpdate(); end |
125 |
How can I convert the screen position (mouse) to surface position
// MouseMove event - Occurs when the user moves the mouse. procedure TForm1.Surface1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin with Surface1 do begin OutputDebugString( 'Point ' ); OutputDebugString( X ); OutputDebugString( Y ); PointToPosition(X,Y); OutputDebugString( 'Position ' ); OutputDebugString( X ); OutputDebugString( Y ); end end; with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); Add(Surface1.Elements.Item[OleVariant(3)],Surface1.Elements.Item[OleVariant(2)],Null); Add(Surface1.Elements.Item[OleVariant(3)],Surface1.Elements.Item[OleVariant(1)],Null); end; FitToClient(); AxisStyle := EXSURFACELib_TLB.LinesStyleEnum($c0); AxisColor := RGB(128,128,128); EndUpdate(); end |
124 |
Is is possible to show just the positive coordinates
with Surface1 do begin BeginUpdate(); Coord := Integer(EXSURFACELib_TLB.exAllowPositiveOnly) Or Integer(EXSURFACELib_TLB.exCartesian); AxisColor := RGB(128,128,128); AxisStyle := Integer(EXSURFACELib_TLB.exLinesThick) Or Integer(EXSURFACELib_TLB.exLinesDot4); ShowLinks := EXSURFACELib_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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); Add(Surface1.Elements.Item[OleVariant(3)],Surface1.Elements.Item[OleVariant(2)],Null); end; FitToClient(); EndUpdate(); end |
123 |
Cartesian coordinates (positive coordinates are shown top-right to the origin)
|
122 |
Default coordinates (positive coordinates are shown bottom-right to the origin)
|
121 |
Is it possible to customize the path of the links orthogonally similar with Microsoft Visio tool
|
120 |
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.Surface1OLEDragDrop(ASender: TObject; Data : IExDataObject;var Effect : Integer;Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin with Surface1 do begin OutputDebugString( Data ); end end; // OLEStartDrag event - Occurs when the OLEDrag method is called. procedure TForm1.Surface1OLEStartDrag(ASender: TObject; Data : IExDataObject;var AllowedEffects : Integer); begin // Data.SetData("some data to drag") end; with Surface1 do begin OLEDropMode := EXSURFACELib_TLB.exOLEDropManual; with Elements.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 := EXSURFACELib_TLB.exCaptionWordWrap; AutoSize := False; Width := 256; Height := 56; end; end |
119 |
Is it possible to disable customizing the path of a specified link
|
118 |
How do I let user customizes the link's path
with Surface1 do begin BeginUpdate(); AllowLinkControlPoint := EXSURFACELib_TLB.LinkControlPointEnum($ffffff80 Or Integer(EXSURFACELib_TLB.exAllowChangeTo) Or Integer(EXSURFACELib_TLB.exAllowChangeFrom) Or Integer(EXSURFACELib_TLB.exOrthoArrange) Or Integer(EXSURFACELib_TLB.exMiddleControlPoint) Or Integer(EXSURFACELib_TLB.exControlPoint) Or Integer(EXSURFACELib_TLB.exEndControlPoint) Or Integer(EXSURFACELib_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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null).CustomPath := '0.5,0.25,0.5,.75'; Add(Surface1.Elements.Item[OleVariant(3)],Surface1.Elements.Item[OleVariant(2)],Null).CustomPath := '0.5,0.25,0.5,.75'; with Add(Surface1.Elements.Item[OleVariant(3)],Surface1.Elements.Item[OleVariant(1)],Null) do begin ShowLinkType := Integer(EXSURFACELib_TLB.exLinkStraight) Or Integer(EXSURFACELib_TLB.exLinkDirect); StartPos := EXSURFACELib_TLB.LeftAlignment; end; end; Zoom := 200; FitToClient(); EndUpdate(); end |
117 |
How can I generate a picture/image/graph from my diagram
with Surface1 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(Surface1.Elements.Item['A'],Surface1.Elements.Item['B'],Null); Add(Surface1.Elements.Item['A'],Surface1.Elements.Item['C'],Null); Add(Surface1.Elements.Item['B'],Surface1.Elements.Item['D'],Null); Add(Surface1.Elements.Item['B'],Surface1.Elements.Item['C'],Null); Add(Surface1.Elements.Item['A'],Surface1.Elements.Item['E'],Null); Add(Surface1.Elements.Item['A'],Surface1.Elements.Item['F'],Null); end; DefArrange[EXSURFACELib_TLB.exDefArrangeCompact] := OleVariant(False); Arrange(Null); var_CopyTo := CopyTo['c:/temp/xtest.jpg']; OutputDebugString( '!!!check the file c:/temp/xtest.jpg!!!' ); end |
116 |
How can I generate a picture/image/graph from my diagram
with Surface1 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(Surface1.Elements.Item['A'],Surface1.Elements.Item['B'],Null); Add(Surface1.Elements.Item['A'],Surface1.Elements.Item['C'],Null); Add(Surface1.Elements.Item['B'],Surface1.Elements.Item['D'],Null); Add(Surface1.Elements.Item['B'],Surface1.Elements.Item['C'],Null); Add(Surface1.Elements.Item['A'],Surface1.Elements.Item['E'],Null); Add(Surface1.Elements.Item['A'],Surface1.Elements.Item['F'],Null); end; DefArrange[EXSURFACELib_TLB.exDefArrangeCompact] := OleVariant(False); Arrange(Null); with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do begin PrintExt := (IUnknown(Surface1.DefaultInterface) as EXSURFACELib_TLB.Surface); CopyTo('c:/temp/xtest.jpg'); end; OutputDebugString( '!!!check the file c:/temp/xtest.jpg!!!' ); end |
115 |
How can I print the component
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null) do begin StartPos := EXSURFACELib_TLB.CenterAlignment; EndPos := EXSURFACELib_TLB.CenterAlignment; end; with Add(Surface1.Elements.Item[OleVariant(2)],Surface1.Elements.Item[OleVariant(1)],Null) do begin StartPos := EXSURFACELib_TLB.CenterAlignment; EndPos := EXSURFACELib_TLB.CenterAlignment; end; Add(Surface1.Elements.Item[OleVariant(3)],Surface1.Elements.Item[OleVariant(4)],Null); with Add(Surface1.Elements.Item[OleVariant(4)],Surface1.Elements.Item[OleVariant(3)],Null) do begin StartPos := EXSURFACELib_TLB.LeftAlignment; EndPos := EXSURFACELib_TLB.RightAlignment; end; end; with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do begin PrintExt := (IUnknown(Surface1.DefaultInterface) as EXSURFACELib_TLB.Surface); Preview(); end; end |
114 |
How can I show direct-links
|
113 |
How can I show straight-links
|
112 |
How can I show round-links
|
111 |
I've tried to insert a "<br>" in the Caption property text and it just ignores it
with Surface1 do begin BeginUpdate(); with Elements do begin with Add('caption',Null,Null) do begin CaptionSingleLine := EXSURFACELib_TLB.exCaptionWordWrap; Caption := 'first caption<br>second caption<br>third caption'; end; end; EndUpdate(); end |
110 |
How do I align the extra-caption
with Surface1 do begin BeginUpdate(); with Elements do begin with Add('caption',Null,Null) do begin AutoSize := False; Width := 128; Height := 64; ExtraCaption := 'extra-caption'; ExtraCaptionAlign := EXSURFACELib_TLB.exBottomRight; end; end; EndUpdate(); end |
109 |
How can I add an extra caption
|
108 |
I am using the reserve-neighbors feature, the question is how to shift left/right the neighbors instead of up/down
with Surface1 do begin BeginUpdate(); AllowMoveNeighbors := EXSURFACELib_TLB.exMoveNeighborsHorizontally; DefArrange[EXSURFACELib_TLB.exDefArrangeDir] := OleVariant(1); AllowInsertObject := False; 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 |
107 |
I am using the reserve-neighbors feature, the question is if possible to specify the distance between neighbors
with Surface1 do begin BeginUpdate(); AllowMoveNeighbors := EXSURFACELib_TLB.exMoveNeighborsVertically; DefArrange[EXSURFACELib_TLB.exDefArrangeDX] := OleVariant(0); DefArrange[EXSURFACELib_TLB.exDefArrangeDY] := OleVariant(0); AllowInsertObject := False; 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 |
106 |
How do I enable the reserve-neighbors feature
with Surface1 do begin BeginUpdate(); AllowMoveNeighbors := EXSURFACELib_TLB.exMoveNeighborsVertically; AllowInsertObject := False; 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 |
105 |
I've noticed that recently, the elements get compacted once the Arrange method is performed. How can I prevent that
with Surface1 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(Surface1.Elements.Item['A'],Surface1.Elements.Item['B'],Null); Add(Surface1.Elements.Item['A'],Surface1.Elements.Item['C'],Null); Add(Surface1.Elements.Item['B'],Surface1.Elements.Item['D'],Null); Add(Surface1.Elements.Item['B'],Surface1.Elements.Item['C'],Null); Add(Surface1.Elements.Item['A'],Surface1.Elements.Item['E'],Null); Add(Surface1.Elements.Item['A'],Surface1.Elements.Item['F'],Null); end; DefArrange[EXSURFACELib_TLB.exDefArrangeCompact] := OleVariant(False); Arrange(Null); end |
104 |
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.Surface1AddLink(ASender: TObject; Link : ILink); begin with Surface1 do begin with Link do begin end; end end; with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null); end; end |
103 |
Is it possible to add a link to show from bottom/down to top/up, rather that right to left (method-1)
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null) do begin StartPos := EXSURFACELib_TLB.DownAlignment; EndPos := EXSURFACELib_TLB.UpAlignment; end; end; end |
102 |
How do I enable the cross link support ( mixed )
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null) do begin StartPos := EXSURFACELib_TLB.CenterAlignment; EndPos := EXSURFACELib_TLB.CenterAlignment; end; with Add(Surface1.Elements.Item[OleVariant(2)],Surface1.Elements.Item[OleVariant(1)],Null) do begin StartPos := EXSURFACELib_TLB.CenterAlignment; EndPos := EXSURFACELib_TLB.CenterAlignment; end; Add(Surface1.Elements.Item[OleVariant(3)],Surface1.Elements.Item[OleVariant(4)],Null); with Add(Surface1.Elements.Item[OleVariant(4)],Surface1.Elements.Item[OleVariant(3)],Null) do begin StartPos := EXSURFACELib_TLB.LeftAlignment; EndPos := EXSURFACELib_TLB.RightAlignment; end; end; ShowLinks := Integer(EXSURFACELib_TLB.exShowCrossLinksMixt) Or Integer(EXSURFACELib_TLB.exShowExtendedLinks); end |
101 |
How do I enable the cross link support ( triangular )
with Surface1 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(Surface1.Elements.Item[OleVariant(1)],Surface1.Elements.Item[OleVariant(2)],Null) do begin StartPos := EXSURFACELib_TLB.CenterAlignment; EndPos := EXSURFACELib_TLB.CenterAlignment; end; with Add(Surface1.Elements.Item[OleVariant(2)],Surface1.Elements.Item[OleVariant(1)],Null) do begin StartPos := EXSURFACELib_TLB.CenterAlignment; EndPos := EXSURFACELib_TLB.CenterAlignment; end; Add(Surface1.Elements.Item[OleVariant(3)],Surface1.Elements.Item[OleVariant(4)],Null); with Add(Surface1.Elements.Item[OleVariant(4)],Surface1.Elements.Item[OleVariant(3)],Null) do begin StartPos := EXSURFACELib_TLB.LeftAlignment; EndPos := EXSURFACELib_TLB.RightAlignment; end; end; ShowLinks := Integer(EXSURFACELib_TLB.exShowCrossLinksTriangle) Or Integer(EXSURFACELib_TLB.exShowExtendedLinks); end |