我已經創建了一個TScrollBox。我在Button上點擊動態添加了Label和Edit Box。爲了設置組件的位置,我使用了組件的高度,寬度,左邊,頂部屬性。 但是當添加5個組件後屏幕上出現滾動條時,下一個組件位置會受到干擾。並且下一個組件未在ScrollBox上同步放置。如何在按鈕點擊時動態地將組件添加到TScrollBox之下?
7
A
回答
10
放置在ScrollBox上的控件的Top
座標需要考慮已經發生的「滾動」的數量。如果一次添加控件,這不是問題,因爲ScrollBox沒有機會「滾動」。
如果您在之後將控件添加到滾動框它有機會「滾動」,您需要考慮發生的垂直「滾動」的數量。下面是一段代碼,它將標籤添加到ScrollBox1
,考慮垂直滾動,因此控件不會相互重疊。在這裏,我使用表單的「標記」屬性來爲下一個控件添加Top
,並且我還使用Tag
爲標籤生成唯一名稱(因此您可以看到它們正在進入ScrollBox的正確位置座標)。
procedure TForm31.Button1Click(Sender: TObject);
var L: TLabel;
begin
L := TLabel.Create(Self);
L.Caption := 'Test: ' + IntToStr(Tag);
L.Parent := ScrollBox1;
L.Top := Tag + ScrollBox1.VertScrollBar.Size - ScrollBox1.VertScrollBar.Position;
Tag := Tag + L.Height;
end;
的其他方法,我有時用是跟蹤最後控制的增加和基礎的座標上,去年加控制的座標,新的控制:
var LastControl: TControl;
procedure TForm31.Button1Click(Sender: TObject);
var L: TLabel;
begin
L := TLabel.Create(Self);
L.Caption := 'Test: ' + IntToStr(Tag);
L.Parent := ScrollBox1;
if Assigned(LastControl) then
L.Top := LastControl.Top + LastControl.Height
else
L.Top := 0;
Tag := Tag + L.Height;
LastControl := L;
end;
然而另一方法是找到最低的控件,並根據它的座標添加控件:
procedure TForm31.Button1Click(Sender: TObject);
var L: TLabel;
Bottom, TestBottom: Integer;
i: Integer;
begin
// Find "Bottom"
Bottom := 0;
for i:=0 to ScrollBox1.ControlCount-1 do
with ScrollBox1.Controls[i] do
begin
TestBottom := Top + Height;
if TestBottom > Bottom then
Bottom := TestBottom;
end;
L := TLabel.Create(Self);
L.Caption := 'Test: ' + IntToStr(Tag);
L.Parent := ScrollBox1;
L.Top := Bottom;
Tag := Tag + L.Height;
end;
+0
非常感謝..它得到了工作.. :) – naren
+0
感謝幫助我與類似的東西。 –
相關問題
- 1. 動態地將組件添加到按鈕單擊的JDialog上
- 2. 如何在按鈕點擊時添加新的動態控件?
- 3. 如何爲動態添加的按鈕添加點擊事件
- 4. 如何在mvc3的按鈕點擊動態添加控件?
- 5. 如何動態地將控件添加到Silverlight按鈕?
- 6. [Android]如何在點擊按鈕時動態添加圖像按鈕?
- 7. 按鈕點擊動態添加html表
- 8. 按鈕點擊動態添加和刪除組件?
- 9. 如何在動態加載時將焦點添加到HTML按鈕?
- 10. Reactjs:點擊按鈕添加組件
- 11. 在按鈕上添加動態控件(控件集)點擊
- 12. 如何在按鈕點擊動態添加更多輸入框?
- 13. 如何在點擊事件上將點擊效果添加到按鈕上?
- 14. 如何動態地添加按鈕角
- 15. 如何動態地添加按鈕
- 16. 將JPanel添加到按鈕上點擊
- 17. 如何在構建面板後動態地將按鈕組添加到面板
- 18. 動態創建添加表單點擊添加按鈕在angularjs
- 19. 如何將.wav文件添加到可點擊的按鈕?
- 20. Vue.js在點擊按鈕時動態添加HTML
- 21. 如何動態地將單選按鈕集添加到頁面
- 22. SapUI5:如何動態地將按鈕添加到CutomListItem(xml)中?
- 23. 如何將動態添加事件添加到動態創建的按鈕
- 24. 如何點擊點擊添加按鈕後動態通過在數據庫
- 25. 在asp.net中按鈕點擊動態添加控件mvc
- 26. 添加按鈕在EXTjs中動態點擊事件4
- 27. 如何在Angular中的按鈕點擊添加組件?
- 28. 如何在按下按鈕時添加到數組中?
- 29. 如何在按鈕點擊時將事件添加到Android默認日曆?
- 30. 如何在運行時將按鈕點擊添加剪貼畫
應該有ScrollBox的某些屬性,如'ScrollTop'或'ScrollWhatever'。你可以從組件的新位置中減去它。 –
我找不到任何房產喜歡ScrollTop .. :( – naren