gpt4 book ai didi

delphi - Delphi中垂直面板的自动布局

转载 作者:行者123 更新时间:2023-12-02 02:33:55 24 4
gpt4 key购买 nike

我已经离开 Delphi 几年了,专注于开发网络应用程序。

我已经习惯了,在 HTML 中只声明连续的 <div> ... </div>并将它们放置在彼此下方,间距由 CSS 提供。

我想做一个 Delphi 应用程序,其中有一组数据,假设它是有关电影的数据。最初,我将为每个项目设置一个面板,仅显示标题。如果您单击一个,它将展开以显示 Actor 、导演、情节摘要等。单击另一个,第一个将缩小,新的将展开(最多一个展开;再次单击该缩小)。

所以,我有两个布局问题:1)计算初始.top每个面板的数据,2) 在单击不同的面板时重新计算。

当然,我完全有能力手动编写所有这些内容,但这似乎很乏味且容易出错。

有公认的方法吗? Delphi自带的VCL组件?我应该问https://softwarerecs.stackexchange.com/对于第 3 方 VCL 组件?

最佳答案

最接近的 VCL 控件可能是 TCategoryPanelGroup ,它由垂直对齐的可扩展面板 ( TCategoryPanel ) 组成。

该控件没有“autocollapsepanels”或“maxexpandedpanelcount”属性,但您可以使用一些简单的代码来实现所需的行为。例如。下面的 OnExpand 事件处理程序如果附加到组中的所有类别面板,将导致展开的面板关闭其他面板。

procedure TForm1.CategoryPanelExpand(Sender: TObject);
var
I: Integer;
begin
if Sender is TCategoryPanel then
for I := 0 to CategoryPanelGroup1.Panels.Count - 1 do
if CategoryPanelGroup1.Panels[i] <> Sender then
TCategoryPanel(CategoryPanelGroup1.Panels[i]).Collapse;
end;


您可以将面板的 AlignWithMargins 属性设置为 true,然后使用面板的 Margins 属性调整间距。

关于delphi - Delphi中垂直面板的自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36365017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com