2015-01-15 47 views
-2

有人問我: 如何獲取滾動條的每個組件的滾動偏移量以及如何獲取某些項目的座標(可能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

我不知道什麼實際意思由此,即使有答案。你能編輯你的問題來闡述你的意思嗎? – 2015-01-15 21:36:15

+1

你應該邀請這些人在Stack Overflow上發佈他們的問題,而不是讓他們成爲他們的中間人。你不能回答澄清問題,因爲這不是你的問題。 – 2015-01-15 22:34:14

+1

如果列表項大於TListBox的高度以及當前TListBoxitem的後續顯示示例TPopup,則可以使用示例來確定TListBox在TListBox(在可見屏幕上)中的位置。 – pudnivec74 2015-01-16 06:51:22

回答

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;