source: ExceptionLogger/UExceptionForm.pas

Last change on this file was 281, checked in by george, 13 years ago
File size: 3.3 KB
Line 
1unit UExceptionForm;
2
3{$mode objfpc}{$H+}
4
5interface
6
7uses
8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
9 CustomLineInfo, ComCtrls, ExtCtrls, UStackTrace, UExceptionLogger;
10
11type
12
13 { TExceptionForm }
14
15 TExceptionForm = class(TForm)
16 ButtonDetails: TButton;
17 ButtonClose: TButton;
18 ButtonKill: TButton;
19 CheckBoxIgnore: TCheckBox;
20 Image1: TImage;
21 Label1: TLabel;
22 LabelMessage: TLabel;
23 ListView1: TListView;
24 MemoExceptionInfo: TMemo;
25 PageControl1: TPageControl;
26 PanelBasic: TPanel;
27 PanelDescription: TPanel;
28 PanelButtons: TPanel;
29 TabSheet1: TTabSheet;
30 TabSheet2: TTabSheet;
31 procedure ButtonCloseClick(Sender: TObject);
32 procedure ButtonDetailsClick(Sender: TObject);
33 procedure ButtonKillClick(Sender: TObject);
34 procedure FormCreate(Sender: TObject);
35 procedure FormDestroy(Sender: TObject);
36 procedure FormShow(Sender: TObject);
37 procedure Image1Click(Sender: TObject);
38 public
39 Logger: TExceptionLogger;
40 procedure LoadStackTraceToListView(StackTrace: TStackTrace);
41 end;
42
43var
44 ExceptionForm: TExceptionForm;
45
46implementation
47
48{$R *.lfm}
49
50procedure TExceptionForm.FormShow(Sender: TObject);
51begin
52 Caption := SExceptionInfo;
53 PageControl1.Pages[0].Caption := SGeneral;
54 PageControl1.Pages[1].Caption := SCallStack;
55 Label1.Caption := SErrorOccured;
56 ButtonClose.Caption := SClose;
57 ButtonDetails.Caption := SDetails;
58 ButtonKill.Caption := STerminate;
59 CheckBoxIgnore.Caption := SIgnoreNextTime;
60 ListView1.Column[0].Caption := SIndex;
61 ListView1.Column[1].Caption := SAddress;
62 ListView1.Column[2].Caption := SLine;
63 ListView1.Column[3].Caption := SClass;
64 ListView1.Column[4].Caption := SProcedureMethod;
65 ListView1.Column[5].Caption := SUnit;
66
67 Height := PanelBasic.Height + PanelButtons.Height;
68 PageControl1.ActivePageIndex := 0;
69 CheckBoxIgnore.Checked := False;
70end;
71
72procedure TExceptionForm.Image1Click(Sender: TObject);
73begin
74
75end;
76
77procedure TExceptionForm.FormCreate(Sender: TObject);
78begin
79
80end;
81
82procedure TExceptionForm.ButtonCloseClick(Sender: TObject);
83begin
84 Close;
85end;
86
87procedure TExceptionForm.ButtonDetailsClick(Sender: TObject);
88begin
89 if PanelDescription.Height <= 1 then
90 Height := PanelBasic.Height + PanelButtons.Height + 200
91 else Height := PanelBasic.Height + PanelButtons.Height;
92 Application.ProcessMessages;
93 if MemoExceptionInfo.Text = '' then Logger.LoadDetails;
94end;
95
96procedure TExceptionForm.ButtonKillClick(Sender: TObject);
97begin
98 //Halt;
99 Application.Terminate;
100end;
101
102procedure TExceptionForm.FormDestroy(Sender: TObject);
103begin
104end;
105
106procedure TExceptionForm.LoadStackTraceToListView(StackTrace: TStackTrace);
107var
108 I: Integer;
109 NewItem: TListItem;
110begin
111 with ListView1, Items do
112 try
113 BeginUpdate;
114 Clear;
115 for I := 0 to StackTrace.Count - 1 do
116 with TStackFrameInfo(StackTrace[I]) do begin
117 NewItem := Add;
118 with NewItem do begin
119 Caption := IntToStr(Index);
120 SubItems.Add(IntToHex(Address, 8));
121 SubItems.Add(IntToStr(LineNumber));
122 SubItems.Add(FunctionClassName);
123 SubItems.Add(FunctionName);
124 SubItems.Add(Source);
125 end;
126 end;
127 finally
128 EndUpdate;
129 end;
130end;
131
132initialization
133
134ExceptionForm := TExceptionForm.Create(nil);
135
136finalization
137
138FreeAndNil(ExceptionForm);
139
140end.
141
Note: See TracBrowser for help on using the repository browser.