HIRAOさん、こんにちは。福士と申します。
> Delphi7 まだ使ってます・・・
いまさらですね(とはいえDelphiを買うと使える過去のバージョンには
未だDelphi 7が入っていますので…)。
> DBGridでデータを表示したときに縦のスクロールバーが自動で表示されます。
> このとき、▲▼ボタンのクリックでスクロールできますが、
> 初回は▼ボタンクリックでDBGridに表示している行の最下位へ移動します。
> これを1行ずつの移動にしたいのです。
> ↑↓キーと同じ動作です。
TDBGridにそのような機能はないので、TDBGridを派生して縦方向の
スクロールが発生したときのメッセージ処理を捕まえて上下矢印キーに
置き換えてしまう、というのはどうでしょう。
簡単に済ますならTDBGridを配置したユニットでこんな感じにします。
interface
....
type
TDBGrid = class(DBGrids.TDBGrid)
private
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
end;
TForm1 = class(TForm)
DBGrid1: TDBGrid; // フォームに配置したTDBGridコンポーネント
...
implementation
....
procedure TDBGrid.WMVScroll(var Message: TWMVScroll);
begin
with Message do
begin
case ScrollCode of
SB_LINEUP:
begin
Perform(WM_KEYDOWN,VK_UP,0);
Result := 1;
Exit;
end;
SB_LINEDOWN:
begin
Perform(WM_KEYDOWN,VK_DOWN,0);
Result := 1;
Exit;
end;
end;
end;
inherited;
end;
とりあえず手元のDelphi 2007ではそれっぽく動作しました。
TDBGridがいろんなところに配置されているのならちゃんと派生
コンポーネントを作ったほうがいいと思います。
参考にしてください。
---
東洋テクニカルシステム株式会社 システム開発部 福士 光
Hikaru Fukushi (Toyo Technical System Inc.)
mailto:
fuk...@tts-inc.co.jp
MLホームページ:
https://www.freeml.com/delphi-users
----------------------------------------------------------------------
freemlを運営するGMOメディア株式会社では、
2019年新卒採用の募集をしております。
【募集職種】エンジニア職/Webデザイナー職
説明会も開催中!下記よりアクセスしてください。
https://www.gmo.media/recruit/?utm_medium=freeml&utm_source=freeml