我尝试了许多方法来强制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)
在搜索网页时,我还没有看到完成此任务.
我会使用一些间接:
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事件紧密耦合.
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |