0

AdvancedDataGrid を印刷したいのですが、このコードを使用しています

public function doPrint():void {
            myPrintJob = new FlexPrintJob();
            myPrintDataGrid = new PrintAdvancedDataGrid();
            myPrintDataGrid.source=this.dataGrid;
            StageReference.instance.addElement(myPrintDataGrid);

            if (myPrintJob.start()) {   
                myPrintJob.addObject(myPrintDataGrid, FlexPrintJobScaleType.MATCH_WIDTH);
                myPrintJob.send();
                StageReference.instance.removeElement(myPrintDataGrid); 
            }
            else
            {
                StageReference.instance.removeElement(myPrintDataGrid);

            }
        }

問題は、ヘッダーのテキストが多くのパディングまたは類似のものを使用しているため、テキストが収まらないことです

ここに画像の説明を入力

誰かが私にヒントを与えることができる場合、私は何を探すべきかわかりません(独自のヘッダーレンダラーを作成してみてください?)

原因がわかりました。FlexPrintJob.addObject はグリッドをスケーリングします。ヘッダーが更新されるまで、さらにフレームが必要だと思います。スケーリングに奇妙なことがいくつかあります。デバッグで、ページ幅が600、今のところ実際の解決策はなく、スケーリングを回避しています。

4

1 に答える 1

0

通常、Flex ラベル/テキスト オブジェクトは、十分なスペースがないと判断した場合、テキストを切り詰めます。

テキストが広すぎてグリッドのプロパティがfalseのAdvancedDataGridHeaderRenderer場合、レンダラーがUITextFieldを設定してテキストを切り捨てることを簡単に見て確認しました。variableRowHeight

AdvancedDataGridHeaderRenderer の commitProperties() メソッドのスニペット (462 行目):

label.text = listData.label ? listData.label : " ";
label.multiline = grid.variableRowHeight;
// Get the headerWordWrap for a column, using the default wordWrap if none specified
if( _data is AdvancedDataGridColumn)
    label.wordWrap = grid.columnHeaderWordWrap(_data as AdvancedDataGridColumn);

実際の切り捨ては、AdvancedDataGridHeaderRenderer の updateDisplayList() メソッド (628 行目) で行われます。

これを知っていれば、いくつかのオプションがあります。

  • デバッガーを使用して commitProperties/updateDisplayList のコードをステップ実行し、ヘッダー内のラベル オブジェクトがなぜそれほど小さくする必要があると考えているのかを確認してください。あなたのスクリーン ショットでは、十分なスペースがあるように見えますが、何らかの理由で、ラベルはそうではないと考えています。

  • AdvancedDataGridHeaderRenderer の commitProperties/updateDisplayList メソッドをオーバーライドして、希望どおりに動作させる

  • グリッド/レンダラーのスタイルとプロパティを設定して、幅や複数行のテキストを許可します

後者を行うには、次のいくつかの組み合わせを実行する必要があります。

  • CSS を使用して、AdvancedDataGridHeaderRenderer のフォントやその他のスタイルを変更します (このクラスのデフォルトのパディングは 2px です)。
  • グリッドの variableRowHeight を有効にする
  • グリッドのwordWrapプロパティを true に設定します (行の高さが可変の場合のみ機能します)。
  • または、 headerWordWrapプロパティを使用して、列レベルでワード ラップを制御します。AdvancedDataGridColumn
于 2012-05-30T21:09:57.890 に答える