ulogdetails.pas

来自「FMA is a free1 powerful phone editing to」· PAS 代码 · 共 198 行

PAS
198
字号
unit uLogDetails;

{
*******************************************************************************
* Descriptions: Event Viewer - display event details.
* $Source: /cvsroot/fma/fma/uLogDetails.pas,v $
* $Locker:  $
*
* Todo:
*
* Change Log:
* $Log: uLogDetails.pas,v $
*
}

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TntStdCtrls, ExtCtrls, TntExtCtrls, ComCtrls,
  TntComCtrls, uLogger, Buttons, ImgList, uLogObserver, ImageListXP,
  TntButtons;

type
  TfrmLogDetails = class(TForm)
    PageControl1: TTntPageControl;
    TabSheet1: TTntTabSheet;
    Image1: TTntImage;
    Bevel1: TTntBevel;
    lblDateTime: TTntLabel;
    OkButton: TTntButton;
    TntLabel1: TTntLabel;
    edSeverity: TTntEdit;
    TntLabel2: TTntLabel;
    edCategory: TTntEdit;
    mmoMessage: TTntMemo;
    TntLabel3: TTntLabel;
    btnHelpMe: TTntButton;
    ImageListXP1: TImageListXP;
    cbTrackMessages: TTntCheckBox;
    sbUp: TTntBitBtn;
    sbDown: TTntBitBtn;
    procedure OkButtonClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure sbUpClick(Sender: TObject);
    procedure sbDownClick(Sender: TObject);
    procedure btnHelpMeClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    FObserver: TLogBasicObserver;
    FLogEnumeration: ILogEnumeration;
    FLogItem: ILogItem;
    procedure Set_LogEnumeration(const Value: ILogEnumeration);
    procedure Set_LogItem(const Value: ILogItem);
    procedure DoClearView;
    procedure DoUpdateButtons;
    procedure LogChanged(Sender: TObject);
  public
    { Public declarations }
    property LogEnumeration: ILogEnumeration read FLogEnumeration write Set_LogEnumeration;
    property LogItem: ILogItem read FLogItem write Set_LogItem;
  end;

var
  frmLogDetails: TfrmLogDetails;

implementation

uses
  gnugettext, gnugettexthelpers, uDialogs, uLogWriters, Unit1;

{$R *.dfm}

{ TfrmLogDetails }

procedure TfrmLogDetails.Set_LogEnumeration(const Value: ILogEnumeration);
begin
  FLogEnumeration := Value;

  if Assigned(FLogEnumeration) then
    FObserver.Log := FLogEnumeration.Log
  else
    FObserver.Log := nil;

  LogItem := nil;
end;

procedure TfrmLogDetails.Set_LogItem(const Value: ILogItem);
begin
  FLogItem := Value;
  if Assigned(FLogItem) then begin
    lblDateTime.Caption := FormatDateTime('hh":"nn":"ss":"zzz" - "dddddd" ("dddd")"',FLogItem.DateTime);;
    edSeverity.Text := LogSeverityToString(FLogItem.Severity);
    edSeverity.Color := clWindow;
    edCategory.Text := LogCategoryToString(FLogItem.Category);
    edCategory.Color := clWindow;
    btnHelpMe.Enabled := FLogItem.Severity = lsError;
    ImageListXP1.GetIcon(Integer(FLogItem.Severity),Image1.Picture.Icon);
    mmoMessage.Color := clWindow;
    mmoMessage.Lines.BeginUpdate;
    try
      mmoMessage.Text := FLogItem.Message;
      mmoMessage.SelStart := 0;
      mmoMessage.SelLength := 0; //Length(FLogItem.Message);
    finally
      mmoMessage.Lines.EndUpdate;
    end;
  end
  else
    DoClearView;
  DoUpdateButtons;
end;

procedure TfrmLogDetails.OkButtonClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmLogDetails.DoClearView;
begin
  lblDateTime.Caption := '';
  edSeverity.Text := '';
  edSeverity.Color := clBtnFace;
  edCategory.Text := '';
  edCategory.Color := clBtnFace;
  mmoMessage.Text := '';
  mmoMessage.Color := clBtnFace;
  btnHelpMe.Enabled := False;
  sbUp.Enabled := False;
  sbDown.Enabled := False;
end;

procedure TfrmLogDetails.DoUpdateButtons;
begin
  if Assigned(FLogEnumeration) and Assigned(FLogItem) then begin
    sbUp.Enabled := FLogItem.Index <> FLogEnumeration.First.Index;
    sbDown.Enabled := FLogItem.Index <> FLogEnumeration.Last.Index;
  end
  else begin
    sbUp.Enabled := False;
    sbDown.Enabled := False;
  end;
end;

procedure TfrmLogDetails.FormShow(Sender: TObject);
begin
  OkButton.SetFocus;
  DoUpdateButtons;
end;

procedure TfrmLogDetails.sbUpClick(Sender: TObject);
begin
  LogItem := LogEnumeration.Previous(LogItem);
  OkButton.SetFocus;
end;

procedure TfrmLogDetails.sbDownClick(Sender: TObject);
begin
  LogItem := LogEnumeration.Next(LogItem);
  OkButton.SetFocus;
end;

procedure TfrmLogDetails.btnHelpMeClick(Sender: TObject);
begin
  Form1.Index1.Click;
end;

procedure TfrmLogDetails.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  FObserver.Free;
  FLogEnumeration := nil;
  FLogItem := nil;
  Action := caFree;
  frmLogDetails := nil;
end;

procedure TfrmLogDetails.FormCreate(Sender: TObject);
begin
  FObserver := TLogBasicObserver.Create(Self);
  FObserver.OnLogChanged := LogChanged;

{$IFNDEF VER150}
  Form1.ThemeManager1.CollectForms(Self);
{$ENDIF}
end;

procedure TfrmLogDetails.LogChanged(Sender: TObject);
begin
  DoUpdateButtons;
  while sbDown.Enabled and cbTrackMessages.Checked do
    sbDown.Click;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?