码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2015-04-08 06:47:15      阅读:229      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!