Visio Guy

Visio Discussions => ShapeSheet & Smart Shapes => Topic started by: Nadasdaos on February 23, 2017, 07:09:01 PM

Title: Property inheritance from "line timeline" to "block interval"
Post by: Nadasdaos on February 23, 2017, 07:09:01 PM
Hi guys,
I hope you can help me with this problem: basically, when building a timeline, "block intervals" that you drop on a "line timeline" inherit some properties of the said "line timeline" and i would like to override that.
My case:
first create a "line timeline", then drop a "block interval" on it, open the shapesheet for that "block interval" and you will see many properties written in blue instead of black, many of them beginning with "Line timeline!"... followed by a property of the "line timeline". These blue properties are inherited from the "line timeline" when you drop the "block interval" on the "line timeline".
My problem is with Shape Transform > Height.
I created a stencil of "block interval" (the stencil being unlinked to the "line timeline") where I can modify the height to different values through a data link. However, when I drop that block interval stencil on the line timeline, my original height is ignored and replaced by the inherited "Line timeline!Height" property.
Where & how can I change that inheritance so that the inherited property would be "Line timeline!Height*[my stencil property i called "YSize"]

thank you guys as I am losing my hair on this one!

N.
Title: Re: Property inheritance from "line timeline" to "block interval"
Post by: wapperdude on February 24, 2017, 02:16:39 AM
The root of the problem is that the timeline shapes have a great deal of code behind them.  Non-accessible code.  So, anything you do gets clobbered by this code. 

But, you can always "re-clobber" using setf/getref.

Add a new user defined row.  Then enter something like:  =setf(getref(height),Line timeline!Height * YSize).  The caveat, I believe, all block intervals will inherit the resulting height.  That is, they'll all have a uniform height.

HTH
Wapperdude
Title: Re: Property inheritance from "line timeline" to "block interval"
Post by: Yacine on February 24, 2017, 03:06:57 PM
Would "GUARD" protect the tailored height cell or does the addin overwrite the formula?
Title: Re: Property inheritance from "line timeline" to "block interval"
Post by: wapperdude on February 24, 2017, 03:14:08 PM
My experience with Visio add-ins is they over-write.  Guarding is ineffective in such cases.  In fact, the timeline shapes tend to be very resistant to anything but superficial changes.

Wapperdude
Title: Re: Property inheritance from "line timeline" to "block interval"
Post by: Nadasdaos on February 24, 2017, 09:04:45 PM
Hi Wapperdude,

Thanks very much on that one! It already kind of works (which makes me more than half happy).
I had to put the SETF with "" in order for it to work (else it doesn't recognize the timeline reference)
=SETF(GetRef(Height),"Line timeline!Height*Prop.YSize")

I am saying that it kind of works because as I link the stencil with the data link, the SETF is not applied :-(
However by selecting all shapes + entering in the Shapesheet + going into the user defined cell with the SETF and revalidating it (just pressing enter). Then it gets applied, each shape gets rescaled with its own YSize. And it continues being applied when synching the data link, as long as I don't change the stencil.
But if I change the stencil and reinitiate the data link, I have to go through revalidating the SETF cell again.

So just a last question in case you have a cue: any way to automate the application of the SETF without getting into the shapesheet?

Cheers and thanks again,

N.