1
0
mirror of synced 2024-09-16 17:06:08 +00:00

Added: details view and Clear button to Observer.MonitorForm

This commit is contained in:
Mark van Renswoude 2014-05-20 09:19:04 +00:00
parent 041dfc71d6
commit b96c2a9d72
6 changed files with 302 additions and 111 deletions

BIN
Resources/Clear.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
Resources/Save.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -77,6 +77,9 @@ begin
SetLogResourceString(@LogMonitorFormColumnTime, 'Tijd');
SetLogResourceString(@LogMonitorFormColumnMessage, 'Melding');
SetLogResourceString(@LogMonitorFormButtonClear, 'Wissen');
SetLogResourceString(@LogMonitorFormButtonSaveDetails, 'Opslaan');
FLog := TX2Log.Create;
FLog.SetExceptionStrategy(TX2LogmadExceptExceptionStrategy.Create);

View File

@ -38,6 +38,10 @@ resourcestring
LogMonitorFormColumnTime = 'Time';
LogMonitorFormColumnMessage = 'Message';
{ Caption of the toolbar buttons }
LogMonitorFormButtonClear = 'Clear';
LogMonitorFormButtonSaveDetails = 'Save';
function GetLogLevelText(ALogLevel: TX2LogLevel): string;

View File

@ -3,7 +3,7 @@ object X2LogObserverMonitorForm: TX2LogObserverMonitorForm
Top = 0
Caption = 'Live Log'
ClientHeight = 519
ClientWidth = 658
ClientWidth = 990
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
@ -11,53 +11,192 @@ object X2LogObserverMonitorForm: TX2LogObserverMonitorForm
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnClose = FormClose
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object vstLog: TVirtualStringTree
object splDetails: TSplitter
Left = 634
Top = 0
Width = 6
Height = 500
Align = alRight
ResizeStyle = rsUpdate
ExplicitLeft = 637
ExplicitHeight = 519
end
object pnlDetails: TPanel
Left = 640
Top = 0
Width = 350
Height = 500
Align = alRight
BevelOuter = bvNone
TabOrder = 0
ExplicitHeight = 519
object tbDetails: TToolBar
Left = 0
Top = 0
Width = 350
Height = 22
AutoSize = True
ButtonWidth = 51
Images = ilsLog
List = True
ShowCaptions = True
TabOrder = 0
object tbSaveDetails: TToolButton
Left = 0
Top = 0
Caption = 'Save'
Enabled = False
ImageIndex = 5
end
end
object pnlBorder: TPanel
Left = 0
Top = 22
Width = 350
Height = 478
Align = alClient
BevelKind = bkFlat
BevelOuter = bvNone
TabOrder = 1
ExplicitLeft = 80
ExplicitTop = 240
ExplicitWidth = 185
ExplicitHeight = 41
object HeaderControl1: THeaderControl
Left = 0
Top = 0
Width = 346
Height = 17
Sections = <
item
AutoSize = True
ImageIndex = -1
Text = 'Details'
Width = 346
end>
NoSizing = True
ExplicitTop = 29
end
object reDetails: TRichEdit
Left = 0
Top = 17
Width = 346
Height = 457
Align = alClient
BorderStyle = bsNone
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Courier New'
Font.Style = []
ParentFont = False
PlainText = True
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 1
ExplicitTop = 29
ExplicitHeight = 486
end
end
end
object pnlLog: TPanel
Left = 0
Top = 0
Width = 658
Height = 519
Width = 634
Height = 500
Align = alClient
Header.AutoSizeIndex = 2
Header.Font.Charset = DEFAULT_CHARSET
Header.Font.Color = clWindowText
Header.Font.Height = -11
Header.Font.Name = 'Tahoma'
Header.Font.Style = []
Header.Options = [hoAutoResize, hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible, hoHeaderClickAutoSort]
Images = ilsLog
TabOrder = 0
TreeOptions.PaintOptions = [toHideFocusRect, toShowButtons, toShowDropmark, toThemeAware]
TreeOptions.SelectionOptions = [toFullRowSelect]
OnFreeNode = vstLogFreeNode
OnGetText = vstLogGetText
OnGetImageIndex = vstLogGetImageIndex
OnInitNode = vstLogInitNode
Columns = <
item
Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coShowDropMark, coVisible, coAllowFocus]
Position = 0
Width = 24
BevelOuter = bvNone
TabOrder = 1
ExplicitLeft = 408
ExplicitTop = 256
ExplicitWidth = 185
ExplicitHeight = 41
object vstLog: TVirtualStringTree
Left = 0
Top = 22
Width = 634
Height = 478
Align = alClient
Header.AutoSizeIndex = 2
Header.Font.Charset = DEFAULT_CHARSET
Header.Font.Color = clWindowText
Header.Font.Height = -11
Header.Font.Name = 'Tahoma'
Header.Font.Style = []
Header.Options = [hoAutoResize, hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible, hoHeaderClickAutoSort]
Images = ilsLog
TabOrder = 0
TreeOptions.PaintOptions = [toHideFocusRect, toShowButtons, toShowDropmark, toThemeAware]
TreeOptions.SelectionOptions = [toFullRowSelect]
OnFocusChanged = vstLogFocusChanged
OnFreeNode = vstLogFreeNode
OnGetText = vstLogGetText
OnGetImageIndex = vstLogGetImageIndex
OnInitNode = vstLogInitNode
ExplicitTop = 0
ExplicitWidth = 637
ExplicitHeight = 519
Columns = <
item
Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coShowDropMark, coVisible, coAllowFocus]
Position = 0
Width = 24
end
item
Position = 1
Width = 150
WideText = 'Time'
end
item
Position = 2
Width = 456
WideText = 'Message'
end>
end
object tbLog: TToolBar
Left = 0
Top = 0
Width = 634
Height = 22
AutoSize = True
ButtonWidth = 52
Caption = 'tbLog'
Images = ilsLog
List = True
ShowCaptions = True
TabOrder = 1
ExplicitWidth = 637
object tbClear: TToolButton
Left = 0
Top = 0
AutoSize = True
Caption = 'Clear'
Enabled = False
ImageIndex = 6
OnClick = tbClearClick
end
item
Position = 1
Width = 150
WideText = 'Time'
end
item
Position = 2
Width = 480
WideText = 'Message'
end>
end
end
object sbStatus: TStatusBar
Left = 0
Top = 500
Width = 990
Height = 19
Panels = <>
ExplicitLeft = 504
ExplicitTop = 272
ExplicitWidth = 0
end
object ilsLog: TImageList
Left = 584
Top = 48
Bitmap = {
494C010105004000480010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C010107004000540010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000002000000001002000000000000020
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -69,115 +208,115 @@ object X2LogObserverMonitorForm: TX2LogObserverMonitorForm
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000009B7C6C009B7C
6C009B7C6C009B7C6C009B7C6C009B7C6C009B7C6C009B7C6C009B7C6C009B7C
6C009B7C6C009B7C6C0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6C009B7C6C009B7C6C0000000000000000000000000000000000AF704E00A747
1100895E4600A7ABAB00B9B2AB00C8C7C300C9C9CC00AFAFAF0099A2A8008238
0D00A7471100A34B2100A47763000000000000000000000000002427AE00161C
AC005A5AA90000000000000000000000000000000000000000005353A9004F4F
A200000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000009B776600FFFF
FF00FAF4E900FAF4E900FAF4E900FAF4E900FAF4E900FAF4E900FAF4E900F9EF
E000F9EFE0009779670000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
E000F9EFE00097796700000000000000000000000000BC764500BE631700CD79
27009E877000B9875900CE700D00DCAF7A00FEFFFF00FEFFFF00D9E2EA00AD70
2400DD943500ECBE7500A4450E0000000000000000004E4EAB001844F600194D
F8001031D2002427AE000000000000000000000000004E4EAB000928D7000928
D7000313B3004E4EAB0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000A27F6F00FFFF
FF00DDC1B400DDC1B400DDC1B400DDC1B400DDBEAD00DDBEAD00DCBAA500DCBA
A500F9EFE0009779670000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
A500F9EFE00097796700000000000000000000000000C9680D00C0702800C36C
1E00A7876B00AE7C5A00BA580900C69A6C00D9DFE500FEFFFF00F4F9FC00A363
1D00D5872D00E5AF6900A4450E0000000000000000002022B1002451F9001F52
FF00194DF8001744E8001017AF00000000004747AC000928D7001344F9001041
F6000E3EF600041ABC006F6FAA00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000A3807000FFFF
FF00DBC4BD00DBC4BD00DDC1B400DDC1B400DDBEAD00DDBEAD00DCBAA500DCBA
A500FAF4E9009B7C6C0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
A500FAF4E9009B7C6C00000000000000000000000000C9680D00BB682300BF66
1900B4906E00B37C6000AF490000B5875E00BFC6CD00D5DEE400FEFFFF00A363
1D00D5872D00E5AF6900A4450E000000000000000000000000001832DB00295A
FF002451F9002451F9001A4AF200060EAF000F30DD00164AFE001344F9001041
F6000E3EF6000E3EF6002C2CA200000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000A9877800FFFF
FF00DBC6C200DBC4BD00DBC4BD00DDC1B400DBBFB400DCBAA500DDBEAD00DDBE
AD00FAF4E9009779670000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
AD00FAF4E90097796700000000000000000000000000C9680D00BF661900BF66
1900B07D5800C1BFBD00B0ACA80098918B009A8E8400A3978A00AEA79F009058
1F00A7672300DA954200A4450E0000000000000000007777B3001832DB003A6F
FF00295AFF00295AFF00295AFF002451F900194DF800194DF8001344F9001344
F9000E3EF600161CAC0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000AB897A00FFFF
FF00DBC6C200DBC6C200DBC4BD00DBC4BD00DBBFB400DCBAA500DDBEAD00DCBA
A500FAF4E9009B7C6C0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
A500FAF4E9009B7C6C00000000000000000000000000C9670A00B55D1B00B55D
1B00BA580900BA580900BA580900C2620E00C5671000C8691300C8691300CD79
2700D07F2A00D3893200A4450E000000000000000000000000006B6BB6001A25
C5003A6FFF003668FF00295AFF00295AFF002451F900194DF8001F52FF00123D
ED002427AE000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000AB897A00FFFF
FF00DBC6C200DBC4BD00DBC4BD00DBC4BD00DDC1B400DBBFB400DCBAA500DDBE
AD00FAF4E9009B7C6C0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
AD00FAF4E9009B7C6C00000000000000000000000000C9680D00B0551400B169
3300AF714200AF714200AF714200B0764200B0764200B0764200B0764200B076
4200BD804100D5872D00A4450E00000000000000000000000000000000000000
00002F2FB3002E4EE7003668FF00295AFF00295AFF002451F900123DED002C2C
A200000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000B1908000FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCF9F500FCF9F500FCF9F500FAF4
E900FAF4E9009B7C6C0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
E900FAF4E9009B7C6C00000000000000000000000000C2620E00AF490000B39D
8900E6F2FB00E4EDF300E4EDF300E4EDF300E1E9EF00D9E2EA00DFE3E600D9E2
EA00AD9A8A00D07F2600A4450E00000000000000000000000000000000000000
000000000000253FDF003A6FFF003668FF00295AFF00295AFF001B46EA002427
AE00000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000AF8F8000FFFF
FF00DFCDCB00DFCDCB00DBC6C200DBC4BD00DBC4BD00DDC1B400DDBEAD00DDBE
AD00FCF9F5009B7C6C0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
AD00FCF9F5009B7C6C00000000000000000000000000C9670A00A8430300B899
8400FEFFFF00D4D3D200BEBDBC00C1BFBD00C1BFBD00C2C1C000C9C9CC00DFE3
E600B19B8500CD792700A4450E00000000000000000000000000000000000000
00002B2CC0004B7CFF004170FF003A6FFF003A6FFF00295AFF00295AFF001031
D2004A4AB2000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000B1908000FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCF9F500FCF9F500FAF4
E900F0E8E0009B7C6C0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
E900F0E8E0009B7C6C00000000000000000000000000C2620E00A23C0000B899
8400FEFFFF00E4EDF300EEEEEE00EEEEEE00EEEEEE00E5E4E300DFE3E600E5E4
E300AD9A8A00CD792700A4450E00000000000000000000000000000000000000
0000253FDF00527CFA004170FF003464FF000C13C1004170FF00295AFF002451
F9000B1DC2000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000B1908000FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCF9F500A3807000A380
7000A3807000A380700000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
7000A3807000A3807000000000000000000000000000C2620E00A23C0000BC9C
8A00FEFFFF00DDDCDB00C1BFBD00C2C1C000C2C1C000C1BFBD00C9C9CC00E1E9
EF00B19B8500CD771F00A4450E00000000000000000000000000000000004F4F
BD00527CFA005081FF004B7CFF001A25C500000000001A25C5003A6FFF002451
F9001A4AF2001419B10000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000B8988800FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCF9F500FFFFFF00A3807000F5E2
D900B08E7D00AB9E980000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
D900B08E7D00AB9E9800000000000000000000000000C2620E009A310000BC9C
8A00FEFFFF00FEFFFF00EEEEEE00EEEEEE00EEEEEE00E5E4E300E5E4E300EEEE
EE00B39D8900C2701D00A9480D0000000000000000000000000000000000252D
D6006A9CFF005788FF002B46E7006B6BB60000000000000000001A25C500295A
FF002451F9001439DD004747AC00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000B8988800FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A3807000B08E
7D00AB9E98000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
7D00AB9E980000000000000000000000000000000000C562060093280000BC9C
8A00FEFFFF00E5E4E300D1CFCC00D1CFCC00C9C9CC00D1CFCC00D4D3D200E4ED
F300B9A38C008A4F1400B0551400000000000000000000000000000000004B4B
C8003951E2005081FF002B2CC000000000000000000000000000000000001628
D300265AFF000F2EE3002022B100000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000B8988800B898
8800B1908000B1908000B08E7D00B08E7D00AC887700AC887700A3807000AB9E
9800000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
98000000000000000000000000000000000000000000BF8D5800C0540200C8A4
8300D4D3D200D4D3D200D4D3D200D4D3D200C9C9CC00C8C7C300C1BFBD00BEBD
BC00B1947B00C0540200B07D5800000000000000000000000000000000000000
0000000000003E3EB90000000000000000000000000000000000000000006B6B
B6002F2FB3000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -317,11 +456,11 @@ object X2LogObserverMonitorForm: TX2LogObserverMonitorForm
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000424D3E000000000000003E000000
2800000040000000200000000100010000000000000100000000000000000000
000000000000000000000000FFFFFF00FFFF000000000000C003000000000000
C003000000000000C003000000000000C003000000000000C003000000000000
C003000000000000C003000000000000C003000000000000C003000000000000
C003000000000000C003000000000000C003000000000000C007000000000000
C00F000000000000FFFF000000000000FFFFFFFFFFFFFFFFF81FF81FFFFF8001
000000000000000000000000FFFFFF00FFFFFFFFFFFF0000C003C001C7CF0000
C003800183830000C003800181010000C0038001C0010000C003800180030000
C0038001C0070000C0038001F00F0000C0038001F80F0000C0038001F0070000
C0038001F0070000C0038001E0830000C0038001E0C10000C0078001E1E10000
C00F8001FBE70000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF81FF81FFFFF8001
F00FF00F80038001E007E00780018001C003C003800180018001800180018001
80018001C003800180018001E003800180018001E007800180018001F00F8001
80018001F00F8001C003C003F81F8001E007C007F81F8001F00FE00FFC3F8001

View File

@ -1,5 +1,7 @@
unit X2Log.Observer.MonitorForm;
// #ToDo3 -oMvR: 20-5-2014: pause button
interface
uses
System.Classes,
@ -10,7 +12,7 @@ uses
VirtualTrees,
Winapi.Messages,
X2Log.Intf;
X2Log.Intf, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls, Vcl.ToolWin;
const
@ -21,6 +23,17 @@ type
TX2LogObserverMonitorForm = class(TForm, IX2LogObserver)
vstLog: TVirtualStringTree;
ilsLog: TImageList;
splDetails: TSplitter;
HeaderControl1: THeaderControl;
pnlDetails: TPanel;
reDetails: TRichEdit;
pnlLog: TPanel;
tbLog: TToolBar;
tbDetails: TToolBar;
pnlBorder: TPanel;
tbClear: TToolButton;
tbSaveDetails: TToolButton;
sbStatus: TStatusBar;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
@ -28,6 +41,8 @@ type
procedure vstLogFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure vstLogGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
procedure vstLogGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
procedure vstLogFocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
procedure tbClearClick(Sender: TObject);
private class var
FInstances: TDictionary<IX2Log,TX2LogObserverMonitorForm>;
private
@ -195,6 +210,9 @@ begin
vstLog.NodeDataSize := SizeOf(TLogEntryNodeData);
vstLog.Header.Columns[ColumnTime].Text := GetLogResourceString(@LogMonitorFormColumnTime);
vstLog.Header.Columns[ColumnMessage].Text := GetLogResourceString(@LogMonitorFormColumnMessage);
tbClear.Caption := GetLogResourceString(@LogMonitorFormButtonClear);
tbSaveDetails.Caption := GetLogResourceString(@LogMonitorFormButtonSaveDetails);
end;
@ -248,9 +266,15 @@ var
nodeData: PLogEntryNodeData;
begin
// #ToDo1 -oMvR: 20-5-2014: thread safety; Log is not guaranteed to be called in the main thread!
if GetCurrentThreadId <> MainThreadID then
exit;
node := vstLog.AddChild(nil);
nodeData := vstLog.GetNodeData(node);
nodeData^.Initialize(ALevel, AMessage, ADetails);
tbClear.Enabled := True;
end;
@ -334,4 +358,25 @@ begin
end;
end;
procedure TX2LogObserverMonitorForm.vstLogFocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
var
nodeData: PLogEntryNodeData;
begin
if Assigned(Node) then
begin
nodeData := Sender.GetNodeData(Node);
reDetails.Text := nodeData^.Details;
end else
reDetails.Text := '';
end;
procedure TX2LogObserverMonitorForm.tbClearClick(Sender: TObject);
begin
vstLog.Clear;
tbClear.Enabled := False;
end;
end.