我正在使用 Delphi 10.1 和 Firemonkey,并希望在運行時向 TScrollBox 添加控制元件,但遇到了一些奇怪的行為。
在這個例子中,我創建了標簽并將它們添加到 TScroll 框中。
標簽設定為 TAlignLayout.Top 所以我假設創建的每個新標簽都將位于前一個下方。
- 創建的第一個標簽位于頂部。
- 創建的第二個標簽低于第一個。
- 創建的第三個標簽位于第一個和第二個標簽之間。
- 創建的更多標簽然后堆疊在第一個標簽下。

我希望按照創建順序自上而下創建標簽。任何想法我做錯了什么?
這是創建標簽的代碼:-
procedure TForm1.Button4Click(Sender: TObject);
var
lbFileDate: TLabel;
begin
ScrollBox2.BeginUpdate;
lbFileDate := TLabel.Create(ScrollBox2);
lbFileDate.Parent := ScrollBox2;
lbFileDate.Align := TAlignLayout.Top;
lbFileDate.Text := DateTimeToStr(Now);
ScrollBox2.EndUpdate;
end;
我在 Delphi 10.1 VCL 中做了一些非常相似的事情,創建程序總是將最后一個標簽放在頂部。
蒂亞
uj5u.com熱心網友回復:
看起來對于已經布局的控制元件,任何額外的控制元件都會根據它們的坐標(默認為 0,0)移動到可以被擠入的位置。你可以給一個新的控制元件一個大的,y這樣它就可以在其余控制元件下開始。在它們像在開始/結束更新塊中一樣布局之前,它們可以相互疊加,并根據創建順序進行布局。
procedure TForm1.Button1Click(Sender: TObject);
var
lbFileDate: TLabel;
begin
ScrollBox2.BeginUpdate;
for var I : integer := 1 to 10 do
begin
lbFileDate := TLabel.Create(ScrollBox2);
lbFileDate.Parent := ScrollBox2;
lbFileDate.Position.Y := 1E10;
lbFileDate.Align := TAlignLayout.Top;
lbFileDate.Text := DateTimeToStr(Now) ' ' IntToStr(I);
end;
ScrollBox2.EndUpdate;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/379296.html
標籤:德尔福 火猴 delphi-10.1-柏林 滚动框
上一篇:如何在Virtualstringtreedblclick中禁用擴展
下一篇:如何使用請求正文呼叫API端點?
