【发布时间】:2010-10-05 13:42:44
【问题描述】:
我有一个“宽”TPanel,上面有几个按钮(本质上是一个工具栏)。所有按钮都有 Align=Left。我创建了一个函数,它将按钮的大小调整为相同的大小并计算它们的宽度,以便它们填充整个 TPanel。我在 TPanel 的 OnResize 事件处理程序中调用此函数。
procedure ScaleButtonsOnPanel;
var i: Integer;
begin
for i:=0 to mPanel.ControlCount-1 do begin
mPanel.Controls[i].Width := round(mPanel.width/mPanel.ControlCount-1)
end;
end;
问题是如果我最小化然后恢复表单,按钮的布局会从设计布局中改变。
谁能提供一个解决方案,让面板上的按钮可以调整大小但保持设计时间顺序(就从左到右的位置而言)?
【问题讨论】:
-
也许我遗漏了一些东西,但按钮应该有它们的设计时大小或调整后的大小?或者您只想调整按钮的大小,除非表单从最小化状态恢复?
-
在设计时,我们对按钮进行布局以建立它们应该处于的顺序(从左到右)。大小无关紧要,因为它们会在运行时调整大小以填充整个面板。
-
“布局”变化是什么意思?你说的是什么布局?有什么不同?
-
@Rob Kennedy:我认为他的意思是按钮的顺序发生了变化。这是一个众所周知的烦恼,因为两个或多个控件具有相同的
Align。
标签: delphi