- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在另一个面板中有一个面板:
内部面板对齐alTop
:
外部面板设置为AutoSize=true
:
所有东西都有尺寸。如果我在设计时更改内部面板的高度,则外部面板自动调整大小以适应它:
现在我需要change the height of the inner panel at runtime :
procedure TForm2.Button1Click(Sender: TObject);
begin
pnlInner.Height := pnlInner.Height + 50;
lblPointer.Top := pnlOuter.Top + pnlInner.Height;
end;
除非我在运行时更改内部面板的高度,自动调整大小面板不会自动调整大小:
这当然适用于 Delphi 5、7 和 probably XE2 - XE5 .
解决办法是什么?
解决方法当然是绕过对齐/自动调整大小并在各种OnResize事件期间执行所有操作。但这显然不是 RAD。我确信这是 VCL 中某个地方的一个小错误。由于我们已经修复了大约两打 XE6 VCL 错误,因此最好修复它,这样其他人就不必考虑它。
我喜欢这句话:
and, could you please attach sample project?
就好像没有人愿意尝试重现它一样。
最佳答案
问题是 TWinControl.AlignControls 中的回归:
procedure TWinControl.AlignControls(AControl: TControl; var Rect: TRect);
begin
//...snip
// Apply any constraints
if Showing and ((sfWidth in FScalingFlags) or (sfHeight in FScalingFlags)) then
DoAdjustSize;
//...snip
end;
这里的错误是,除非存在 sfWidth 或 sfHeight 缩放标志,否则它不会调用 DoAdjustSize
。
解决方法是不要试图超越自己,并且无论如何DoAdjustSize
:
procedure TWinControl.AlignControls(AControl: TControl; var Rect: TRect);
begin
//...snip
// Apply any constraints
//QC125995: Don't look to scaling flags to decide if we should adjust size
if Showing {and ((sfWidth in FScalingFlags) or (sfHeight in FScalingFlags))} then
DoAdjustSize;
//...snip
end;
找到此修复后,我们就成功解决了 the similar issue except with a TOleControl (e.g. TWebBrowser
) rather than a TPanel 问题了一半.
Note: Any code released into public domain. No attribution required.
关于delphi - 包含 TPanel 时 TPanel 不自动调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29394970/
我在另一个面板中有一个面板: 内部面板对齐alTop: 外部面板设置为AutoSize=true: 所有东西都有尺寸。如果我在设计时更改内部面板的高度,则外部面板自动调整大小以适应它: 现在运行时 现
我创建了一个自定义 Tpanel 并在里面放置了各种自定义组件...... procedure Panel_Comp(Location: TWinControl; NumOfComp: Int
我尝试在设计器中配置的 TPanel 上使用分配,但它不起作用。 var LPanel : TPanel; begin LPanel := TPanel.Create(nil); LPan
我正在使用 Josef Švejk's excellent answer 中的 DrawTextRotatedB 函数对于问题How to draw text in a canvas vertical
我正在使用 Josef Švejk's excellent answer 中的 DrawTextRotatedB 函数对于问题How to draw text in a canvas vertical
我的主窗体上有几个 TPanel,根据用户选择的选项显示/隐藏它们。问题是在设计时我必须不断地移动它们来编辑它们。其他人是否有更简单/更好的方法来处理这种情况? 最佳答案 如果一次只有一个面板可见,那
我怎样才能使 View 像黄色矩形一样。使用 TPanel + 颜色?如果是的话,文本从左侧缩进怎么样? 感谢您的帮助和建议! 最佳答案 最简单的方法是使用TPanel。将 ParentBackgro
我有一个基于 TPanel 的自定义组件。目的是在顶部显示一个所谓的“标题区域”,它显示标题并具有可自定义的边框和背景颜色。它工作正常,除了一个小问题:在设计时,当点击“标题区域”时,该组件未被选中(
我有几个在运行时填充有按钮的 TPanel。然而,我用来从父面板中释放按钮的下面的代码有时会生成访问冲突错误。 procedure TfrmTakeOrder.FreeItemButtons(butt
我需要在 TPanel 上绘制,最好是直接绘制,这样我上面就不会再有其他组件妨碍 mouseevent 事件捕获(我想在上面绘制一些“大小握把”)。我应该怎样做呢? 最佳答案 要真正做到正确,您可能应
我注意到,当我将 TPanel.FullRepaint 设置为 False 时,调整大小闪烁变得更好。由于该属性存在并且默认情况下为 True,因此一定有某种原因。 如何决定是否设置? 帮助仅指出:
我正在使用 Delphi 2010,如果我创建一个新的 VCL 应用程序,请将 TPanel 放在表单上并将其“color”属性设置为“clInactiveCaptionText”,它会显示正确的颜色
Delphi-版本5。我有一个正在组装的文件比较应用程序,它的主窗体上有一个左面板和右面板。每个面板(pnlLeft 和 pnlRight)都有相同范围的控件和事件,仅按名称分隔。即 btnCheck
如何创建一个行为类似于 Tpanel 的 TCustomControl?例如 MyCustomComponent,我可以将组件放入标签、图像等中。 最佳答案 诀窍是 TCustomPanel 中的这段
在我的主窗体上,我有一个 TPanel,其中包含充当工具栏的按钮。我想克隆/复制此工具栏和按钮及其功能到第二种形式。 使用 newmenu.merge(mainmenu) 克隆菜单很简单。这是复制 T
我想在一个窗体中间显示一个 TPanel,该窗体是其他窗体的 MDI 父窗体。某种“飞溅”形式,但不完全是。该面板将包含用户可以调用杂项的链接/按钮/快捷方式。功能。 主要要求是当我单击 MDI 子窗
我想知道“获取包管理器”窗口中的阴影效果是如何实现的。阴影区域标记为红色。 TPanel 中是否有任何属性可以实现此目的,或者是自定义绘制的? 最佳答案 TPanel 没有属性来创建该阴影。 使用 S
我找到了 another Delphi 5 和 Delphi XE6 之间的回归。 我有一个 TPanel,它被设置为其内容的 AutoSize 本身(面板为绿色): 当TPanel包含任何其他控件时
有几个第三方控件(例如 Raize Components )具有关闭的“十字”按钮“选项”(例如页面控件)。我的要求更简单,我想将右上角对齐的十字“按钮”放在 TPanel 上并访问其单击事件。是否有
有没有办法将文本包装在 Delphi 中的 TPanel.Caption 中(在我的例子中是 Delphi 6)? 最佳答案 恐怕不是默认情况下。从 TPanel 的源代码中可以看到,文本是由 Dra
我是一名优秀的程序员,十分优秀!