[Project_owners] Grids

Onno Ekker o.e.ekker at gmail.com
Thu Jul 3 13:35:39 PDT 2008


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.

Onno


More information about the Project_owners mailing list