4

Delphi では、私の正確なケースでは TSynEdit コントロールなど、多くの TWinControl の子孫で、水平スクロール バーと垂直スクロール バーの位置をどのように読み取るのでしょうか?

特定のコントロールのソース コードと、TWinControl の基本クラスのドキュメントを調べましたが、わかりません。

これを行う一般的な VCL 固有の方法はありますか、または Win32 API 呼び出しを介してこれを行う必要がありますか?

4

1 に答える 1

4

このGetScrollBarInfo関数は、TWinControl のスクロールバーの位置を取得する方法です。データを返すには、コントロールのハンドル、OBJID_VSCROLLまたはOBJID_HSCROLL値、および 構造体を渡す必要があります。SCROLLBARINFO

このサンプルを確認してください

var
 LBarInfo: TScrollBarInfo;
begin
 LBarInfo.cbSize := SizeOf(LBarInfo);
 if GetScrollBarInfo(SynEdit1.Handle, Integer(OBJID_VSCROLL), LBarInfo) then
  ShowMessage(Format('Left %d Top %d Height %d Width %d', [LBarInfo.rcScrollBar.Left, LBarInfo.rcScrollBar.Top, LBarInfo.rcScrollBar.Height, LBarInfo.rcScrollBar.Width]));
end;
于 2015-10-07T18:53:28.933 に答える