首页 > Windows开发 > 详细

修复 XE8 Win 平台 Firemonkey Memo 卷动后会重叠的问题

时间:2015-04-08 06:44:15      阅读:561      评论:0      收藏:0      [点我收藏+]

问题:XE8 Firemonkey 在 Windows 平台 Memo 卷动时,在第 1 , 2 行会产生重叠现象。

修改前:

技术分享

修改后:

技术分享

 

适用:XE8 for Windows 平台

修复方法:

请将源码 FMX.Memo.Style.pas 复制到自己的工程目录里,再进行修改。

找到 TStyledMemo.TLines.RenderLayouts; 函数,修改如下:

procedure TStyledMemo.TLines.RenderLayouts;

..... 省略 ......

      if Line.Rect.IntersectsWith(Content) then
      begin
        if Line.Layout = nil then
        begin
          Layout := CreateLayout(FMemo.Model.Lines[I]);
          Size := TSizeF.Create(Max(1, Layout.Width), Layout.Height);
          HeightChanged := not SameValue(Line.Size.Height, Size.Height, TEpsilon.Position);
          ContentBoundsUpdated := ContentBoundsUpdated or (Line.Size <> Size);
          Line.Size := Size;

{+++> 修复 Memo 卷动后会重叠的问题, by 龟山阿卍}
          if (Line.Rect.Top < 0) then
             Line.Rect := TRectF.Create(-ViewPosition.X, -ViewPosition.Y, -ViewPosition.X + Line.Size.Width, Line.Size.Height)
          else
{<+++}

          Line.Rect := TRectF.Create(-ViewPosition.X, 0, -ViewPosition.X + Line.Size.Width, Line.Size.Height);
          if (I > 0) then
            Line.Rect.Offset(0, FLines[I - 1].Rect.Bottom);

..... 省略 ......

end;

参考图:

技术分享

 

修复 XE8 Win 平台 Firemonkey Memo 卷动后会重叠的问题

原文:http://www.cnblogs.com/onechen/p/4397399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!