(如果您能更好地理解和定义我的问题,请有人编辑标题。)
我遇到的问题是 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(使用前将#替换为@)