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

解決


Delphi2年生  2008-03-31 07:13:12  No: 30312

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

さて、早速なのですが、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

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


Ru  2008-03-31 20:53:53  No: 30314

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

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


Delphi2年生  2008-04-01 04:40:43  No: 30315

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

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

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


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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