anchor.diff:    (Control as TListBox).Canvas.Brush.Color:=tmpColor;  //Set background color
     (Control as TListBox).Canvas.FillRect(ARect);      //Draw a filled rectangle
     (Control as TListBox).Canvas.TextRect(ARect, 2, ARect.Top, (Control as TListBox).Items[Index]);  //Draw Itemtext
  +end;
  +
  +procedure TPerformedOperationResultsDlg.OnDrawSingleListLBItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState);
  +var
  +  tmpColor: TColor;                       //Background color
  +  prefix : string;
  +begin
  +  if odSelected in State then
  +    tmpColor := clHighlight
  +  else
  +    tmpColor:= clWhite;
  +
  +  prefix := '';
  +  if Assigned((Control as TListBox).Items.Objects[Index]) and ((Control as TListBox).Items.Objects[Index] is TPerformedOperation) then
  +  begin
  +    if ((Control as TListBox).Items.Objects[Index] as TPerformedOperation).Level <> '' then
  +      prefix := '[' + ((Control as TListBox).Items.Objects[Index] as TPerformedOperation).Level + '] ';
  +    if ((Control as TListBox).Items.Objects[Index] as TPerformedOperation).Level = TPerformedOperation.ERROR then
  +      tmpColor := FErrorsColor
  +    else if ((Control as TListBox).Items.Objects[Index] as TPerformedOperation).Level = TPerformedOperation.WARNING then
  +      tmpColor := FWarningsColor
  +    else if ((Control as TListBox).Items.Objects[Index] as TPerformedOperation).Level = TPerformedOperation.RESULT then
  +      tmpColor := FResultsColor;
  +  end;
  +  (Control as TListBox).Canvas.Brush.Color:=tmpColor;  //Set background color
  +  (Control as TListBox).Canvas.FillRect(ARect);      //Draw a filled rectangle
  +  (Control as TListBox).Canvas.TextRect(ARect, 2, ARect.Top, prefix + (Control as TListBox).Items[Index]);  //Draw Itemtext
   end;
   
   procedure TPerformedOperationResultsDlg.OnDblClickLB(Sender: TObject);
  
positive.code:   rsFileExistsCaptionDlg = 'File exists';
    rsFileExistsMsgDlg = 'A file with the same name already exists. Do you want to overwrite it?';
  
  type
    { TPerformedOperationResultsDlg }
  
    TPerformedOperationResultsDlg = class(TForm)
  
negative.code:   memo.ReadOnly:= true;
  end;
  
  procedure TPerformedOperationResultsDlg.InitWithSingleList(const aMessage: string; const aLog: TPerformedOperationResultsAsLog);
  var
    lb : TListBox;
    i : integer;
    pm : TPopupMenu;
    mi : TMenuItem;
  begin
    MainLabel.Caption:= sLineBreak + aMessage;
    FNotebook.Visible:= false;
    FTabs.Visible:= false;
    lb := TListBox.Create(BodyPanel);
    lb.Parent := BodyPanel;
    lb.Align := alClient;
    lb.Style := lbOwnerDrawFixed;
    lb.OnDrawItem:= @OnDrawSingleListLBItem;
    lb.Font.Size:= 12;
    ScaleFontForMagnification(lb.Font);
    for i := 0 to aLog.PerformedOperations.Count - 1 do
      lb.AddItem(aLog.PerformedOperations.Get(i).Message, aLog.PerformedOperations.Get(i));
  
    pm := TPopupMenu.Create(lb);
    lb.PopupMenu := pm;
    mi := TMenuItem.Create(pm);
    pm.Items.Add(mi);
    mi.Caption:= rsCopyToClipboardMenuItem;
    mi.Tag:=PtrInt(lb);
    mi.OnClick:= @OnCopyToClipboard;
  
    mi := TMenuItem.Create(pm);
    pm.Items.Add(mi);
    mi.Caption:= rsSaveToFileMenuItem;
    mi.OnClick:= @OnSaveToFile;
    mi.Tag:=PtrInt(lb);
  end;
  
  class procedure TPerformedOperationResultsDlg.ShowResults(const aOwnerForm: TForm; const aMessage: string; const aLog: TPerformedOperationResultsAsLog; const aDialogType: TPerformedOperationResultsDlgType);
  var
    Dlg : TPerformedOperationResultsDlg;
  begin
    Dlg := TPerformedOperationResultsDlg.Create(aOwnerForm);
    try
      if aDialogType = porTabbed then
        Dlg.Init(aMessage, aLog)
      else if aDialogType = porSingleList then
        Dlg.InitWithSingleList(aMessage, aLog);
      Dlg.ShowModal;
    finally
      Dlg.Free;
    end;
  end;
  
  class procedure TPerformedOperationResultsDlg.ShowResults(const aOwnerForm: TForm; const aMessage: string; const aLog: TStrings);
  var
    Dlg : TPerformedOperationResultsDlg;
  begin
  