加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 04:36:29 所属栏目:大数据 来源:网络整理
导读:问题:XE8 Firemonkey 在 Windows 平台 Memo 卷动时,在第 1,2 行会产生重叠现象。 更新:XE8 update 1 已经修复这个问题,无需再使用下面方法。 修改前: 修改后: 适用:XE8 for Windows 平台 修复方法: 请将源码FMX.Memo.Style.pas复制到自己的工程目录

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

更新:XE8 update 1 已经修复这个问题,无需再使用下面方法。

修改前:

修改后:

适用:XE8 for Windows 平台

修复方法:

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

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

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

  </span><span style="color: #0000ff;"&gt;if</span> Line.Rect.IntersectsWith(Content) <span style="color: #0000ff;"&gt;then</span>
  <span style="color: #0000ff;"&gt;begin</span>
    <span style="color: #0000ff;"&gt;if</span> Line.Layout = <span style="color: #0000ff;"&gt;nil</span> <span style="color: #0000ff;"&gt;then</span>
    <span style="color: #0000ff;"&gt;begin</span><span style="color: #000000;"&gt;
      Layout :</span>=<span style="color: #000000;"&gt; CreateLayout(FMemo.Model.Lines[I]);
      Size :</span>= TSizeF.Create(Max(<span style="color: #800080;"&gt;1</span><span style="color: #000000;"&gt;,Layout.Width),Layout.Height);
      HeightChanged :</span>= <span style="color: #0000ff;"&gt;not</span><span style="color: #000000;"&gt; SameValue(Line.Size.Height,Size.Height,TEpsilon.Position);
      ContentBoundsUpdated :</span>= ContentBoundsUpdated <span style="color: #0000ff;"&gt;or</span> (Line.Size <><span style="color: #000000;"&gt; Size);
      Line.Size :</span>=<span style="color: #000000;"&gt; Size;

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

      Line.Rect :</span>= TRectF.Create(-ViewPosition.X,<span style="color: #800080;"&gt;0</span>,Line.Size.Height);
      </span><span style="color: #0000ff;"&gt;if</span> (I > <span style="color: #800080;"&gt;0</span>) <span style="color: #0000ff;"&gt;then</span><span style="color: #000000;"&gt;
        Line.Rect.Offset(</span><span style="color: #800080;"&gt;0</span>,FLines[I - <span style="color: #800080;"&gt;1</span><span style="color: #000000;"&gt;].Rect.Bottom);

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

<span style="color: #0000ff;">end;

参考图:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读