Proportional table column spacing upon resizeStack - how to

Eric Chatonet eric.chatonet at sosmartsoftware.com
Tue Mar 18 12:07:26 EDT 2008


Hi Mark,

Here is another approach using a function that respects the first  
column and distributes x other columns according to the width of the  
field:

on resizestack pNewWidth,pNewHeight,pOldWIdth,pOldHeight
  local tRect,tNumOfColumns
  -----
   put the rect of fld "Table" into tRect
   put pNewWidth - 4 into item 3 of tRect
   set the rect of fld "Table" to tRect
   -----
   put <integer> into tNumOfColumns -- columns total wanted
   set the tabStops of fld "Table" to NewTabStops(the tabStops of fld  
"Table", tNumOfColumns,the width of fld "Table") --
end resizestack
-----------------------------------------------------
function NewTabStops pTabStops, pNumOfColumns,pFldWidth
   return item 1 of pTabStops & comma & item 1 of pTabStops + round 
((pFldWidth - item 1 of pTabStops) / (pNumOfColumns - 1))
end NewTabStops

There are so many ways to achieve the goal with Rev :-)

Best regards from Paris,
Eric Chatonet.

Le 18 mars 08 à 16:35, mfstuart a écrit :

>
> Merci Eric, that worked.
> Now I'll play around with that script to resize the columns, but  
> the first
> column.
> Then change it so that the right most columns' right border always  
> is at the
> right most position of the field.
>
> Regards,
> Mark Stuart
>
>
>
> Eric Chatonet wrote:
>>
>> Hi Mark,
>>
>> As the engine sends four params (see below) with the resizestack
>> message, it's quite easy to use them to achieve the goal:
>>
>> on resizestack pNewWidth,pNewHeight,pOldWidth,pOldHeight
>>    local tRect,tTabStops,tTabStop,tNewTabStops
>>    -----
>>    put the rect of fld "Table" into tRect
>>    put pNewWidth - 4 into item 3 of tRect
>>    -- -4: you'll use an appropriate value depending on your context
>>    set the rect of fld "Table" to tRect -- resizes the field
>>    ------
>>    put the tabStops of fld "Table" into tTabStops
>>    repeat for each item tTabStop in tTabStops
>>      put round(tTabStop * (pNewWidth / pOldWidth)) & comma after
>> tNewTabStops
>>      -- a value in pixels (integers) according to the ratio between
>> pNewWidth and pOldWidth
>>    end repeat
>>    delete last char of tNewTabStops -- comma
>>    set the tabStops of fld "Table" to tNewTabStops
>> end resizestack
>>
>> See tabStops in the docs :-)
>>
>> Best regards from Paris,
>> Eric Chatonet.
>>
>> Le 17 mars 08 à 17:35, mfstuart a écrit :
>>
>>> Hi All,
>>>
>>> I'm trying to apply this to my project, where I'm using a table
>>> field object
>>> to display data with several columns.
>>>
>>> What I'd like to do:
>>> Upon the user resizing the stack (the width in this case), I would
>>> like to
>>> resize the table columns proportionally. The table object is  
>>> currently
>>> resized in the stacks "on resizeStack" script.
>>> So this would involve adjusting each item in the tabStops of the  
>>> table
>>> field, during the resizeStack script.
>>>
>>> How do I do this?
>>>
>>> TIA,
>>> Mark Stuart

----------------------------------------------------------------
Plugins and tutorials for Revolution: http://www.sosmartsoftware.com/
Email: eric.chatonet at sosmartsoftware.com/
----------------------------------------------------------------





More information about the use-livecode mailing list