如何更改我在Delphi文件中输入的行的颜色,以便在以后可视化它时,不同类型的行具有不同的颜色

5hcedyr0  于 2022-09-21  发布在  其他
关注(0)|答案(1)|浏览(145)

我用Delphi编写了一个表格程序。我已经为程序中的不同动作做了一个日志。我非常确定我需要将它保存在RTF文件中,根据我输入的行的不同,使用不同的颜色,但不知道如何更改颜色。我还使用richedit打开文件,这样完成后我可以看到不同的颜色。

每当我想要将操作添加到日志文件(LogFill)中时,我都会使用这个过程来输入以前在字符串列表(LogText)中插入的行。通常,当有新的登录和一个帐户的会话结束时,我会这样做。目前我使用的是.txt文件,但我非常确定我需要RTF?

procedure AddToLogFile();

var
  i : integer;

begin
  with frmMain do
  begin
    i := 0;
    AssignFile(logFile, 'C:UserslyubenDesktopLyuben Airport DelphiLog FileLogFile.txt');
    Append(logFile);
    while i < logText.Count do
    begin

      Writeln(logFile, logText.Strings[i]);
      i := i + 1;
    end;
    CloseFile(logFile);
  end;
end;

这就是我如何将文本添加到字符串列表(LogText)

dateTimeNow := Now;

  logText.Add('<' + DateTimeToStr(dateTimeNow) + '> A new flight was added');

这就是我如何调用过程LogFileUse.AddToLogFile;

umuewwlo

umuewwlo1#

可以,您可以按如下方式使用TRichEDIT:

RichEdit1.Lines.Add('Hello World!');
RichEdit1.SelAttributes.Color := clRed;
RichEdit1.Lines.Add('Delphi rocks');
RichEdit1.Lines.SaveToFile('text.rtf');

您也可以直接以RTF格式创建日志文件。RTF文件格式实际上是纯文本格式。它包含选择所有文本属性的“标记”,有点像HTML。

直接编写RTF文件的最简单方法是生成一个示例(类似于上面生成的ext.rtf文件),然后使用记事本打开它。然后,您将很容易看到您必须使用哪些标记,并在日志文件中重现该标记。

以下代码可能会对您有所帮助:

procedure TForm2.Button2Click(Sender: TObject);
var
    LogFile : TextFile;
begin
    // Open the log file and write RTF header with color table
    AssignFile(LogFile, 'd:Temptext1.rtf');
    Rewrite(LogFile);
    WriteLn(LogFile, '{rtf1ansiansicpg1252deff0nouicompatdeflang1036{fonttbl{f0fnilfcharset0 Segoe UI;}}'#13#10 +
                     '{colortbl ;'#13#10 +
                     'red0green0blue0;'#13#10 +
                     'red255green0blue0;'#13#10 +
                     'red0green0blue255;}'#13#10 +
                     'viewkind4uc1'#13#10 +
                     'pardf0fs18'#13#10);

    // Write a few text in various colors    
    WriteLn(LogFile, 'cf1 Line in blackpar');
    WriteLn(LogFile, 'cf2 Line in redpar');
    WriteLn(LogFile, 'cf3 Line in bluepar');

    // Finalize and close the file
    WriteLn(LogFile, '}');
    CloseFile(LogFile);
end;

当然,您可以将生成的RTF文件加载到TRichEdit中以查看它。在您的实际代码中,您可能应该将所有这些都封装在一个漂亮的对象中,以便更容易地使用它。

另一个类似的选择是将您的日志文件格式化为HTML文档。

相关问题