我在Delphi中有一个表单程序。我已经为程序中的不同操作做了日志。我很确定我需要根据我输入的行用不同的颜色将其保存在rtf文件中,但不知道如何更改颜色。我还用richedit打开了这个文件,这样我可以看到不同的颜色。
这是我用来输入以前插入字符串列表(logText(中的行的过程,只要我想将操作添加到日志文件(logfil(中。通常,我会在有新登录和帐户会话结束时进行此操作。目前我使用.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');
这就是我所说的程序日志文件使用。添加到日志文件;
是的,您可以像这样使用TRichEdit:
RichEdit1.Lines.Add('Hello World!');
RichEdit1.SelAttributes.Color := clRed;
RichEdit1.Lines.Add('Delphi rocks');
RichEdit1.Lines.SaveToFile('text.rtf');
您也可以直接以RTF格式创建日志文件。RTF文件格式实际上是纯文本格式。它包含";标签";它选择所有文本属性,有点像HTML。
直接编写RTF文件的最简单方法是生成一个示例(就像上面生成的text.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文档。