拖放以在ScrollBox中垂直排列

时间:2017-04-29 22:53:38

标签: delphi

我被要求对另一个开发人员在10年前在Delphi 7中做过的项目进行一些更改。这是一个专有的代码,所以我将非常具体。

“容器”是TScrollBox,里面的面板是TSpkRollPanel - 可折叠或可扩展的TPanel衍生产品。

我希望下面的图片能够解释一切。这很简单。我应该只在垂直方向上拖放TSpkRollPanel元素,这样它们就可以按照所需的顺序排列。我花了几个小时才开始学习Delphi(我10年多没见过)

如果有人能指出我正确的方向,我会很感激。我是德尔福文化,只是生锈。

See Example GUI Here

1 个答案:

答案 0 :(得分:4)

使用标准TPanel面板,以下工作正常,并且很可能也适用于您的面板。步骤如下:

  1. 选择所有面板
  2. 将所有面板的Align属性设置为AlTop
  3. 将所有面板的DragMode属性设置为dmAutomatic
  4. 切换到Object Inspector

    中的事件视图
    1. 双击OnDragDrop的输入字段以创建事件处理程序
    2. 双击OnDragOver的输入字段以创建事件处理程序
    3. 如果两个创建的事件处理程序的名称包含特定面板的标识符,您可能需要重命名事件处理程序以反映它们对所有面板都是通用的。

      6最后,将代码添加到事件处理程序

      procedure TForm1.PanelDragDrop(Sender, Source: TObject; X, Y: Integer);
      begin
        TPanel(Source).Top := TPanel(Sender).Top - 5;
      end;
      
      
      procedure TForm1.PanelDragOver(Sender, Source: TObject; X, Y: Integer;
        State: TDragState; var Accept: Boolean);
      begin
        Accept := True;
      end;
      

      该解决方案的工作原理是,当面板(A)落在另一个面板(B)上时,它(A)将使面板(B)按照对齐顺序放置,推动(B)和其他面板向下。