大佬教程收集整理的这篇文章主要介绍了delphi – ManualFloat没有使用指定的Rect,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Panel1.ManualFloat(Rect(500,500,600,600));
面板不是浮动在指定的Rect位置,而是浮动在某种窗口的默认位置.如何让面板(或其他控件)浮动到指定位置.但它确实具有正确的形状.我需要设置一些其他属性才能使其正常工作吗?
编辑:只是为了清楚.我希望上面的代码使面板相对于屏幕的左上角位于(500×500)的100×100正方形,但事实并非如此.形状是正确的,但位置不正确.如果后续控件浮动,则它们在屏幕上级联.
编辑2:这在Delphi 7中似乎不是问题,但在Delphi 2007中通过XE2(可能更早)
这是一个错误,因为这样做会强制WindowHandle创建(它还没有HandlE)
function TCustomForm.GetClientRect: TRect; begin if IsIconic(HandlE) then // <===
并调用Window的默认定位(级联yadda yadda …)重置Top和Left
修复方法是在TControl.CreateFloaTingDockSite中设置Top和Left属性之前设置ClientWidth和ClientHeight(Bounds:TRect)
更新:Controls.pas中的固定代码
function TControl.CreateFloaTingDockSite(Bounds: TRect): TWinControl; begin Result := nil; if (FloaTingDockSiteClass <> nil) and (FloaTingDockSiteClass <> TWinControlClass(ClassTypE)) then begin Result := FloaTingDockSiteClass.Create(Application); with Bounds do begin // SetTing Client area can create the window handle and reset Top and Left Result.ClientWidth := Right - Left; Result.ClientHeight := Bottom - Top; // it is now safe to position the window where asked Result.Top := Top; Result.Left := Left; end; end; end;
以上是大佬教程为你收集整理的delphi – ManualFloat没有使用指定的Rect全部内容,希望文章能够帮你解决delphi – ManualFloat没有使用指定的Rect所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。