首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拖放在ScrollBox中垂直排列

拖放在ScrollBox中垂直排列
EN

Stack Overflow用户
提问于 2017-04-29 22:53:37
回答 1查看 493关注 0票数 3

我被要求对另一个开发人员几年前在Delphi7中做的一个项目做一些修改,这是一个专有代码,所以我将非常具体。

“容器”是一个TScrollBox,里面的面板是TSpkRollPanel的--一个可折叠或可扩展的TPanel导数。

我希望下面的图片能解释一切。真的很简单。我应该让TSpkRollPanel元素垂直地拖放,这样它们才能按照所需的顺序排列。我花了几个小时在德尔菲上学习(我在10+几年没见过)。

如果有人能给我指明正确的方向,我会很感激的。我是特尔斐识字的,只是生疏了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-30 07:18:21

对于标准的TPanel面板,下面的功能很好,很可能也适用于您的面板。这些步骤如下:

  1. 选择所有面板
  2. 将所有面板的Align属性设置为AlTop
  3. 将所有面板的DragMode属性设置为dmAutomatic

切换到Object Inspector中的事件视图

  1. 双击OnDragDrop的entry字段以创建事件处理程序
  2. 双击OnDragOver的entry字段以创建事件处理程序

如果两个创建的事件处理程序的名称包括特定面板的标识符,则可能要重命名事件处理程序,以反映它们对于所有面板都是通用的。

6.最后,向事件处理程序添加代码。

代码语言:javascript
复制
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)和其他面板。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43701231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档