use-revolution Digest, Vol 1, Issue 54

Jim Hurley jhurley at infostations.com
Tue Oct 28 09:55:36 EST 2003


>
>--- Jim Hurley <jhurley at infostations.com> wrote:
>>  I am trying to set two different window sizes, one
>>  for the smaller
>>  iMax and one for all larger screens.
>>
>  > I have used the Geometry manager to resize various
>>  controls for the
>>  two window sizes. (I set min and max window sizes.)
>>
>>  It works well when I manually resize the window for
>>  each card.
>>
>>  But I would like to run through all the cards in a
>>  preopenstack
>>  handler in a way which is invisible to the user.
>>  However when I use
>>  the following
>>
>>     repeat with i = 1 to the number of cards
>  >      send "revUpdateGeometry" to card i
>>     end repeat
>>
>>  only the  current card gets the message. When I use
>>
>>    Lock screen
>>    repeat with i = 1 to the number of cards
>>       go to card i
>  >      revUpdateGeometry
>>     end repeat
>>  unlock screen
>>
>>  each card gets the messages but the screen doesn't
>>  lock.
>>
>  > Question: How do I  update update the geometry of
>>  each card without
>  > flashing through each card?
>>
>>  Thanks,
>>
>>  Jim
>>
>
>Hi Jim,
>
>Currently the Geometry Manager only works for the card
>you are on (its script references 'this card' and the
>like ; plus it locks/unlocks the screen all by
>itself).
>However, you can simply have the other cards update on
>'preOpenCard', just before they are displayed, and
>that should work just fine.
>So steer your Inspector palette to the card, go to the
>"Geometry" pane, and check the box "Update before
>opening card".
>
>Hope this helped,
>
>Jan Schenkel.
>


Jan,

Thanks for the good info, Jan. I was unaware of the "Update 
[geometry] before opening card" check box on the card inspector 
palette. So much to discover.

I was hoping to avoid using the preopendcard handler to do the same. 
I have *lots* of cards and I wanted to automate the process with an 
preopenstack script--lock screen, repeat for all cards, go to card i 
etc. .

It occurred to me after I sent this question to the list that I had 
run into this problem before in a different context. I had submitted 
as a bug the apparent flaw in the following handler:

on mouseUp
   repeat with i = 1 to 3
     put the formattedHeight of field 1 on card i & return after results
   end repeat
   put results
end mouseUp

It returned only the formattedHeight of field 1 on the *current* card 
and zero for the rest. I received the following answer to my report:

"The formattedHeight property is only available for the current card of an open
stack, because there is only one display list (i.e., getting it for other
cards would require maintaining multiple sets of records for text position,
fonts required, images that must be downloaded, etc., a highly inefficient and
memory intensive operation).  If you need to this additional information, lock
the screen, go to the other card, get the property, and then go back."

Apparently, the geometry is another property that is available only 
on the current card. (On the other hand, if one were to ask for the 
*location* of field 1 on other cards, that info *is* available. The 
moral is: Let the inquisitor beware when looking for info on other 
cards.)

But I am still puzzled. The above quote suggests locking the screen 
before going to the other cards for info (or updating etc.). When I 
do this with my stack, locking the screen makes no difference; each 
card opens and is displayed. However I tried this with another, 
simpler, stack and the screen *did* lock.

What is there about a stack which locks the screen when running 
through the cards and another stack which does not? Puzzling.

Jim


More information about the Use-livecode mailing list