如何获得具有滚动条的每个组件的滚动偏移量?

时间:2015-01-15 18:31:00

标签: android delphi scroll offset firemonkey

有些人问我: 如何获得具有滚动条的每个组件的滚动偏移量以及如何在组件的可见部分获取某些项目的坐标(可能是TListBox中的TListBoxitem) - 显示当前项目的TPopup的示例?

Popup.Position.X:= ListBox.ItemByIndex(0).Position.X;
Popup.Position.Y:= ListBox.ItemByIndex(0).Position.Y;

此代码在Item(0)的左上角显示TPopup并且可见。

何时可见项目(100)TPopup不在左上角且不可见:

Popup.Position.X:= ListBox.ItemByIndex(100).Position.X;
Popup.Position.Y:= ListBox.ItemByIndex(100).Position.Y;

如何在每个项目的左上角显示TPopup?

1 个答案:

答案 0 :(得分:1)

答案很简单(TListBox的例子):

var
  offsetX, offsetY: single;
begin
  offsetX:= myListBox.ViewportPosition.X;
  offsetY:= myListBox.ViewportPosition.Y;
end;

如何在每个项目的左上角显示TPopup:

Popup.Position.X:= ListBox.ItemById(0).Position.X - ListBox.ViewportPosition.X;
Popup.Position.Y:= listBox.ItemById(0).Position.Y - ListBox.ViewportPosition.Y;
.
.
.
Popup.Position.X:= ListBox.ItemById(100).Position.X - ListBox.ViewportPosition.X;
Popup.Position.Y:= listBox.ItemById(100).Position.Y - ListBox.ViewportPosition.Y;