Hi coders,
I'm a V user and I do some shapesheet stuff.
I got the guru code below from Experts-Exchage to help me add txt control to shapes missing it.
But if fails me miserably with "Variable not Found - ShapeUtils"!
All help is welcome :)
Option Explicit
'// Module: ControlHandleText
'//
'// Last Edit: 2010.05.17
'//
'// Procedures for adding the default control-handle-positioned
'// text to a selection of shape.
'//
'// Includes the SETREF behavior to handle users moving the text
'// block using the Text Block Tool, and hiding the control handle
'// when the shape has no text or HideText is true.
Private Const TextChCellName$ = "Controls.vgRepositionText"
Private Const TextChRowName$ = "vgRepositionText"
Private Const DefTextPosX_Left% = 0
Private Const DefTextPosX_Center% = 1
Private Const DefTextPosX_Right% = 2
Private Const DefTextPosY_Bottom% = 0
Private Const DefTextPosY_Middle% = 1
Private Const DefTextPosY_Top% = 2
'// Bottom-left:
Sub AddTextRepositionControlHandleToSelection_BottomLeft()
Call m_iterateSelection(DefTextPosX_Left, DefTextPosY_Bottom)
End Sub
'// Bottom-center:
Sub AddTextRepositionControlHandleToSelection_CenterBottom()
Call m_iterateSelection(DefTextPosX_Center, DefTextPosY_Bottom)
End Sub
'// Bottom-right:
Sub AddTextRepositionControlHandleToSelection_RightBottom()
Call m_iterateSelection(DefTextPosX_Right, DefTextPosY_Bottom)
End Sub
'// Middle-left:
Sub AddTextRepositionControlHandleToSelection_LeftMiddle()
Call m_iterateSelection(DefTextPosX_Left, DefTextPosY_Middle)
End Sub
'// Middle-right:
Sub AddTextRepositionControlHandleToSelection_RightMiddle()
Call m_iterateSelection(DefTextPosX_Right, DefTextPosY_Middle)
End Sub
'// Top-left:
Sub AddTextRepositionControlHandleToSelection_TopLeft()
Call m_iterateSelection(DefTextPosX_Left, DefTextPosY_Top)
End Sub
'// Top-right:
Sub AddTextRepositionControlHandleToSelection_TopRight()
Call m_iterateSelection(DefTextPosX_Right, DefTextPosY_Top)
End Sub
'// Middle-center:
Sub AddTextRepositionControlHandleToSelection_CenterMiddle()
Call m_iterateSelection(DefTextPosX_Center, DefTextPosY_Middle)
End Sub
Sub AddResetTextPositionAction()
Const ResetTextActionLabel$ = "Reset Text Position"
Const ResetTextActionRowName$ = "vgResetTextCH"
Dim shp As Visio.Shape
Dim r As Visio.Row
Dim fDefaultX As String, fDefaultY As String
For Each shp In Visio.ActiveWindow.Selection
If (shp.CellExists(TextChCellName, Visio.VisExistsFlags.visExistsAnywhere)) Then
Set r = ShapeUtils.GetOrAddActionRow(shp, ResetTextActionLabel, ResetTextActionRowName)
fDefaultX = shp.Cells(TextChCellName).Formula
fDefaultY = shp.Cells(TextChCellName & ".Y").Formula
r(Visio.VisCellIndices.visActionMenu).Formula = Chr(34) & ResetTextActionLabel$ & Chr(34)
r(Visio.VisCellIndices.visActionDisabled).Formula = _
"AND((" & fDefaultX & ")=" & TextChCellName & ",(" & fDefaultY & ")=" & TextChCellName & ".Y)"
r(Visio.VisCellIndices.visActionAction).Formula = "SETF(GETREF(" & TextChCellName & ")," & _
Chr(34) & fDefaultX & Chr(34) & ")+SETF(GETREF(" & TextChCellName & ".Y)," & Chr(34) & fDefaultY & Chr(34) & ")"
r(Visio.VisCellIndices.visActionSortKey).Formula = Chr(34) & "CheckState200" & Chr(34)
r(Visio.VisCellIndices.visActionBeginGroup).ResultIU = 1
End If
Next shp
End Sub
Private Sub m_iterateSelection(ByVal defaultXpos As Integer, _
ByVal defaultYpos As Integer)
Dim shp As Visio.Shape
For Each shp In Visio.ActiveWindow.Selection
Call m_addControlHandleText(shp, defaultXpos, defaultYpos)
Next shp
End Sub
Private Sub m_addControlHandleText(ByRef shp As Visio.Shape, _
ByVal defaultXpos As Integer, _
ByVal defaultYpos As Integer)
Dim visRow As Visio.Row
Set visRow = ShapeUtils.GetOrAddControlHandleRow(shp, TextChRowName$)
shp.Cells("TxtWidth").FormulaForceU = "GUARD(TEXTWIDTH(TheText))"
shp.Cells("TxtHeight").FormulaForceU = "GUARD(TEXTHEIGHT(TheText,TxtWidth))"
shp.Cells("TxtPinX").FormulaForceU = "SETATREF(" & TextChCellName & ".X)"
shp.Cells("TxtPinY").FormulaForceU = "SETATREF(" & TextChCellName & ".Y)"
shp.Cells("TxtLocPinX").FormulaForceU = "GUARD(TxtWidth*0.5)"
shp.Cells("TxtLocPinY").FormulaForceU = "GUARD(TxtHeight*0.5)"
Dim c As Visio.Cell
Set c = visRow(Visio.VisCellIndices.visCtlX)
Select Case defaultXpos
Case 0
c.FormulaForce = "-TxtWidth*0.5"
Case 1
c.FormulaForce = "Width*0.5"
Case 2
c.FormulaForce = "Width + TxtWidth*0.5"
End Select
Set c = visRow(Visio.VisCellIndices.visCtlY)
Select Case defaultYpos
Case 0
c.FormulaForce = "-TxtHeight*0.5"
Case 1
c.FormulaForce = "Height*0.5"
Case 2
c.FormulaForce = "Height + TxtHeight*0.5"
End Select
Set c = visRow(Visio.VisCellIndices.visCtlTip)
c.FormulaForce = Chr(34) & "Reposition Text" & Chr(34)
Set c = visRow(Visio.VisCellIndices.visCtlGlue)
c.FormulaForce = "FALSE"
Set c = visRow(Visio.VisCellIndices.visCtlXCon)
c.FormulaForce = "5*OR(HideText,STRSAME(SHAPETEXT(TheText)," & Chr(34) & Chr(34) & "))"
End Sub
Browser ID: smf
(is_webkit)
Templates: 1:
Printpage (default).
Sub templates: 4:
init,
print_above,
main,
print_below.
Language files: 1:
index+Modifications.english (default).
Style sheets: 0:
.
Hooks called: 41 (
showintegrate_autoload, cache_get_data, integrate_pre_load, integrate_load_session, integrate_verify_user, cache_get_data, integrate_user_info, integrate_load_board, cache_get_data, integrate_board_info, cache_get_data, integrate_allowed_to_general, integrate_pre_load_theme, cache_get_data, integrate_allowed_to_general, integrate_simple_actions, integrate_allowed_to_general, integrate_load_theme, integrate_pre_log_stats, cache_get_data, integrate_actions, integrate_pre_parsebbc, integrate_bbc_codes, integrate_bbc_print, integrate_post_parsebbc, integrate_allowed_to_general, integrate_allowed_to_general, integrate_allowed_to_general, integrate_allowed_to_general, integrate_allowed_to_general, integrate_allowed_to_general, integrate_allowed_to_general, integrate_allowed_to_general, integrate_allowed_to_general, integrate_allowed_to_general, integrate_menu_buttons, integrate_current_action, integrate_theme_context, integrate_allowed_to_general, integrate_allowed_to_general, integrate_allowed_to_general)
Files included: 25 - 925KB. (
show/home/iw0lkfe3x6cq/public_html/vgforum/index.php, /home/iw0lkfe3x6cq/public_html/vgforum/Settings.php, /home/iw0lkfe3x6cq/public_html/vgforum/cache/db_last_error.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/QueryString.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Subs.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Subs-Auth.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Errors.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Load.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Security.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Subs-Compat.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Subs-Db-mysql.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Cache/CacheApi.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Cache/CacheApiInterface.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Cache/APIs/FileBased.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Subs-Charset.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Unicode/Metadata.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Unicode/QuickCheck.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Session.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Logging.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Class-BrowserDetect.php, (Current Theme)/languages/index.english.php, (Current Theme)/languages/Modifications.english.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Printpage.php, (Current Theme)/Printpage.template.php, /home/iw0lkfe3x6cq/public_html/vgforum/Sources/Unicode/CaseUpper.php)
Memory used: 779KB.
Tokens:
post-login.
Cache hits: 7: 0.00094s for 22,301 bytes (
showget modSettings: 0.00039s - 19982 bytes, get known_languages: 0.00015s - 1277 bytes, get board_parents-0: 0.00011s - 2 bytes, get permissions:-1: 0.00007s - 50 bytes, get theme_settings-1: 0.00013s - 980 bytes, get log_online-update: 0.00009s - 10 bytes, get menu_buttons--1-english: 0.00001s - 0 bytes)
Cache misses: 1: (
showget menu_buttons--1-english)
Queries used: 9.
[Show Queries]