// EurekaLog offers you feature to use generic error icon or icon of your application for error dialogs. // However, you may want to use some other icon for that. // There is no such feature in EurekaLog, but you can easily fix that with such code - see below. // Obviously, this code replaces icon for one particular dialog type (MS Classic style). // If you want to alter icon for several classes (such as EurekaLog-style dialog), // then you have to write more your own child classes. unit Unit1; interface // ... implementation uses EBase, ECore, EModules, EListView, EDialog, EDialogWinAPIMSClassic; {$R *.dfm} // To test our customization code procedure TForm1.Button1Click(Sender: TObject); begin raise Exception.Create('Error Message'); end; type // Our child class - inheriting from standard TMSClassicDialog TMSClassicDialogCustom = class(TMSClassicDialog) private FCustomIcon: HBITMAP; // our new icon protected // Init/done: procedure WindowInit; override; procedure WindowDone; override; // Replacing icon drawing: function Paint(const ADC: HDC; const ARect: TRect): Integer; override; end; { TMSClassicDialogCustom } procedure TMSClassicDialogCustom.WindowInit; var Ico: HIcon; begin inherited; Ico := LoadIcon(HInstance, 'CUSTOMICON'); FCustomIcon := IcoToBmp(Ico, GetStockObject(WHITE_BRUSH), 32, 32); end; function TMSClassicDialogCustom.Paint(const ADC: HDC; const ARect: TRect): Integer; begin Result := inherited; DrawBmp(ADC, FCustomIcon, MonitorLeft, MonitorTop, 32, 32); end; procedure TMSClassicDialogCustom.WindowDone; begin DeleteObject(FCustomIcon); inherited; end; initialization if IsEurekaLogInstalled then begin // You have to register dialog before using it: RegisterDialogClass(TMSClassicDialogCustom); // Once registered - now you can use it in options: CurrentEurekaLogOptions.ExceptionDialogType := TMSClassicDialogCustom.ClassName; end; end.