Richedit 样式格式自行更改

2024-01-24

(如果您能更好地理解和定义我的问题,请有人编辑标题。)

我遇到的问题是 RichEdit 的样式格式“恢复”回默认的“无”,即[]然后回到我设置的任何内容,例如粗体或斜体。

有问题的事情 - 我认为,因为我不知道它是如何破坏事情的 - 是一个过程(REMainLinesCheck),它检查RichEdit中的行数并删除第一行,直到达到某个点(以显示一次最多 14 行),如下所示:

while REMain.Lines.Count > 14 do
  REMain.Lines.Delete(0); 

我在向 RichEdit 添加行的其他程序中出现了 6 次上述过程,但它们都没有改变RichEdit.SelAttributes.Style但有一个,只添加了一条粗体线,如下所示:

REMain.SelAttributes.Style := [fsBold];
REMain.Lines.Add('something');
REMainLinesCheck;

因此,我删除了除该事件之外的所有事件,并开始四处查看,没过多久就发现它实际上工作得很好,正常添加的规则和粗体行以及删除的多余行 - 没有问题。但是,一旦我将 REMainLinesCheck 过程重新引入到另一个过程中(为了清楚起见,我们将其称为 Proc3Lines,因为这就是它的作用:添加 3 行,然后调用对多余行的检查),此 Proc3Lines 后面的每一行都应该是粗体不是...从我在这里的经历来看,REMainLinesCheck 似乎在 Proc3Lines 中做了一些事情,因为没有它一切都很好。

显然不是一圈程序互相调用,但是代码的其他部分和这个RichEdit没有任何关系,更何况我不改RichEdit.SelAttributes.Style除了我已经展示的一个地方之外,在 REMain 的任何地方,同一单元中还有另一个 RichEdit,我确实像这样更改了其行的样式,但这不可能以任何方式相关......可以吗? (不,没有,我刚刚检查过。)

基本上:德尔福到底是什么?它不能比这更简单,而且我仍然失败,有人可以解释和/或解决这个问题吗?提出问题,如果有不清楚的地方,我会尽可能详细地说明。


要将格式应用于新添加的行,请使用以下命令:

procedure TForm1.Button1Click(Sender: TObject);
var
  LineIndex: Integer;
begin
  LineIndex := RichEdit1.Lines.Add('Something');
  RichEdit1.SelStart := RichEdit1.Perform(EM_LINEINDEX, LineIndex, 0);
  RichEdit1.SelLength := RichEdit1.Perform(EM_LINELENGTH, RichEdit1.SelStart, 0);
  RichEdit1.SelAttributes.Style := [fsBold];
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Richedit 样式格式自行更改 的相关文章

  • VirtualStringTree 正确/推荐使用

    我已经使用 virtualstringtree 一段时间了 我将它用于两个不同的用途 第一个是用于选择 显示数据的普通树 第二个是作为网格来显示 SQL 语句的输出 我加载到树中的所有数据都来自数据库 对于树示例 我有一个 ParentId
  • 我有进程 ID,需要使用 Delphi 5 以编程方式关闭关联进程

    任何人都可以帮我提供一个编码示例 以便在我拥有进程 ID 时关闭关联的进程 我将使用 Delphi 5 在 Windows 2003 服务器上以编程方式执行此操作 如果您有进程 ID 并希望强制终止该进程 可以使用以下代码 function
  • Firebird 或 NexusDB

    我知道有很多与 Delphi 数据库相关的问题 但我只考虑这两个数据库 我需要查询大约 100 000 条记录 根据您的经验 哪个更快 作为嵌入式 as C S Thanks 我还没用过 Nexus tbh 但我经常使用 Firebird
  • 如何使用 IdTCPClient 等待来自服务器的字符串?

    我的 IdTelnet indy 10 1 有问题 我无法以 Unicode 模式从服务器读取数据 现在我想用 IdTCPClient 编写 telnet 终端 服务器有时发送一行 有时发送越来越多的行 但发送之间没有固定的时间 现在我的问
  • 在 XMLDocument 中使用 DocumentElement 时发生访问冲突

    当我尝试使用时 我总是遇到访问冲突DocumentElement of the XMLDocument 我创造XMLDocument基于某些文件的存在 错误信息 项目project1 exe引发异常类EAccessViolation 消息
  • 让线程在窗体关闭时保持运行

    我在我的应用程序上创建了一个同步线程 我想知道如果我关闭申请表 是否有办法让该线程保持打开状态 直到完成同步过程 调用线程的WaitFor方法在您的 DPR 文件中 之后Application Run线 如果线程已经运行完毕 那么WaitF
  • “已发布集 '%s' 的大小大于 4 字节”。如何修复这个编译器错误?

    我有一组包含 138 个值的枚举值 就像是 type TSomething sOne sTwo sThree sOnehundredAndThirtyeight TSomethings set of TSomething TSomethin
  • Delphi:如何计算大文件的 SHA 哈希值

    您好 我需要生成 5 Gig 文件的 SHA 您知道有一个非基于字符串的 Delphi 库可以做到这一点吗 你应该使用DCPcrypt v2 http www cityinthesky co uk cryptography html读取缓冲
  • 使用 IOmniTaskControl/TOmniWorker 时等待 Invoke 完成

    我使用 TOmniWorker 创建了 IOmniTaskControl 以便我可以定期在特定线程上运行代码块 因此 我将根据需要在此 IOmniTaskControl 上调用 Invoke 当我这样做时 有时需要等待与该工作相关的执行完成
  • 如何等到我启动的程序使用完该文件后才删除该文件?

    我一直在寻找一种方法来打开通过 Delphi 应用程序及其适当的应用程序保存到我的计算机上的文件 该文件存储在 SQL 数据库中的 Varbinary 字段中 加载到内存流中 然后通过 TMemoryStream 的 SavetoFile
  • 如何指定从 Delphi TStream 读取的组件的所有者?

    我正在从流中读取组件 并且希望能够指定 Owner 属性 var TComponent comp stream Seek 0 soFromBeginning comp stream ReadComponent nil 谁拥有 comp 我该
  • TRichEdit和URL高亮问题

    我正在使用当前代码在 TRichEdit 上突出显示 URL procedure TForm1 WndProc var Message TMessage var p TENLink strURL string begin if Messag
  • 如何在显示表单之前强制将焦点集中在组件上

    我必须展示 与ShowModal 一个有很多的表格TEdit但我想把注意力集中在TEdit 但并不总是相同 具体取决于上下文 我不能使用SetFocus之前ShowModal 因为表单未激活 并使用该组件Name or Tag在我的应用程序
  • 如何在以管理员身份运行模式下部署应用程序?

    如何部署应用程序 使其需要管理员权限 而无需最终用户手动执行此操作 我使用 Delphi 2009 来构建该应用程序 您可以使用以下命令通知 Windows 您的应用程序需要以管理员身份运行requestedExecutionLevel应用
  • WPF - 全局样式?

    有没有办法为我的 WPF 应用程序设置全局样式 我希望做的是将样式应用于所有也有图像子项的按钮 嗯 有点 这是您可以做的一种包罗万象的方法 将以下元素放入您的 App xaml 中 所有按钮都会发生变化 除了您手动应用样式的按钮 但是 如果
  • 使用 gmail 和 Indy 发送电子邮件

    我正在尝试使用 gmail 从 Delphi 发送电子邮件 我有 Indy 10 5 9 0 和 Delphi XE3 我从以下位置获得了示例代码 http www andrecelestino com delphi xe envio de
  • 如何解决内存分段并强制FastMM释放内存给OS?

    注意 32 位应用程序不计划迁移到 64 位 我正在使用一个非常消耗内存的应用程序 并且几乎优化了与内存分配 取消分配相关的所有相关路径 应用程序本身没有内存泄漏 没有句柄泄漏 没有任何其他类型的泄漏 据我所知并经过测试 我无法触及的第 3
  • Delphi - 如何将通用参数传递给接受 const 参数数组的函数

    我有一个 基类 其中包含一个 函数 该函数接受 const 数组 类型的参数 如下所示 type TBaseClass class TObject public procedure NotifyAll const AParams array
  • XE2 中的 COM 是否损坏?我该如何解决它?

    Update XE2 Update 2 修复了下述错误 下面的程序是从实际程序中截取的 在 XE2 中失败并出现异常 这是 2010 年的回归 我没有 XE 来测试 但我希望该程序在 XE 上运行良好 感谢 Primo 确认代码在 XE 上
  • vcl组合框并不总是显示它有焦点

    当我从另一个控件切换到组合框时 它会显示文本周围带有虚线的框 但是当我以编程方式将控件设置为活动状态时 它不会显示相同的焦点指示器 这种行为有解决方法吗 我有德尔福XE6 MCVE unit Unit27 interface uses Wi

随机推荐