Hi Peter

I made a lesson because of your confusion, maybe it helps? It's called "How to 
manage and position objects when a stack is resized". If you create the code by 
yourself, then you at least know who messed up your stack ;)

http://tinyurl.com/2adxkwq (leads to runrev.com lesson site)

As for the Geometry manager, it works by adding hidden customproperties to 
every object. A front- or backscript that is part of revGeneral will check for 
these properties, and adjusts the objects rectangle. revGeneral is a button 
that is part of the IDE, and also added by the application builder, whenever 
you build a standalone. The properties are hidden by the IDE, and they are also 
called revGeneral (note that there's other, non-geometry stuff stored there 
too, like standalone builder settings). As you found out, the geometry manager 
is not only highly unreliable, but also confusing and moving objects every 
which way almost instantly. 

I am sure this explanation doesn't help you tho. So rest assured that coding 
your own is not only less confusing, but also easier to maintain. So, to get 
rid of the geometry manager stuff, you just need to delete all of the 
cpropsets. For example, from the multiline message box, or some other script 
you can do the following (Warning: only do it this way if you do _not_ use 
custom properties yourself, and don't mind to set up the application builders 
settings from scratch):

repeat for the number of cards
  add one to y
  repeat for the number of controls
    add one to x
    set the custompropertysets of control x of card y to ""
  end repeat
  set the custompropertysets of card y to ""
end repeat
set the custompropertysets of this stack to ""

On 21 Dec 2010, at 20:29, Peter Haworth wrote:

> Thanks Damien.  I've downloaded it and will give it a try.
> 
> Pete Haworth
> 
> On Dec 21, 2010, at 10:47 AM, Damien Girard wrote:
> 
>> 
>> You can also take a look at NativeGeometry that will handle for you all the
>> geometry management ;)
>> 
>> http://www.nativesoft.fr/nativegeometry
>> 
>> Kind Regards,
>> 
>> Damien Girard
>> NativeSoft, France.
>> 
>> -----Message d'origine-----
>> De : use-livecode-boun...@lists.runrev.com
>> [mailto:use-livecode-boun...@lists.runrev.com] De la part de Robert
>> Brenstein
>> Envoyé : mardi 21 décembre 2010 19:36
>> À : How to use LiveCode
>> Objet : Re: Geometry Manager
>> 
>> 
>> On 21.12.2010 at 10:13 Uhr -0800 Peter Haworth apparently wrote:
>>> Just started trying to figure out the geometry manager.  It appears
>>> there is already a default for every control to scale it when the
>>> user resizes the window.  Problem is, it doesn't happen.  If I
>>> resize my window, all the controls on it that fall completely
>>> outside the boundary of the window disappear and any that are
>>> partially outside the window are cut off.
>>> 
>>> I'd also add that I tried looking in the LC preferences to see if
>>> there was a setting to enable/disable the geometry manager and, with
>>> glx2 installed, the only preferences that I could get to were the
>>> glx2 ones, not the LC ones.
>>> 
>>> Pete Haworth
>>> 
>> 
>> As others suggested, rolling your own geometry management is
>> recommended for more complex situations. The built-in geometry
>> manager works but to a certain complexity only, and when it breaks,
>> the time and effort invested in setting it up will got to waste. You
>> have indicated that your stack is not simple, so going with the
>> built-in manager is not recommended. Others have already hinted that
>> geometry management is not that difficult to program. Typically, you
>> will have
>> 
>> on preOpenCard
>> -- accommodate user-inflicted resizing which occured on another card
>> myGeomMgr (the width of this cd),(the height of this cd)
>> end preOpenCard
>> 
>> on resizeStack pNewWidth,pNewHeight
>>  -- accommodate user-inflicted resizing on this card
>>  myGeomMgr pNewWidth,pNewHeight
>> end resizeStack
>> 
>> on myGeomMgr pNewWidth,pNewHeight
>> -- card level geometry manager
>> constant cMargin = 25
>> # do the magic with bg objects
>> myBgGeomMgr pNewWidth,pNewHeight -- optional
>> # do the magic with card groups
>> myGrpGeomMgr pNewWidth,pNewHeight -- optional
>> # do the magic with cd objects
>> ...
>>  -- an example resizing a field
>> set the width of fld kListFld to pNewWidth-2*cMargin
>> set the left of fld kListFld to cMargin
>> ...
>> end myGeomMgr
>> 
>> Such a setup allows you to call your geometry management also from
>> scripts, and allows you to pass parameters between scripts, if
>> needed. Normally, one positions/resizes objects relative to card
>> edges and other objects, dealing with width and height of each
>> object. The order of positioning/resizing is often critical.
>> 
>> Robert
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode@lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode@lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription 
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to