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


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

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

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

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

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

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

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

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

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

編集    削除
もりっち  2006-08-11 23: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-12 01:10:56  No: 22878  IP: [192.*.*.*]

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

編集    削除
もりっち  2006-08-12 02:58:29  No: 22879  IP: [192.*.*.*]

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

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

編集    削除
HOta  2006-08-13 03:16:24  No: 22880  IP: [192.*.*.*]

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

編集    削除
てんてん  2006-08-17 00:32:19  No: 22881  IP: [192.*.*.*]

もりっちさん
こんにちは

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

変ですよね?

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

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

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

編集    削除