2011-10-20 26 views
5

考慮這種形式,帶有標籤「觀察家這裏」和按鈕「點擊」:爲什麼控件位於錯誤的地方,如果它們在窗體滾動時被定位?

a label near the left edge of the form, with a button

在按鈕單擊我設置我收到標籤的Left 10(Label1.Left :=10;

正確地作爲第二圖像中:

form with label near left edge

然後,我滾動形式向右:

same form as before, but scrolled right so label is hidden

現在,點擊按鈕後,我得到的一個問題,這是在第4圖像顯示:

same form, scrolled left, but label visible near middle instead of left

標籤的Left不是10了。它超過10,但我需要它是10.我該怎麼做?

回答

6

Label1.Left:= 10;從當前邊框(form1.left)離開的手段10。

so Label1.Left:= 10;不會總是產生相同的結果,這取決於Form1.HorzScrollBar.Position ;

你必須爲如下代碼

Label1.Left := 10 - Form1.HorzScrollBar.Position ; 

你可以看到在設計時這個模式通過選擇在Form1的一個組成部分,調整滾動條,可以看到,在Object Inspector離開所選組件的價值也將改變移動滾動條時

你可以把它理解這樣

如果您有HorzScrollBar,那麼如果您添加組件並將它們的左側值設置得非常高,則form1將不會增加其寬度,但其通過滾動條處理的虛擬寬度將增加,所有協調值將賦予與form1無關的值虛擬空間

+0

參閱http://books.google.lk/books?id=V9t0lA-BPUAC&pg=PA349&lpg=PA349&dq=HorzScrollBar.Position+and+left+in+delphi&source=bl&ots=4-VEnO6j9k&sig=mmaYp0uooE-QveNIjUhk5eZoyyU&hl = en&ei = nBegTpT8D4f3rQebkv2JAw&sa = X&oi = book_result&ct = result&resnum = 1&ved = 0CBwQ6AEwAA#v = onepage&q&f = false – VibeeshanRC

+0

任何人都可以告訴我在Visual Studio winforms中是否使用了相同的模式。 – VibeeshanRC

+0

@rakesh如果你認爲這是你想要的答案,你可以接受這個解決方案,或者你可以提供一些反饋 – VibeeshanRC

相關問題