DBGridで、プロパティからdbindicatorを使うと現在の行をポインタで表示してくれますが、マウスのコロコロ?で移動すると複数個表示されてしまい、左クリックでも選択できない状況が発現することがあります。
何か解消法をご存知の方、いらっしゃいますでしょうか?
DBGridのWindowProcを、定義し直せばなんとかなります。
ただし、システム標準のWM_MOUSEWHEELでない場合はうまくいかないかもしれません。
Formに、
GridProc: TWndMethod;
procedure GridHandler(var Msg: TMessage);
を定義し、
OnCreateで、
GridProc := DBGrid1.WindowProc;
DBGrid1.WindowProc := GridHandler;
とします。
GridHandlerの内容は、
procedure TForm1.GridHandler(var Msg: TMessage);
begin
if Msg.Msg = WM_MOUSEWHEEL then
begin
Msg.Result := 0;
end
else
begin
GridProc(Msg);
end;
end;
というようにします。
これで、ホイールを無効にできます。
ありがとうございました。
StringGridへの張替えも考えていたのですが
こちらの方法をためさせて頂きます。
ツイート | ![]() |