CodingFrom.pas 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. unit CodingFrom;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, ComCtrls, StdCtrls, ExtDlgs;
  6. type
  7. TCodingLoggerForm = class(TForm)
  8. lv1: TListView;
  9. btn1: TButton;
  10. dlg1: TSaveTextFileDialog;
  11. procedure btn1Click(Sender: TObject);
  12. procedure lv1AdvancedCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
  13. private
  14. { Private declarations }
  15. public
  16. procedure InsertLog(AMessage, ACode, ALoginName, AStrLevel: string);
  17. end;
  18. var
  19. CodingLoggerForm: TCodingLoggerForm;
  20. implementation
  21. {$R *.dfm}
  22. { TCodingLoggerForm }
  23. procedure TCodingLoggerForm.btn1Click(Sender: TObject);
  24. var
  25. logFile: TFileStream;
  26. I: Integer;
  27. str: string;
  28. strStream: TStringStream;
  29. begin
  30. if dlg1.Execute then
  31. begin
  32. logFile := TFileStream.Create(dlg1.FileName, fmCreate);
  33. strStream := TStringStream.Create('');
  34. try
  35. for I := 0 to lv1.Items.Count - 1 do
  36. begin
  37. str := Format('等级:%s;来源:%s;登录名:%s;内容:%s' + #13#10, [lv1.Items[i].SubItems[2], lv1.Items[i].SubItems[0], lv1.Items[i].SubItems[1], lv1.Items[i].Caption]);
  38. strStream.WriteString(str);
  39. end;
  40. strStream.Position := 0;
  41. logFile.CopyFrom(strStream, strStream.Size);
  42. finally
  43. FreeAndNil(logFile);
  44. FreeAndNil(strStream);
  45. end;
  46. end;
  47. end;
  48. procedure TCodingLoggerForm.InsertLog(AMessage, ACode, ALoginName, AStrLevel: string);
  49. var
  50. tmpStrs: TStringList;
  51. begin
  52. with lv1.Items.Insert(0) do
  53. begin
  54. Caption := AMessage;
  55. SubItems.Add(ACode);
  56. SubItems.Add(ALoginName);
  57. SubItems.Add(AStrLevel);
  58. end;
  59. end;
  60. procedure TCodingLoggerForm.lv1AdvancedCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
  61. begin
  62. if (Item.SubItems.Count < 3) then
  63. Exit;
  64. if (SameText(Item.SubItems[2], 'error')) then
  65. begin
  66. Sender.Canvas.Brush.Color := $0000FF;
  67. Sender.Canvas.Font.Color := clWhite;
  68. end
  69. end;
  70. end.