2016-09-20 1 views
0

は、私は私が使用私の行のテキストに合わせて、私のコラムをスケールする:どういうわけか、あまりにも遅い動作しますが、どのようにデルファイxe5のコードでグリッドダブル右の境界のクリックイベントを発生させるには?私はDevのエクスプレスDBGridのコンポーネントを使用して、mは

cxView.ApplyBestFit(); 

ので、私はいくつかの検索を行なったし、私はこの記事を見つけましたon Dev Express Websiteしかし、これは私を助けません。

that was the 4th right border click

:だから私は、私は他のグリッドの後、グリッド1のすべての右の境界線をダブルクリックする場合は、以下の二つの絵に見るように、完全かつ迅速 拡大することを発見するために私を導くどのようなグリッド・インタラクティビティを観察し始めました

その後、私はこの結果を得るために最後のボーダーに引き続き:

As you see is well scaled

私はコードによって、このダブルクリックを発射する必死しようが、私はDelphiとのDevエクスプレスの経験が不足しているメートル。どのようにしてこのイベントをすべての列で順番に発生させるのか。

は、以下のコードをダブルクリックし、各ヘッダーセルの右辺と同じことを行いますあなたの

答えて

2

ありがとうございます。

コード:

procedure TForm1.ApplyBestFits; 
var 
    i : Integer; 
begin 
    try 
    cxGrid1DBTableView1.BeginUpdate; 
    for i := 0 to cxGrid1DBTableView1.ColumnCount - 1 do begin 
     cxGrid1DBTableView1.Columns[i].ApplyBestFit; 
    end; 
    finally 
    cxGrid1DBTableView1.EndUpdate; 
    end; 
end; 

しかし、私はそれが立つと、それはあなたの問題を完全に解決することはよく分かりません。 私のテストケースでは、100列と2000データ行で、 を実行するのに2〜2回かかります。想像していたのは、期待していたよりもはるかに低速です。したがって、最適化が必要な場合があります。

明示的な最適化の1つは、DBTableViewのクライアント矩形内にある列についてのみcxGrid1DBTableView1.Columns[i].ApplyBestFit を呼び出すことです。もう1つは、 に、tableviewに接続されているデータセットの行数を低い数値に制限することです。たとえば、次の例では、Left座標がcxGridの幅内にある列に対してのみApplyBestFitを呼び出します。

+0

私はあなたの実装をonShowで呼びます。 –

+0

私はそれが大丈夫だと思う - 私はちょうどテスト目的のためにButtonClickハンドラでそれを持っています。 – MartynA

+0

こんにちは、コードは素晴らしいですし、列の内容にはうまく適合しますが、列の行の内容は正しくありません。なぜですか? thx –

関連する問題