我遇到了一个小问题。我正在动态生成一些控件并将它们放在
TScrollbox
组件。但我注意到,如果滚动框可见,用户可以清楚地看到创建和放置的每个控件。所以看起来很多工作都在做,而且进展缓慢。
我隐藏了滚动框并生成了它上面的所有控件,这花费了更少的时间,而且没有闪烁和类似的现象。但问题是。当我再次显示滚动框时,它的滚动条直到我真正调整窗体的大小才出现。(滚动框的对齐方式是
alClient
)
有什么解决办法吗?
试着重新粉刷,但没用。刷新也不起作用。
谢谢你
编辑:
TScrollBox(Form1.FindComponent('termai')).Visible:= false;
for I := 0 to mazgas.GrafasPagalVarda(sActiveGrafas).Termai.Count - 1 do
begin
fNaujasTermas(i,oHook);
end;
TScrollBox(Form1.FindComponent('termai')).Visible := true;
上面的代码显示了如何隐藏和显示滚动框。
fNaujasTermas
生成包含多个轨迹栏、图像和编辑的面板。
我不知道会有什么循序渐进的解释。只需创建一个过程,在其中生成一些面板,上面有许多控件,并将滚动框设置为父控件。在生成任何内容之前隐藏滚动框,并在所有操作完成后取消隐藏。
顺便说一句,面板对齐了
alTop
. 因此,每次创建新面板并将其放入滚动框时,它将显示在顶部,而所有其他面板都将向下移动。
这就是我创建滚动框的方式
pTermai := TScrollBox.Create(Self);
pTermai.Parent := pLeft;
pTermai.Align := alClient;
pTermai.Name := 'termai';
pTermai.BorderStyle := bsNone;
pTermai.VertScrollBar.Increment := 40;
我想我知道怎么复制这个。
在向滚动框中添加新面板时,它似乎不计入该滚动框中已存在的所有控件的总高度。
举个例子。假设1个面板的高度为200px。
滚动框高度为300像素。
因此,在创建两个高达400px的面板后,尽管第二个面板的一半不可见,但scrollbox不会显示滚动条。如果我再添加一个panel=600px,scrollbox将显示滚动条,看起来它只会每2个面板滚动一次,而不是3个。当尝试滚动这样的窗口时,值会重新计算,并且一切都显示得很好。
所以主要的问题是,如何使一个滚动框显示滚动条“及时”所以没有面板是半切的?