如何在第一次出现时使TFrame的OnResize事件发生?

时间:2013-12-11 11:31:55

标签: delphi resize delphi-xe2 tframe

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

它有一个带有2列的drawgrid,在OnResize事件中,我将第2列扩展到可用空间的末尾。当表格被手动调整大小并将框架对齐设置为alTop时,这种方法有效。但是当表单首次出现时,即使调用FrameResize它也没有效果。 (虽然当我给它设置一个断点时它确实有了预期的效果)。

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

有什么想法吗?我确实尝试重写SetParent,但这不起作用。使用Xe2。

TIA 标记

1 个答案:

答案 0 :(得分:1)

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

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

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};