Automatic object resizing on card changes

John Brozycki johnb at hvc.rr.com
Fri Nov 4 11:07:04 EDT 2011


A big thanks to BvG and Mark for your replies.

Not only did BvG provide the "quick and dirty" answer:

on opencard
 revUpdateGeometry
end opencard

...but both BvG and Mark provided sample code code for handling resizing on your own.

Thanks!  I really appreciate it, guys!

-John


On Nov 4, 2011, at 7:44 AM, Mark Schonewille wrote:

> Hi John,
> 
> This really depends on the situation. Here's a very simple example:
> 
> on resizeStack
> put the rect if this cd into myRect
> add 16 to item 1 of myRect
> add 16 to item 2 of myRect
> subtract 16 from item 3 of myRect
> subtract 16 from item 4 of myRect
> set the rect of fld 1 to myRect
> end resizeStack
> 
> By setting object sizes and positions relative to the card rect, you avoid many problems. If e.g. you calculate the new points based on the current points relative to the card rect, your objects will slowly change location:
> 
> // wrong
> on resizeStack theOldW,theOldH,theNewW,theNewH
> put the loc of fld 1 into myLoc
> put item 1 of fld myLoc / theOldW into myRatio
> put myRatio * theNewW & comma & item 2 of myLoc into myNewLoc
> set the loc of fld 1 to myNewLoc
> end resizeStack
> 
> The script above will eventually round off the loc of the object and the location may be off by one pixel. Instead, try to find a way to set the location directly:
> 
> // correct
> on resizeStack
> set the loc of fld 1 to item 1 of the loc of this cd & comma & item 2 of the loc of fld 1
> end resizeStack
> 
> The second (quite obvious) approach will never cause rounding problems. Btw, the second and third script change the location of a field horizontally, relative to the right side of a card, keeping the field horizontally centered.
> 
> --
> Best regards,
> 
> Mark Schonewille
> 
> Economy-x-Talk Consulting and Software Engineering
> Homepage: http://economy-x-talk.com
> Twitter: http://twitter.com/xtalkprogrammer
> KvK: 50277553
> 
> Become our partner in sales http://qery.us/16r Start selling Color Converter today. 20% commission!
> 
> On 3 nov 2011, at 18:46, John Brozycki wrote:
> 
>> Hello,
>> 
>> Given a resizable stack with, say, two cards that both have objects that have their geometry set to scale on resize (like a text field) what is the best way to get objects on card 2 to automatically resize when card one is resized and then a button is selected to go to card 2?  It doesn't do this automatically- you have to resize the second card.  Make the second card much larger than the first was, and when you go back the objects on the first card are all off.  With each card, you have to manually resize for the objects to adjust properly.  Shouldn't this happen automatically when you configure the geometry settings?  I've tried using revWChangeWindowSize on my button to the next card, but it doesn't appear to do anything for object sizing.  Sorry if this is a basic question, but I can't find how to do this.
>> 
>> Much thanks,
>> John
>> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the Use-livecode mailing list