丰富编辑样式格式会自行更改



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

我遇到的问题是 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无关,更不用说除了我展示的一个地方之外,我没有为REMain更改RichEdit.SelAttributes.Style任何地方,在同一个单元中还有另一个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;
这对

我有用:

procedure TformStart.Proc;
var
endtxtpos: integer;
begin
  endtxtpos := Length(REMain.Text);
  REMain.Lines.Add('something');
  REMain.SelStart := endtxtpos-(REMain.Lines.Count-1);
  REMain.SelLength := Length('something');
  REMain.SelAttributes.Style := [fsBold];
end;

但是,由于我不知道更好,请批评并建议我如何做得更好。

相关内容

  • 没有找到相关文章

最新更新