Paging of the shape properties

Started by Lars-Erik, May 06, 2008, 07:16:12 AM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Lars-Erik

Currently the custom properties that will be shown is limited to 19, after that you will need to switch views.

To this one:


The second view has alot more options, which aren't always wanted.
We don't want users to edit everything, just the value.
Also in this view hidden properties are no longer hidden...

So make the properties list longer, maybe 10 per page and then have the ability to flip true pages.

Something like this:


Visio Guy

Well, the other properties dialog -- the anchor bar window from View > Shape Data Window -- does scroll, so you can see a lot more properties.

But I have seen this request many times.
For articles, tips and free content, see the Visio Guy Website at http://www.visguy.com
Get my Visio Book! Using Microsoft Visio 2010

vojo

Use actions to set an "index" in a user cell
in each custom prop field hidden cell, have the following formula
   if(user.index = <number>, 1,0)

with multiple action entries, can group custom props by function or list 1st 10, 2nd 10, 3rd 10 or only ones of interest

Could even do a crude 'drop down' within the actions...something like
     Next selection set
     selection set 1
     selection set 2
     selection set 3
     previous selection set
     return to first menu

if next selection set hit...then menu is
     next selection set
     selection set 4
     selection set 5
     selection set 6
     previous
     return

next action = setf(getref(user.next), user.next+1)
selection action = setf(getref(user.select),<number>)
user.index = user.next*10 + user.select

action text for 4 would be
    "selection set " & if(user.next=1,"4","1")

custom.props.hidden for selection 4 would be
     if(user.index=11, 1, 0)
5 would be
     if(user.index=12, 1, 0)

for set 1
     if(user.index = 1,1,0)

etc etc etc
 

Lars-Erik

Mmm. Still would love to see a build in option of this.  Though its a nice workaround, it takes alot of work to implement in templates with many shapes. I don't think ill use this in my template because I'm afraid users will forget to check page 2 of the properties this way, thus not filling in all the information. I'll think about it.

Thanks for the idea Vojo

Visio Guy

Hey Guys,

The SortKey and/or Invisible columns in the Custom Properties ShapeSheet rows can also be used for property paging hacks. You've already touched on this in the thread, but I'll blab on anyway ;)

There are (or were) shapes that ship(ped) with Visio that use the SortKey column to categorize the data fields. So when you right-click the shape, there may be two items that pop up the properties dialog. Each right-mouse action would first use SETF to change a "which category is visible" flag in a user cell, then it would show the Shape Data dialog.

One might imagine some sort of network shape that has "Hardware Properties..." and "Security Properties..." in the right-mouse context menu.


// ShapeSheet Actions cells:
// Note: DOCMD( 1312 ) invokes the Shape Data dialog...


Actions.Hardware.Menu = "Hardware Properties..."
Actions.Hardware.Action = SETF( GETREF( User.Category ), """HW""" ) + DOCMD( 1312 )

Actions.Security.Menu = "Security Properties..."
Actions.Security.Action = SETF( GETREF( User.Category ), """SEC""" ) + DOCMD( 1312 )

// ShapeSheet User-defined cells:

User.Category = "HW" or "SEC"  //...this gets set by the right-mouse Actions...

// ShapeSheet Shape Data cells for 'Hardware':

Prop.Memory.Sortkey = "HW"
Prop.Memory.Invisible = NOT( STRSAME( User.Category, Prop.Memory.Sortkey ) )

Prop.CPU.Sortkey = "HW"
Prop.CPU.Invisible = NOT( STRSAME( User.Category, Prop.CPU.Sortkey ) )

Prop.Disk.Sortkey = "HW"
Prop.Disk.Invisible= NOT( STRSAME( User.Category, Prop.Disk.Sortkey ) )

// ShapeSheet Shape Data cells for 'Security':

Prop.VirusScanned.Sortkey = "SEC"
Prop.VirusScanned.Invisible = NOT( STRSAME( User.Category, Prop.VirusScanned.Sortkey ) )

Prop.LastUpdate.Sortkey = "SEC"
Prop.LastUpdate.Invisible = NOT( STRSAME( User.Category, Prop.LastUpdate.Sortkey ) )

Prop.CookieFlush.Sortkey = "SEC"
Prop.CookieFlush.Invisible= NOT( STRSAME( User.Category, Prop.CookieFlush.Sortkey ) )

Last note, instead of setting "HW" or "SEC", we could just use indices, like 0 and 1, then the logical test in prop...Invisible would be simpler. Of course the ShapeSheet would then be harder to read...
For articles, tips and free content, see the Visio Guy Website at http://www.visguy.com
Get my Visio Book! Using Microsoft Visio 2010

vojo

no problem

I do realize its tedious!!!

The only reason I tend to go done these labor intensive approaches is to avoid security issues running macros/VBA
(it would be great if shapesheet was more user friendly:  insert row after for all sections, variable/max width based on
contents, etc).

I will say you could compartmentize this:
A shape (top group) with generic menus and have subshapes test for their respective index or have
in top group have variables "index1", "index2", etc set 0 or 1 and have subshapes just test repective index variable.
This would require you to do the heavy lifting once, save in your "DE" stencil and pull it out as needed and
add your shapes to this group, then set the subshapes as needed then save.

I think the real usuability issue this creates is that you have to hit actions over and over to traverse the tree.
(it would be great of there was a docmd that triggered the actions menu).  I think you will run into the
same problem if you try to do this inside custom properties (you could do an analog to this but would have
to hit custom props / docmd (1312) twice to actually see your pertinent custom properties).

Frankly, since there are alot similar tools (either expensive, not as pervasive, or out right cartoonish), it would
be great if VISIO worked on beefing up the smart shapes (a more elegant shape to shape msg pipe than the
brute force one I posted, richer built in "menus" like this, or even allow direct reference to an embedded excell
spreadsheet...aka reference a cell by using a specific function...not do all the convoluted stuff to link to an external excell spreadsheet).