[Project_owners] Grids
Onno Ekker
o.e.ekker at gmail.com
Fri Jul 4 01:31:53 PDT 2008
Onno Ekker wrote:
> Eric H. Jung wrote:
>> Onno wrote:
>>> I have in my xul two grids with two columns each, both in a seperate
>>> groupbox. I'd like both columns of both grids to have the same
>>> width, but I can't seem to find the width of the current columns.
>>> ....
>>> Is it possible at all to get and set these widths?
>>> Is there another way to calculate the width of the label?
>>> Or should I get the length of the label's values and then set width
>>> to x
>>> em?
>>>
>>
>> Assuming your XUL is of this structure, try this:
>>
>> <grid><columns id=cols1"><column/><column/></columns><rows><row ...
>> /></rows></grid>
>> <grid><columns id=cols2"><column/><column/></columns><rows><row ...
>> /></rows></grid>
>>
>> /* Set widths of columns of 2nd grid to widths of columns of first
>> grid. Untested */
>> var cols1=document.getElementById("cols1"),
>> cols2=document.getElementById("cols2");
>>
>> for (var i=0, sz=cols1.childNodes.length; i<sz; i++) {
>> var width =
>> document.defaultView.getComputedStyle(cols1.childNodes[i],
>> "width").width); /* might be a cleaner way */
>> dump("width of col " + i + " " + width);
>> cols2.childNodes[i].setAttribute("style", "width: " + width); /*
>> overwrites other styles if they exist! */
>> }
>>
>>
> This works like a charm, now. Next problem is that resizing both
> columns leaves my window too small, so that needs resizing too now. I
> can probably find it's current size and add the differences to that
> too in much the same way.
Looks like I was cheering too early.
I set the grids/rows/columns contents from the same script as I use to
calculate the width. The width I read is still 0 (sometimes)...
Maybe I should add an eventlistener to onDOMChange, like Jesper
suggested, to wait for the changes I made to bubble through? Or is there
a better way to deal with this timing problem?
Onno
More information about the Project_owners
mailing list