-1

我有一个放置在表单上的框架。我希望在表单上放置一些此框架的实例。

它有一个带有 2 列的绘图网格,在 OnResize 事件中,我使第二列扩展到可用空间的末尾。这适用于手动调整窗体大小并将框架对齐设置为 alTop 的情况。但是当表单第一次出现时,即使 FrameResize 被调用,它也没有任何效果。(尽管当我在其上设置断点时它确实具有预期的效果)。

所以,我现在正在做的是从表单 OnShow 处理程序中调用 FrameResize,但这很难看。框架应该能够在没有表单帮助的情况下正确显示。

有任何想法吗?我确实尝试过覆盖 SetParent,但这没有用。使用 Xe2。

TIA 标志

4

1 回答 1

1

我已经通过 Delphi Team B Delphi 成员 Peter Above 的建议解决了这个问题。

我覆盖了框架的设定界限。它甚至在设置组件变量之前就被调用了,所以它看起来像这样

procedure TfaDupDisplay.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);  // Had to use SetBounds because OnRezise was not working
var grid: TDrawGrid;
begin
  inherited;
  if pnlWebData = nil then
    exit;
  pnlWebData.Width := Width div 2;
  for grid in TArray<TDrawGrid>.Create(grdData, grdDup) do
    grid.ColWidths[1] := grid.Width - grdData.ColWidths[0];
end{ SetBounds};
于 2013-12-12T01:54:49.530 回答