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