用于执行FormResize事件的代码

时间:2011-06-13 13:17:08

标签: delphi

我已经尝试了很多方法来强制执行FormResize事件而不需要包含SetWindowPos。使用鼠标调整窗体大小时,以下代码非常有效,但我还需要使用代码手动调用此代码。但我不希望表格以任何方式改变。

procedure TFormMain.FormResize( Sender: TObject );
begin
  dxDockPanelFolders1.Height := dxVertContainerDockSite1.Height div 3;
  dxDockPanelFiles1.Height := dxVertContainerDockSite1.Height div 3;
  dxDockPanelPreview1.Height := dxVertContainerDockSite1.Height div 3;
end;

在搜索网页时,我还没有看到完成此任务。

3 个答案:

答案 0 :(得分:5)

我会使用一些间接:

procedure TFormMain.UpdateDockPanelLayout;
begin
  dxDockPanelFolders1.Height := dxVertContainerDockSite1.Height div 3;
  dxDockPanelFiles1.Height := dxVertContainerDockSite1.Height div 3;
  dxDockPanelPreview1.Height := dxVertContainerDockSite1.Height div 3;
end;

procedure TFormMain.FormResize(Sender: TObject);
begin
  UpdateDockPanelLayout;
end;

现在,您可以直接从代码中的任意位置拨打UpdateDockPanelLayout

我意识到你可以打电话给FormResize并传递Sender,但这个解决方案让我觉得很脏。按照上面的建议执行此操作还允许您更具体地命名方法,而不是与驱动它的UI事件紧密耦合。

答案 1 :(得分:0)

你真的需要触发事件,还是仅仅执行事件处理程序就足够了?如果是,只需执行

FormResize(Self);

如果您确实需要触发事件,请执行

Resize;

答案 2 :(得分:-1)

呃,请致电

FormResize(nil);

何时需要调整控件?