2011-01-13 54 views
0

我的项目中有一个DataGrid。它不符合表单的宽度,所以滚动条出现。 DataGrid处于初始状态,显示几列和下一列的一部分(滚动后会出现)。获取剪切显示列的宽度

有什么办法,我可以得到这个宽度,显示部分?

回答

0

好的,我有一段时间深入挖掘这个问题。我搜索了几个课程来了解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--; 
     } 

这几乎是所有的代码,这需要以捕捉并测量网格中所有那些棘手的分界线:)

1

你应该得到父对象的宽度。

假设DataGrid的是在您的应用程序,那么你应该得到舞台的宽度。(stage.stageWidth)

如果你的数据网格是在您的应用程序(一定x位置或任何其他父对象),那么你应该采取父对象的宽度 - 你的数据网格的x值。 (stage.stageWidth - dataGrid.x)

+0

感谢您的回复。我已经想过自己计算它了(好吧,用一种不同的方式,比如dataGridWidth%(visibleColumnsCount * columnWidth))。只是想知道是否有任何预定义的属性或方法来获取此值。 – Antenka 2011-01-17 07:45:18