堆叠面板 Delphi 组件

3

有没有人知道一个 Delphi 组件实现了类似于 jQuery sortable 的功能,但是适用于桌面应用程序?

也就是说,一个垂直控件包含多个面板,可以重新排序,还可以用作其他组件(特别是包含不同文本片段的 TMemos)的容器。

谢谢任何信息,

Breandan。


你使用的是哪个版本的Delphi?我问这个问题是因为根据你的版本,你可能有或没有访问某些内置控件。 - Jerry Gagnon
感谢迄今为止的回答。我目前正在使用Delphi 2010。 - RegisteredUser
@Jerry,我认为最好的方法是你回答这个问题,并在回答中提到它仅适用于某些版本。这样,即使用户没有必要的版本,其他想知道同样问题的人仍然可以从这个问题中受益。 - Rob Kennedy
TCategoryPanel 在 D2010 中吗?我记不清了。 - Nick Hodges
4个回答

1

虽然我是在代码中实现,而不是设计时,但我会使用TScrollbox或TPanel包含一些框架或面板,它们都对齐顶部。如果我想要框架的折叠/展开功能,我只需在框架中放置一个按钮,允许您将框架折叠到最小高度(例如20像素),展开时则更高。

内部的框架可以是任何您想要的控件,甚至是包含几个其他控件的面板。顶级控件可以在父面板或滚动框中重新排序。


0

只需要运行一次,然后我就可以从正在运行的应用程序中移动和调整它们的大小。

enter image description here enter image description here enter image description here

这是 dfm:

object Form2: TForm2
  Left = 0
  Top = 0
  Caption = 'Form2'
  ClientHeight = 337
  ClientWidth = 635
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object clbr1: TCoolBar
    Left = 0
    Top = 0
    Width = 635
    Height = 313
    Bands = <
      item
        Control = gb1
        ImageIndex = -1
        MinHeight = 123
        Width = 629
      end
      item
        Control = pnl1
        ImageIndex = -1
        MinHeight = 112
        Width = 629
      end>
    object gb1: TGroupBox
      Left = 11
      Top = 0
      Width = 620
      Height = 123
      Caption = 'gb1'
      TabOrder = 0
      object lbledt1: TLabeledEdit
        Left = 112
        Top = 40
        Width = 121
        Height = 21
        EditLabel.Width = 32
        EditLabel.Height = 13
        EditLabel.Caption = 'lbledt1'
        TabOrder = 0
      end
    end
    object pnl1: TPanel
      Left = 11
      Top = 125
      Width = 620
      Height = 112
      Caption = 'pnl1'
      TabOrder = 1
      object rg1: TRadioGroup
        Left = 128
        Top = 4
        Width = 185
        Height = 105
        Caption = 'rg1'
        Items.Strings = (
          'dsfsdf'
          'sdfsdfsd')
        TabOrder = 0
      end
    end
  end
end

1
我不明白我们在看什么。你能否加入一些句子来解释你的答案是做什么的?同时,你能澄清一下你第一句话的意思吗?是哪一个东西只能运行一次,为什么不能多次运行它? - Rob Kennedy
“一次运行”是指我没有通过设计师修改UI,而是在应用程序启动时仅拖放了“面板”,并且该面板包含控件。因此,由于我不确定完全理解问题的含义,我展示了只使用dfm显示可以完成的操作。 - Whiler

0

0

在Delphi 2007中,我没有找到一个标准控件能够满足您的需求,但我可以提供一个类似于Warren建议的自定义解决方案。主要区别是我会在TFrame内创建它,这样您就可以更轻松地维护允许您操作控件及其相互交互的代码。您还可以在框架内创建方法来添加新面板(带有备忘录和要显示的文本),移动它们等。

这需要一些工作,但也可以成为一个很好的学习经验。最好的部分是,一旦完成,您可以在任何表单或另一个框架中重复使用该框架。如果做得正确,它也将无需麻烦地工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接