TDBGridで表示されている先頭行を取得するには?

解決


Delphi2年生  2008-03-31 07:13:12  No: 30312  IP: [192.*.*.*]

いつも勉強させていただいてます。

さて、早速なのですが、TDBGridにてマウスでクリック時、
クリックした位置のレコードが、
先頭から何レコード目のレコードなのかを判定したいと思っています。

procedure TMyDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  CurrentRow :=  (Y div RowHeights[0]) - 1;
end;

Gridにスクロールがない場合は、
上記のコードで正常にCurrentRowに値が入るのですが、
DBGridを縦にスクロールしている場合、
Y座標が表示されている位置からの座標のため、
スクロールしている分だけずれてしまいます。

「現在のGridの表示状態が何レコード分スクロールしているのか(何ピクセルずれているのか)」があらかじめわかれば、
計算できるかと思ったのですが、その方法がわかりませんでした。

このような場合、何かいい方法がありますでしょうか?

編集    削除
Ru  2008-03-31 20:53:17  No: 30313  IP: [192.*.*.*]

レコードの一取得ですが,
データベースが Paradox なら 
DBGrid1.DataSource.DataSet.RecNo
で拾えると思います。
RDBMS なら TClientDataSetを使えばRecNoプロパティで拾えると思います。

編集    削除
Ru  2008-03-31 20:53:53  No: 30314  IP: [192.*.*.*]

>レコードの一取得ですが

レコードの位置取得ですが
の間違いです。

編集    削除
Delphi2年生  2008-04-01 04:40:43  No: 30315  IP: [192.*.*.*]

ご返信いただきありがとうございます。

RDBMSでしたので、TClientDataSetのRecNoプロパティを使用することで
正常に取得することができました。

誠にありがとうございました。

編集    削除