2011-01-13 7 views
0

私は自分のプロジェクトにDataGridを持っています。フォームの幅に合わないため、scrollBarが表示されます。 DataGridは初期状態で、いくつかの列と次の列の一部を表示します(スクロール後に表示されます)。クリップされた表示列の幅を取得

何か方法はありますか、私はこの部分の幅を表示できますか?

答えて

0

私はこの問題を深く掘り下げる時間がありました。私はいくつかのクラスを調べて、アドビがグリッドの動作をどのように実装していたか(部分的に列を表示する)を見ました。だから、これに対処する必要があります人々のために、必要な部分は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

親オブジェクトの幅を取得する必要があります。

のは、データグリッドアプリケーションであり、あなたは、ステージの幅を取得する必要がありましょう。(stage.stageWidth)

あなたのデータグリッドは、アプリケーション内の特定のx位置(または他の親オブジェクト上にある場合)親オブジェクトの幅、つまりDataGridのx値を取る必要があります。 (stage.stageWidth - dataGrid.x)

+0

あなたのお返事ありがとうございます。私はすでに自分でそれを計算することを考えました(まあ、ちょっと別のやり方で.. dataGridWidth%(visibleColumnsCount * columnWidth)のようなもの)。この値を取得するための定義済みのプロパティまたはメソッドがあるかどうか疑問に思っていました。 – Antenka

関連する問題