Rai*_*ith 2 delphi styles richedit
(如果你能更好地理解和定义我的问题,有人会编辑标题.)
我遇到的问题是RichEdit的样式格式化"恢复"回到默认的"无" [],然后回到我设置的任何内容,例如粗体或斜体.
有问题的东西 - 我认为,因为我不知道它是如何破坏的 - 是一个程序(REMainLinesCheck),它检查RichEdit中的行数并删除第一个直到达到某个点(显示一次最多14行)像这样:
while REMain.Lines.Count > 14 do
REMain.Lines.Delete(0);
Run Code Online (Sandbox Code Playgroud)
我在其他过程中有6次出现上述过程,这些过程向RichEdit添加了行,但是没有RichEdit.SelAttributes.Style一行更改而只有一行,它只添加了一条粗线,如下所示:
REMain.SelAttributes.Style := [fsBold];
REMain.Lines.Add('something');
REMainLinesCheck;
Run Code Online (Sandbox Code Playgroud)
所以我已经删除了除了那个之外的所有事件,并且开始四处寻找,没过多久就看到它实际上工作正常,常规和粗体线正常添加和多余的线被删除 - 没有问题.但是,只要我将REMainLinesCheck程序重新引入另一个程序(为了清楚起见,我们称之为Proc3Lines,因为它的作用是:添加3行,然后调用多余的行检查),此Proc3Lines之后的每一行都应该是Bold不是......从我在这里经历的看来,似乎REMainLinesCheck在Proc3Lines中做了一些事情,因为没有它一切都很好.
显然,这不是一个相互调用的程序圈,但代码的其他部分与此RichEdit无关,更不用说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;
Run Code Online (Sandbox Code Playgroud)