Delphi中Form的position属性与代码自定义窗体位置

通过Form的Position属性可设置窗体的初始位置,如选择DesktopCenter为桌面中心,ScreenCenter为屏幕中心,等等。 这个属性在很多时候简化了程序代码。

但是,如果设置了position为ScreenCenter和DesktopCenter等,在窗体oncreate和onshow事件中使用代码控制窗体的位置就会不成功了,无论设置Self.Top,Self.Left为什么值,最后窗体都会自动根据Position自动调整位置。

我使用下面方法去在设置了position之后在有必要时使用代码重新调整窗体位置。

if(NeedAdjustPosition)  
begin  
   ///在需要调整窗体位置时要将postion属性改变  
   Self.Position := poDesigned;  
   Self.SetBounds(nLeft,nTop,nWidth,nHeight);  
end;   
  
///不需要调整窗体位置时,让delphi自已根据Postion处理