From: <ml...@id...> - 2003-08-14 19:47:18
|
Okay, what is the correct way to do the following then: Have containers sized so that the entirety of their contents are visible. I have a template that I change the content of. I want the object it is in display the entire template contents. And so on up the tree of containers till I get to the dynapi.document. Basically, I have templates and other objects that change as the user interacts with the page. I want the entire content to be visible to the user. > Hi, > > Let me see if I can explain what's on: > > > DynAPI.onLoad(init); > function init() { > var body = 'I am a simply layer, what is my size, > oldWidth is my size before we fill in a template > field, newWidth is the size afterwards. {@field}'; > var sizeTemplate = new Template(body); > dynapi.document.addChild(sizeTemplate); > > // ^ At this point sizeTemplate is created and given > a > // width and a height. This is by design. if no > height or width > // was specified then DynAPI will assign a height and > a width to > // the layer once it's created. > > > sizeTemplate.addChild(new DynLayer('hello'),'field'); > sizeTemplate.generate(); > > // ^ At this point the DynLayer is added to the > templated but > // due to text wrapping you'll not see the word > "hello" > // to see the new layer modify your code above to > reflect: > // var sizeTemplate = new > Template(body,null,null,null,50); > > The problem you're having is that once the he Template > gets a width assigned to it, it will start text > wrapping. That's why you are not able to see the > 'hello' layer or get a different width. The > getContentHeight() function should however reflect a > new height. > > Notes. If you call getWidth() on a layer that you did > specify a width for you'll get a 0 or null value. > > > -- > Raymond Irving > > --- ml...@id... wrote: > > I originally had my size check in the onload > > function. Then I moved it > > to the body as I miss-understood Raymond's response. > > > > This test file has the code back in the onload/init > > function per > > Raymond's last message. The behavior is the same. > > > > > > > --------------------------------- > GetWidth & GetContentWidth test page > dynapi.library.setPath('dynapi3x/src/') > dynapi.library.include('dynapi.library'); > dynapi.library.include('dynapi.api'); > dynapi.library.include('TemplateManager');DynAPI.onLoad(init);function > init() { var body = 'I am a simply layer, what is my > size, oldWidth is my size before we fill in a template > field, newWidth is the size afterwards. {@field}'; var > sizeTemplate = new Template(body); > dynapi.document.addChild(sizeTemplate); var oldWidth > = sizeTemplate.getWidth(); var oldContentWidth = > sizeTemplate.getContentWidth(); > sizeTemplate.addChild(new DynLayer('hello'),'field'); > sizeTemplate.generate(); sizeTemplate.setLocation( 0, > 100 ); sizeTemplate.setBgColor( '#FFFFFF' ); var > newWidth = sizeTemplate.getWidth(); var > newContentWidth = sizeTemplate.getContentWidth(); var > wLayer; if( oldWidth == newWidth ) { wLayer = new > DynLayer( 'oldWidth == newWidth = ' + > sizeTemplate.getWidth() ); } else { wLayer = new > DynLayer( 'oldWidth(' + oldWidth + ') != newWidth(' + > sizeTemplate.getWidth() + ')' ); } > wLayer.setLocation( 0, 200 ); > dynapi.document.addChild( wLayer ); wLayer.setBgColor( > '#FFFFFF' ); var cLayer if( oldContentWidth == > newContentWidth ) { cLayer = new DynLayer( > 'oldContentWidth == newContentWidth = ' + > sizeTemplate.getContentWidth() ); } else { cwLayer = > new DynLayer( 'oldContentWidth(' + oldContentWidth + > ') != newContentWidth(' + > sizeTemplate.getContentWidth() + ')' ); } > cLayer.setLocation( 0, 300 ); > dynapi.document.addChild( cLayer ); cLayer.setBgColor( > '#FFFFFF' > );}dynapi.document.insertAllChildren();Simple page to > try to demonstrate issues with the getWidth > andgetContentWidth in dynapi3 > |