1

I am having a view like mentioned below and i am adding lot of views dynamically to the contents view and the problem is scrollbar is not getting visible. So i drilled down aa bit and i found that the content's height is not getting updated after i have added the views dynamically.

What am i doing wrong here? The same code is working properly in Openlaszlo 3.3

<view name="wrapper">
 <view name="scrollablecontainer"
                  width="${this.contentwrapper.width &gt; parent.width
                         ? this.contentwrapper.width : parent.width}"
                  height="${this.contentwrapper.height &gt; parent.height 
                          ? this.contentwrapper.height : parent.height}">
                <view name="contentwrapper" >
                    <view name="contents"/>
                </view>
  </view>
 <vscrollbarnew name="vscroll"
                        height="${this.height}"
                        pagesize="${this.height}"
                        visible="${this.scrollable}"/>
</view>

I missed out one thing when the component initializes i am setting contentwrapper width and height to 0.

Runtime : swf Test browser: firefox, windows xp

karthick
  • 11,998
  • 6
  • 56
  • 88

1 Answers1

1

Your structure looks very complicated. Why do you have a contentwrapper and a contents view. I've created an example which compiles in both OpenLaszlo 3.4 (swf7 and swf8) and OpenLaszlo 5.0 trunk (SWF10 and DHTML). I've set clipping to true on the wrapper view and added a layout to the view scrollablecontainer into which the dynamically created views will be added.

<canvas height="400">

    <attribute name="counter" type="number" value="0" />

    <class name="rectangle" width="200" height="30" bgcolor="blue">
        <text name="label" align="center" valign="middle" />
    </class>

    <!-- Wrapping view needs to have a width and height set and clip set to true -->
    <view name="wrapper" x="100" y="10"
          width="236" height="150"
          bgcolor="#ff9999"
          clip="true">

        <view x="10" name="scrollablecontainer"
              bgcolor="#aaaaaa">

            <simplelayout axis="y" spacing="8" />

        </view>

        <vscrollbar name="vscroll"
                    visible="${this.scrollable}"/>
    </view>

    <method name="addView">
        var v = null;
        if ( $swf7 || $swf8 ) {
            v = new rectangle( canvas.wrapper.scrollablecontainer );
        } else {
            v = new lz.rectangle( canvas.wrapper.scrollablecontainer );
        }
        canvas.counter++;
        v.label.setAttribute( 'text', 'View #' + canvas.counter );
    </method>

    <view>
        <checkbox value="true" onvalue="canvas.wrapper.setAttribute('clip', this.value)" />
        <text x="20" >Clipping of view 'wrapper'</text>
    </view>

    <button y="25" text="Add view" onclick="canvas.addView()" />

</canvas>

The view named wrapper should have clipping enabled, and needs to have a value set for width and height. By clicking the checkbox you can toggle the value of the clip attribute for the wrapper to see the effect.

Here's the app running in OpenLaszlo 5.0 trunk SWF10: OpenLaszlo scrollbar and dynamic view generation

And here the same code running in OpenLaszlo 3.4 SWF8: enter image description here

raju-bitter
  • 8,906
  • 4
  • 42
  • 53