用于执行FormResize事件的代码

Bil*_*ill 3 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;
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*nan 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;
Run Code Online (Sandbox Code Playgroud)

现在,您可以UpdateDockPanelLayout直接从代码中的任何位置进行呼叫.

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