DBGridのスクロールバーについて


もりっち  2006-08-10 11:51:36  No: 22874  IP: 192.*.*.*

DBGridに数十件以上データを表示した時に、
スクロールバーをマウスでスクロールしていくと、
一番上、真中、一番下の三段階でしかスクロールできず、
困っています。

解決方法をご存知の方いましたら、宜しく御願いいたします。

編集 削除
HOta  2006-08-10 13:05:36  No: 22875  IP: 192.*.*.*

Delphiのバージョンは何でしょうか?
D7では修正されていますが、いつから変わったかは知りません。実際のデーターベースには、最初・途中・最後の3通りしかないのを反映させています。バージョンアップが簡単でしょう。

編集 削除
GTBass  2006-08-10 13:26:25  No: 22876  IP: 192.*.*.*

いつも皆様方の知恵に助けて頂いており、感謝している次第です。
私でもお役に立てそうなので、書かせて頂きます。

DataSetの全てのレコードを読み込むまでは3段階ですが、全てのレコードを読み込むと表のサイズに適応したスクロールバーになります。ですから、必要な時は全てのレコードを読み込んでから表示させています。

ちなみにD5+IBを使用しています。

編集 削除
もりっち  2006-08-11 14:49:45  No: 22877  IP: 192.*.*.*

早速のアドバイス、ありがとうございます。

>HOtaさん
Delphi のバージョンは 7 です。
Delphi/400 を利用し、AS/400 の DB を参照しています。
参照は、SQL もしくは、Table(DBTables)で行なっています。

この状況で、DBGrid のスクロールバーが三段階でしか動きません。

>GTBassさん
DataSet の全てのレコードを読み込むというのは、
DB の全てのレコードを表示するということでしょうか?


DBGrid のプロパティで、
スクロールバーに関係するような項目はありますでしょうか?
ご助力よろしくお願いいたします。

編集 削除
HOta  2006-08-11 16:10:56  No: 22878  IP: 192.*.*.*

Openした後、一度Lastで最後まで読み込むと、レコード数が解り、お望みの動作になると思います。

編集 削除
もりっち  2006-08-11 17:58:29  No: 22879  IP: 192.*.*.*

ご指示どおり、
Open したあと、Last と記述してコンパイルしてみましたが、
変化なしです。

お手数おかけしますが、ご教授お願いいたします。

編集 削除
HOta  2006-08-12 18:16:24  No: 22880  IP: 192.*.*.*

Delphi7+InterBaseで試しましたが、3段階ではありませんでした。
ひょっとすると、Delphi/400の問題かもしれません。

編集 削除
てんてん  2006-08-16 15:32:19  No: 22881  IP: 192.*.*.*

もりっちさん
こんにちは

Delphi7.1Ent + DBISAMでも同じような動きですね。
アプリ起動後、DBGridスクロールバーの下方向ボタンをクリックすると、表示されている最後のレコードに移り、その後、下方向ボタンをクリックするごとに、1レコードずつ移動するようになります。
また、この状態から上方向ボタンをクリックすると、表示されている最初のレコードに移動してから、1レコードずつ移動するようになります。

変ですよね?

そこで、解決策になるか分かりませんが、TDBNavigatorで代用するのは如何でしょうか?

編集 削除
 2006-08-17 08:20:34  No: 22882  IP: 192.*.*.*

若干処理遅くなりますがTClientDaSetとかはどうでしょう?

編集 削除