DBGridで、最初の列の小さいポインタを1つしか表示させないには?

解決


せんべい  2002-05-30 01:27:21  No: 947

DBGridで、プロパティからdbindicatorを使うと現在の行をポインタで表示してくれますが、マウスのコロコロ?で移動すると複数個表示されてしまい、左クリックでも選択できない状況が発現することがあります。
何か解消法をご存知の方、いらっしゃいますでしょうか?


にしの  2002-05-30 07:31:58  No: 948

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;
というようにします。
これで、ホイールを無効にできます。


せんべい  2002-05-30 20:49:04  No: 949

ありがとうございました。
StringGridへの張替えも考えていたのですが
こちらの方法をためさせて頂きます。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加