DBGridに数十件以上データを表示した時に、
スクロールバーをマウスでスクロールしていくと、
一番上、真中、一番下の三段階でしかスクロールできず、
困っています。
解決方法をご存知の方いましたら、宜しく御願いいたします。
Delphiのバージョンは何でしょうか?
D7では修正されていますが、いつから変わったかは知りません。実際のデーターベースには、最初・途中・最後の3通りしかないのを反映させています。バージョンアップが簡単でしょう。
いつも皆様方の知恵に助けて頂いており、感謝している次第です。
私でもお役に立てそうなので、書かせて頂きます。
DataSetの全てのレコードを読み込むまでは3段階ですが、全てのレコードを読み込むと表のサイズに適応したスクロールバーになります。ですから、必要な時は全てのレコードを読み込んでから表示させています。
ちなみにD5+IBを使用しています。
早速のアドバイス、ありがとうございます。
>HOtaさん
Delphi のバージョンは 7 です。
Delphi/400 を利用し、AS/400 の DB を参照しています。
参照は、SQL もしくは、Table(DBTables)で行なっています。
この状況で、DBGrid のスクロールバーが三段階でしか動きません。
>GTBassさん
DataSet の全てのレコードを読み込むというのは、
DB の全てのレコードを表示するということでしょうか?
DBGrid のプロパティで、
スクロールバーに関係するような項目はありますでしょうか?
ご助力よろしくお願いいたします。
Openした後、一度Lastで最後まで読み込むと、レコード数が解り、お望みの動作になると思います。
ご指示どおり、
Open したあと、Last と記述してコンパイルしてみましたが、
変化なしです。
お手数おかけしますが、ご教授お願いいたします。
Delphi7+InterBaseで試しましたが、3段階ではありませんでした。
ひょっとすると、Delphi/400の問題かもしれません。
もりっちさん
こんにちは
Delphi7.1Ent + DBISAMでも同じような動きですね。
アプリ起動後、DBGridスクロールバーの下方向ボタンをクリックすると、表示されている最後のレコードに移り、その後、下方向ボタンをクリックするごとに、1レコードずつ移動するようになります。
また、この状態から上方向ボタンをクリックすると、表示されている最初のレコードに移動してから、1レコードずつ移動するようになります。
変ですよね?
そこで、解決策になるか分かりませんが、TDBNavigatorで代用するのは如何でしょうか?
若干処理遅くなりますがTClientDaSetとかはどうでしょう?
ツイート | ![]() |