Получить ширину обрезанного отображаемого столбца - PullRequest
0 голосов
/ 13 января 2011

У меня есть DataGrid в моем проекте. Это не соответствует ширине формы, поэтому появляется полоса прокрутки. DataGrid в своем исходном состоянии отображает несколько столбцов и часть следующего столбца (который появится после прокрутки).

Есть ли способ, я могу получить ширину этого, отображая часть?

Ответы [ 2 ]

1 голос
/ 13 января 2011

Вы должны получить ширину родительского объекта.

скажем, сетка данных находится в вашем приложении, тогда вы должны получить ширину стадии. (Stage.stageWidth)

Если ваша сетка данных находится в определенном местоположении x в вашем приложении (или любом другом родительском объекте), тогда вы должны принять ширину родительского объекта - значение x вашей сетки данных. (stage.stageWidth - dataGrid.x)

0 голосов
/ 21 января 2011

Хорошо, у меня было время покопаться в этой проблеме. Я искал несколько классов, чтобы увидеть, как Adobe реализовала такое поведение сетки (частично отображая столбцы). Таким образом, для тех, кому нужно разобраться с этим, необходимая часть находится в файле DataGrid.as, метод configureScrollBars .. собственно, эта его часть:

// if the last column is visible and partially offscreen (but it isn't the only
        // column) then adjust the column count so we can scroll to see it
        if (collectionHasRows && rowCount > 0 && colCount > 1 && 
            listItems[0][colCount - 1].x + 
            visibleColumns[colCount - 1].width > (displayWidth - listContent.x + viewMetrics.left))
            colCount--;
        else if (colCount > 1 && !collectionHasRows)
        {
            // the slower computation requires adding up the previous columns
            var colX:int = 0;
            for (var i:int = 0; i < visibleColumns.length; i++)
            {
                colX += visibleColumns[i].width;
            }
            if (colX > (displayWidth - listContent.x + viewMetrics.left))
                colCount--;
        }

Это почти весь код, необходимый для того, чтобы поймать и измерить все эти хитрые разделенные столбцы в сетке:)

...