2009-04-17 19 views
4

Delphi 2007.Delphi - この奇妙なTGridの動作を修正するにはどうすればよいですか?

私は画面に収まるよりも多くの行を持つTGridを持っています。グリッドの高さは、下部に部分的に描画された行があるようなものです。 この部分行をクリックすると、完全に表示されるようにジャンプします(Grids.pasの 'ClampInView'というプロシージャを介して)。しかし、それは止まらない。マウスが部分的に描画された新しい行を上回っているので、それも上に飛びます。

部分的に描画された行をクリックすると、垂直列のセルが選択され始め、最後まで(またはマウスを離すまで)回転します。

これは、新しい行のwinformsプロジェクトで、100行のコードを持たない単一のグリッドで複製しているので、コードが間違っているとは思わないでしょう。

実際のコードに書いているフォームにドラッグアンドドロップ型の動作があるため、部分的な行の0.1秒後にクリックして解放すると、セル内のアイテムがピックアップされ、約50行低い。これは間違いなく、あなたがセルをクリックしたときに起こると予想されるものではありません。

これを修正/回避する方法を教えてください。

答えて

2

グリッド内のMouseDownをオーバーライドし、ユーザーが「悪い」場所をクリックした場合、継承されたMouseDownを呼び出さないでください。

3

これは部分的に目に見える行があるのが不安だと思うので、これは私がいつもしてきたことです。クライアント領域が行の高さの偶数倍になるようにグリッドのサイズを調整します。これは設計時に行うこともできますし、コードを介して行うことも簡単です。あなたがサイズ変更可能な行を持っているならば、キッカーになります。その場合は、行のサイズ変更イベントのイベントハンドラにグリッドのサイズを変更するコードを入れてください(私にはそれがあると思います)。

これはあなたが修正しようとしている動作を妨げるだけでなく、(私の意見では)あなたのUIをよりきれいに見せることができます!