我被要求对另一个开发人员在10年前在Delphi 7中做过的项目进行一些更改。这是一个专有的代码,所以我将非常具体。
“容器”是TScrollBox,里面的面板是TSpkRollPanel - 可折叠或可扩展的TPanel衍生产品。
我希望下面的图片能够解释一切。这很简单。我应该只在垂直方向上拖放TSpkRollPanel元素,这样它们就可以按照所需的顺序排列。我花了几个小时才开始学习Delphi(我10年多没见过)
如果有人能指出我正确的方向,我会很感激。我是德尔福文化,只是生锈。
答案 0 :(得分:4)
使用标准TPanel
面板,以下工作正常,并且很可能也适用于您的面板。步骤如下:
Align
属性设置为AlTop
DragMode
属性设置为dmAutomatic
切换到Object Inspector
OnDragDrop
的输入字段以创建事件处理程序OnDragOver
的输入字段以创建事件处理程序如果两个创建的事件处理程序的名称包含特定面板的标识符,您可能需要重命名事件处理程序以反映它们对所有面板都是通用的。
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)和其他面板向下。