Added: 64-bits packages
Added: MaxEntries property for MonitorForm observer Added: Lock/Unlock methods for MonitorForm observer (receive log messages while the form is hidden) Added: MonitorForm log messages received while Paused will appear when unpausing Fixed: 64-bits compatibility for NamedPipe observer
This commit is contained in:
parent
4efc4000ff
commit
fb05ff8401
@ -5,35 +5,41 @@
|
|||||||
<ProjectVersion>13.4</ProjectVersion>
|
<ProjectVersion>13.4</ProjectVersion>
|
||||||
<FrameworkType>VCL</FrameworkType>
|
<FrameworkType>VCL</FrameworkType>
|
||||||
<Base>True</Base>
|
<Base>True</Base>
|
||||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
<Config Condition="'$(Config)'==''">Build</Config>
|
||||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
<TargetedPlatforms>1</TargetedPlatforms>
|
<TargetedPlatforms>3</TargetedPlatforms>
|
||||||
<AppType>Package</AppType>
|
<AppType>Package</AppType>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
|
||||||
|
<Base_Win64>true</Base_Win64>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||||
<Base_Win32>true</Base_Win32>
|
<Base_Win32>true</Base_Win32>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
|
<PropertyGroup Condition="'$(Config)'=='Build' or '$(Cfg_1)'!=''">
|
||||||
<Cfg_1>true</Cfg_1>
|
<Cfg_1>true</Cfg_1>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
|
||||||
|
<Cfg_1_Win64>true</Cfg_1_Win64>
|
||||||
|
<CfgParent>Cfg_1</CfgParent>
|
||||||
|
<Cfg_1>true</Cfg_1>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
||||||
<Cfg_1_Win32>true</Cfg_1_Win32>
|
<Cfg_1_Win32>true</Cfg_1_Win32>
|
||||||
<CfgParent>Cfg_1</CfgParent>
|
<CfgParent>Cfg_1</CfgParent>
|
||||||
<Cfg_1>true</Cfg_1>
|
<Cfg_1>true</Cfg_1>
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
|
|
||||||
<Cfg_2>true</Cfg_2>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Base)'!=''">
|
<PropertyGroup Condition="'$(Base)'!=''">
|
||||||
<DCC_DUPLICATE_CTOR_DTOR>false</DCC_DUPLICATE_CTOR_DTOR>
|
<DCC_DUPLICATE_CTOR_DTOR>false</DCC_DUPLICATE_CTOR_DTOR>
|
||||||
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
|
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
|
||||||
@ -49,11 +55,18 @@
|
|||||||
<DCC_DcuOutput>$(DELPHILIB)</DCC_DcuOutput>
|
<DCC_DcuOutput>$(DELPHILIB)</DCC_DcuOutput>
|
||||||
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win64)'!=''">
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<DCC_BplOutput>$(DELPHIBIN64)</DCC_BplOutput>
|
||||||
|
<DCC_DcpOutput>$(DELPHIBIN64)</DCC_DcpOutput>
|
||||||
|
<DCC_DcuOutput>$(DELPHILIB64)</DCC_DcuOutput>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
||||||
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
||||||
@ -62,17 +75,15 @@
|
|||||||
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
||||||
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
|
||||||
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
|
||||||
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
|
||||||
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
|
||||||
<DCC_DebugInformation>false</DCC_DebugInformation>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<DelphiCompile Include="$(MainSource)">
|
<DelphiCompile Include="$(MainSource)">
|
||||||
<MainSource>MainSource</MainSource>
|
<MainSource>MainSource</MainSource>
|
||||||
@ -96,14 +107,10 @@
|
|||||||
<DCCReference Include="..\X2Log.Details.Registry.pas"/>
|
<DCCReference Include="..\X2Log.Details.Registry.pas"/>
|
||||||
<DCCReference Include="..\X2Log.Util.Stream.pas"/>
|
<DCCReference Include="..\X2Log.Util.Stream.pas"/>
|
||||||
<DCCReference Include="..\X2Log.Translations.Dutch.pas"/>
|
<DCCReference Include="..\X2Log.Translations.Dutch.pas"/>
|
||||||
<BuildConfiguration Include="Release">
|
|
||||||
<Key>Cfg_2</Key>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
</BuildConfiguration>
|
|
||||||
<BuildConfiguration Include="Base">
|
<BuildConfiguration Include="Base">
|
||||||
<Key>Base</Key>
|
<Key>Base</Key>
|
||||||
</BuildConfiguration>
|
</BuildConfiguration>
|
||||||
<BuildConfiguration Include="Debug">
|
<BuildConfiguration Include="Build">
|
||||||
<Key>Cfg_1</Key>
|
<Key>Cfg_1</Key>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
</BuildConfiguration>
|
</BuildConfiguration>
|
||||||
@ -147,7 +154,7 @@
|
|||||||
</Delphi.Personality>
|
</Delphi.Personality>
|
||||||
<Deployment/>
|
<Deployment/>
|
||||||
<Platforms>
|
<Platforms>
|
||||||
<Platform value="Win64">False</Platform>
|
<Platform value="Win64">True</Platform>
|
||||||
<Platform value="OSX32">False</Platform>
|
<Platform value="OSX32">False</Platform>
|
||||||
<Platform value="Win32">True</Platform>
|
<Platform value="Win32">True</Platform>
|
||||||
</Platforms>
|
</Platforms>
|
||||||
|
Binary file not shown.
@ -7,12 +7,17 @@
|
|||||||
<Base>True</Base>
|
<Base>True</Base>
|
||||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
<TargetedPlatforms>1</TargetedPlatforms>
|
<TargetedPlatforms>3</TargetedPlatforms>
|
||||||
<AppType>Package</AppType>
|
<AppType>Package</AppType>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
|
||||||
|
<Base_Win64>true</Base_Win64>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||||
<Base_Win32>true</Base_Win32>
|
<Base_Win32>true</Base_Win32>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
@ -23,6 +28,12 @@
|
|||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
|
||||||
|
<Cfg_1_Win64>true</Cfg_1_Win64>
|
||||||
|
<CfgParent>Cfg_1</CfgParent>
|
||||||
|
<Cfg_1>true</Cfg_1>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
||||||
<Cfg_1_Win32>true</Cfg_1_Win32>
|
<Cfg_1_Win32>true</Cfg_1_Win32>
|
||||||
<CfgParent>Cfg_1</CfgParent>
|
<CfgParent>Cfg_1</CfgParent>
|
||||||
@ -49,6 +60,14 @@
|
|||||||
<DCC_DcuOutput>$(DELPHILIB)</DCC_DcuOutput>
|
<DCC_DcuOutput>$(DELPHILIB)</DCC_DcuOutput>
|
||||||
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win64)'!=''">
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<DCC_BplOutput>$(DELPHIBIN64)</DCC_BplOutput>
|
||||||
|
<DCC_DcpOutput>$(DELPHIBIN64)</DCC_DcpOutput>
|
||||||
|
<DCC_DcuOutput>$(DELPHILIB64)</DCC_DcuOutput>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
@ -62,6 +81,10 @@
|
|||||||
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
||||||
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
@ -135,7 +158,7 @@
|
|||||||
</Delphi.Personality>
|
</Delphi.Personality>
|
||||||
<Deployment/>
|
<Deployment/>
|
||||||
<Platforms>
|
<Platforms>
|
||||||
<Platform value="Win64">False</Platform>
|
<Platform value="Win64">True</Platform>
|
||||||
<Platform value="OSX32">False</Platform>
|
<Platform value="OSX32">False</Platform>
|
||||||
<Platform value="Win32">True</Platform>
|
<Platform value="Win32">True</Platform>
|
||||||
</Platforms>
|
</Platforms>
|
||||||
|
Binary file not shown.
@ -7,12 +7,17 @@
|
|||||||
<Base>True</Base>
|
<Base>True</Base>
|
||||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
<TargetedPlatforms>1</TargetedPlatforms>
|
<TargetedPlatforms>3</TargetedPlatforms>
|
||||||
<AppType>Package</AppType>
|
<AppType>Package</AppType>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
|
||||||
|
<Base_Win64>true</Base_Win64>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||||
<Base_Win32>true</Base_Win32>
|
<Base_Win32>true</Base_Win32>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
@ -23,6 +28,12 @@
|
|||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
|
||||||
|
<Cfg_1_Win64>true</Cfg_1_Win64>
|
||||||
|
<CfgParent>Cfg_1</CfgParent>
|
||||||
|
<Cfg_1>true</Cfg_1>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
||||||
<Cfg_1_Win32>true</Cfg_1_Win32>
|
<Cfg_1_Win32>true</Cfg_1_Win32>
|
||||||
<CfgParent>Cfg_1</CfgParent>
|
<CfgParent>Cfg_1</CfgParent>
|
||||||
@ -49,11 +60,18 @@
|
|||||||
<DCC_DcuOutput>$(DELPHILIB)</DCC_DcuOutput>
|
<DCC_DcuOutput>$(DELPHILIB)</DCC_DcuOutput>
|
||||||
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win64)'!=''">
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<DCC_BplOutput>$(DELPHIBIN64)</DCC_BplOutput>
|
||||||
|
<DCC_DcpOutput>$(DELPHIBIN64)</DCC_DcpOutput>
|
||||||
|
<DCC_DcuOutput>$(DELPHILIB64)</DCC_DcuOutput>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
||||||
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
||||||
@ -62,6 +80,10 @@
|
|||||||
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
||||||
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
|
||||||
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
@ -134,7 +156,7 @@
|
|||||||
</Delphi.Personality>
|
</Delphi.Personality>
|
||||||
<Deployment/>
|
<Deployment/>
|
||||||
<Platforms>
|
<Platforms>
|
||||||
<Platform value="Win64">False</Platform>
|
<Platform value="Win64">True</Platform>
|
||||||
<Platform value="OSX32">False</Platform>
|
<Platform value="OSX32">False</Platform>
|
||||||
<Platform value="Win32">True</Platform>
|
<Platform value="Win32">True</Platform>
|
||||||
</Platforms>
|
</Platforms>
|
||||||
|
Binary file not shown.
@ -130,8 +130,6 @@ object MainForm: TMainForm
|
|||||||
end
|
end
|
||||||
object tsNamedPipe: TTabSheet
|
object tsNamedPipe: TTabSheet
|
||||||
Caption = 'Named Pipe'
|
Caption = 'Named Pipe'
|
||||||
ExplicitLeft = 16
|
|
||||||
ExplicitTop = 33
|
|
||||||
DesignSize = (
|
DesignSize = (
|
||||||
587
|
587
|
||||||
299)
|
299)
|
||||||
@ -230,6 +228,42 @@ object MainForm: TMainForm
|
|||||||
Caption = 'Monitor Form Observer'
|
Caption = 'Monitor Form Observer'
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
OnClick = btnMonitorFormClick
|
OnClick = btnMonitorFormClick
|
||||||
|
ExplicitLeft = 151
|
||||||
|
ExplicitTop = -6
|
||||||
|
end
|
||||||
|
object btnLock: TButton
|
||||||
|
AlignWithMargins = True
|
||||||
|
Left = 151
|
||||||
|
Top = 0
|
||||||
|
Width = 64
|
||||||
|
Height = 25
|
||||||
|
Margins.Left = 6
|
||||||
|
Margins.Top = 0
|
||||||
|
Margins.Right = 0
|
||||||
|
Margins.Bottom = 0
|
||||||
|
Align = alLeft
|
||||||
|
Cancel = True
|
||||||
|
Caption = 'Lock'
|
||||||
|
TabOrder = 2
|
||||||
|
OnClick = btnLockClick
|
||||||
|
ExplicitLeft = 149
|
||||||
|
end
|
||||||
|
object btnUnlock: TButton
|
||||||
|
AlignWithMargins = True
|
||||||
|
Left = 221
|
||||||
|
Top = 0
|
||||||
|
Width = 64
|
||||||
|
Height = 25
|
||||||
|
Margins.Left = 6
|
||||||
|
Margins.Top = 0
|
||||||
|
Margins.Right = 0
|
||||||
|
Margins.Bottom = 0
|
||||||
|
Align = alLeft
|
||||||
|
Cancel = True
|
||||||
|
Caption = 'Unlock'
|
||||||
|
TabOrder = 3
|
||||||
|
OnClick = btnUnlockClick
|
||||||
|
ExplicitLeft = 359
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object pcDispatch: TPageControl
|
object pcDispatch: TPageControl
|
||||||
@ -424,7 +458,7 @@ object MainForm: TMainForm
|
|||||||
Left = 552
|
Left = 552
|
||||||
Top = 176
|
Top = 176
|
||||||
Bitmap = {
|
Bitmap = {
|
||||||
494C01010200140044000C000C00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
494C01010200140048000C000C00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||||
0000000000003600000028000000300000000C00000001002000000000000009
|
0000000000003600000028000000300000000C00000001002000000000000009
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
@ -59,6 +59,8 @@ type
|
|||||||
lblNamedPipeServers: TLabel;
|
lblNamedPipeServers: TLabel;
|
||||||
btnNamedPipeRefresh: TButton;
|
btnNamedPipeRefresh: TButton;
|
||||||
lbNamedPipeServers: TListBox;
|
lbNamedPipeServers: TListBox;
|
||||||
|
btnLock: TButton;
|
||||||
|
btnUnlock: TButton;
|
||||||
|
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure FormDestroy(Sender: TObject);
|
procedure FormDestroy(Sender: TObject);
|
||||||
@ -68,6 +70,8 @@ type
|
|||||||
procedure edtMessageKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure edtMessageKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
procedure btnExceptionClick(Sender: TObject);
|
procedure btnExceptionClick(Sender: TObject);
|
||||||
procedure btnMonitorFormClick(Sender: TObject);
|
procedure btnMonitorFormClick(Sender: TObject);
|
||||||
|
procedure btnLockClick(Sender: TObject);
|
||||||
|
procedure btnUnlockClick(Sender: TObject);
|
||||||
procedure btnEventStartClick(Sender: TObject);
|
procedure btnEventStartClick(Sender: TObject);
|
||||||
procedure btnEventStopClick(Sender: TObject);
|
procedure btnEventStopClick(Sender: TObject);
|
||||||
procedure btnFileStartClick(Sender: TObject);
|
procedure btnFileStartClick(Sender: TObject);
|
||||||
@ -134,6 +138,8 @@ begin
|
|||||||
|
|
||||||
pcDispatch.ActivePageIndex := 0;
|
pcDispatch.ActivePageIndex := 0;
|
||||||
pcObservers.ActivePageIndex := 0;
|
pcObservers.ActivePageIndex := 0;
|
||||||
|
|
||||||
|
DefaultMaxEntries := 10;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -243,6 +249,18 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TMainForm.btnLockClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
TX2LogObserverMonitorForm.LockInstance(FLog);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TMainForm.btnUnlockClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
TX2LogObserverMonitorForm.UnlockInstance(FLog);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TMainForm.btnEventStartClick(Sender: TObject);
|
procedure TMainForm.btnEventStartClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if not Assigned(FEventObserver) then
|
if not Assigned(FEventObserver) then
|
||||||
@ -321,7 +339,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
procedure TMainForm.btnNamedPipeRefreshClick(Sender: TObject);
|
procedure TMainForm.btnNamedPipeRefreshClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
server: TX2LogNamedPipeServerInfo;
|
server: TX2LogNamedPipeServerInfo;
|
||||||
|
@ -156,7 +156,6 @@ object X2LogObserverMonitorForm: TX2LogObserverMonitorForm
|
|||||||
OnGetText = vstLogGetText
|
OnGetText = vstLogGetText
|
||||||
OnGetImageIndex = vstLogGetImageIndex
|
OnGetImageIndex = vstLogGetImageIndex
|
||||||
OnGetHint = vstLogGetHint
|
OnGetHint = vstLogGetHint
|
||||||
OnInitNode = vstLogInitNode
|
|
||||||
Columns = <
|
Columns = <
|
||||||
item
|
item
|
||||||
Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coShowDropMark, coVisible, coAllowFocus]
|
Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coShowDropMark, coVisible, coAllowFocus]
|
||||||
|
@ -25,6 +25,10 @@ const
|
|||||||
CM_REENABLE = WM_APP + 1;
|
CM_REENABLE = WM_APP + 1;
|
||||||
|
|
||||||
|
|
||||||
|
var
|
||||||
|
DefaultMaxEntries: Cardinal = 1000;
|
||||||
|
|
||||||
|
|
||||||
type
|
type
|
||||||
TX2LogObserverMonitorForm = class;
|
TX2LogObserverMonitorForm = class;
|
||||||
TMonitorFormDictionary = TObjectDictionary<IX2LogObservable,TX2LogObserverMonitorForm>;
|
TMonitorFormDictionary = TObjectDictionary<IX2LogObservable,TX2LogObserverMonitorForm>;
|
||||||
@ -66,7 +70,6 @@ type
|
|||||||
|
|
||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||||
procedure vstLogInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
|
|
||||||
procedure vstLogFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
procedure vstLogFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||||
procedure vstLogGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
|
procedure vstLogGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
|
||||||
procedure vstLogGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; var LineBreakStyle: TVTTooltipLineBreakStyle; var HintText: string);
|
procedure vstLogGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; var LineBreakStyle: TVTTooltipLineBreakStyle; var HintText: string);
|
||||||
@ -85,11 +88,14 @@ type
|
|||||||
FInstances: TMonitorFormDictionary;
|
FInstances: TMonitorFormDictionary;
|
||||||
private
|
private
|
||||||
FFreeOnClose: Boolean;
|
FFreeOnClose: Boolean;
|
||||||
|
FClosed: Boolean;
|
||||||
|
FLockCount: Integer;
|
||||||
FLogObservable: IX2LogObservable;
|
FLogObservable: IX2LogObservable;
|
||||||
FLogAttached: Boolean;
|
FLogAttached: Boolean;
|
||||||
FPausedLogCount: Integer;
|
FPausedLogCount: Integer;
|
||||||
FDetails: IX2LogDetails;
|
FDetails: IX2LogDetails;
|
||||||
FVisibleLevels: TX2LogLevels;
|
FVisibleLevels: TX2LogLevels;
|
||||||
|
FMaxEntries: Cardinal;
|
||||||
protected
|
protected
|
||||||
class function GetInstance(ALog: IX2LogObservable; out AForm: TX2LogObserverMonitorForm): Boolean;
|
class function GetInstance(ALog: IX2LogObservable; out AForm: TX2LogObserverMonitorForm): Boolean;
|
||||||
class procedure RemoveInstance(AForm: TX2LogObserverMonitorForm);
|
class procedure RemoveInstance(AForm: TX2LogObserverMonitorForm);
|
||||||
@ -100,6 +106,9 @@ type
|
|||||||
procedure WMEnable(var Msg: TWMEnable); message WM_ENABLE;
|
procedure WMEnable(var Msg: TWMEnable); message WM_ENABLE;
|
||||||
procedure CMReenable(var Msg: TMessage); message CM_REENABLE;
|
procedure CMReenable(var Msg: TMessage); message CM_REENABLE;
|
||||||
|
|
||||||
|
procedure AttachLog;
|
||||||
|
procedure DetachLog;
|
||||||
|
|
||||||
procedure UpdateUI;
|
procedure UpdateUI;
|
||||||
procedure UpdateStatus;
|
procedure UpdateStatus;
|
||||||
procedure UpdateFilter;
|
procedure UpdateFilter;
|
||||||
@ -113,7 +122,9 @@ type
|
|||||||
|
|
||||||
procedure SetVisibleDetails(AControl: TControl);
|
procedure SetVisibleDetails(AControl: TControl);
|
||||||
|
|
||||||
|
property Closed: Boolean read FClosed;
|
||||||
property Details: IX2LogDetails read FDetails;
|
property Details: IX2LogDetails read FDetails;
|
||||||
|
property LockCount: Integer read FLockCount;
|
||||||
property LogObservable: IX2LogObservable read FLogObservable;
|
property LogObservable: IX2LogObservable read FLogObservable;
|
||||||
property LogAttached: Boolean read FLogAttached;
|
property LogAttached: Boolean read FLogAttached;
|
||||||
property Paused: Boolean read GetPaused;
|
property Paused: Boolean read GetPaused;
|
||||||
@ -122,16 +133,25 @@ type
|
|||||||
public
|
public
|
||||||
class function Instance(ALog: IX2LogObservable): TX2LogObserverMonitorForm;
|
class function Instance(ALog: IX2LogObservable): TX2LogObserverMonitorForm;
|
||||||
|
|
||||||
|
{ Locked instances will always receive log messages, but will not be visible until
|
||||||
|
ShowInstance is called and will hide instead of closing until UnlockInstance is called. }
|
||||||
|
class procedure LockInstance(ALog: IX2LogObservable);
|
||||||
|
class procedure UnlockInstance(ALog: IX2LogObservable);
|
||||||
|
|
||||||
class procedure ShowInstance(ALog: IX2LogObservable);
|
class procedure ShowInstance(ALog: IX2LogObservable);
|
||||||
class procedure CloseInstance(ALog: IX2LogObservable);
|
class procedure CloseInstance(ALog: IX2LogObservable);
|
||||||
|
|
||||||
constructor Create(AOwner: TComponent; ALogObservable: IX2LogObservable = nil); reintroduce;
|
constructor Create(AOwner: TComponent; ALogObservable: IX2LogObservable = nil); reintroduce;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
procedure Lock;
|
||||||
|
procedure Unlock;
|
||||||
|
|
||||||
{ IX2LogObserver }
|
{ IX2LogObserver }
|
||||||
procedure Log(ALevel: TX2LogLevel; const AMessage: string; ADetails: IX2LogDetails);
|
procedure Log(ALevel: TX2LogLevel; const AMessage: string; ADetails: IX2LogDetails);
|
||||||
|
|
||||||
property FreeOnClose: Boolean read FFreeOnClose write FFreeOnClose;
|
property FreeOnClose: Boolean read FFreeOnClose write FFreeOnClose;
|
||||||
|
property MaxEntries: Cardinal read FMaxEntries write FMaxEntries;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -153,11 +173,12 @@ uses
|
|||||||
type
|
type
|
||||||
TLogEntryNodeData = record
|
TLogEntryNodeData = record
|
||||||
Time: TDateTime;
|
Time: TDateTime;
|
||||||
|
Paused: Boolean;
|
||||||
Level: TX2LogLevel;
|
Level: TX2LogLevel;
|
||||||
Message: string;
|
Message: string;
|
||||||
Details: IX2LogDetails;
|
Details: IX2LogDetails;
|
||||||
|
|
||||||
procedure Initialize(ALevel: TX2LogLevel; const AMessage: string; ADetails: IX2LogDetails);
|
procedure Initialize(APaused: Boolean; ALevel: TX2LogLevel; const AMessage: string; ADetails: IX2LogDetails);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
PLogEntryNodeData = ^TLogEntryNodeData;
|
PLogEntryNodeData = ^TLogEntryNodeData;
|
||||||
@ -172,9 +193,10 @@ const
|
|||||||
|
|
||||||
|
|
||||||
{ TLogEntryNode }
|
{ TLogEntryNode }
|
||||||
procedure TLogEntryNodeData.Initialize(ALevel: TX2LogLevel; const AMessage: string; ADetails: IX2LogDetails);
|
procedure TLogEntryNodeData.Initialize(APaused: Boolean; ALevel: TX2LogLevel; const AMessage: string; ADetails: IX2LogDetails);
|
||||||
begin
|
begin
|
||||||
Self.Time := Now;
|
Self.Time := Now;
|
||||||
|
Self.Paused := APaused;
|
||||||
Self.Level := ALevel;
|
Self.Level := ALevel;
|
||||||
Self.Message := AMessage;
|
Self.Message := AMessage;
|
||||||
Self.Details := ADetails;
|
Self.Details := ADetails;
|
||||||
@ -204,6 +226,18 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
class procedure TX2LogObserverMonitorForm.LockInstance(ALog: IX2LogObservable);
|
||||||
|
begin
|
||||||
|
Instance(ALog).Lock;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
class procedure TX2LogObserverMonitorForm.UnlockInstance(ALog: IX2LogObservable);
|
||||||
|
begin
|
||||||
|
Instance(ALog).Unlock;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
class procedure TX2LogObserverMonitorForm.ShowInstance(ALog: IX2LogObservable);
|
class procedure TX2LogObserverMonitorForm.ShowInstance(ALog: IX2LogObservable);
|
||||||
begin
|
begin
|
||||||
Instance(ALog).Show;
|
Instance(ALog).Show;
|
||||||
@ -262,7 +296,9 @@ var
|
|||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
|
|
||||||
|
FClosed := True;
|
||||||
FLogObservable := ALogObservable;
|
FLogObservable := ALogObservable;
|
||||||
|
FMaxEntries := DefaultMaxEntries;
|
||||||
|
|
||||||
captionFormat := GetLogResourceString(@LogMonitorFormCaption);
|
captionFormat := GetLogResourceString(@LogMonitorFormCaption);
|
||||||
if Pos('%s', captionFormat) > 0 then
|
if Pos('%s', captionFormat) > 0 then
|
||||||
@ -300,18 +336,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
destructor TX2LogObserverMonitorForm.Destroy;
|
procedure TX2LogObserverMonitorForm.AttachLog;
|
||||||
begin
|
|
||||||
if Assigned(FLogObservable) and FLogAttached then
|
|
||||||
FLogObservable.Detach(Self);
|
|
||||||
|
|
||||||
RemoveInstance(Self);
|
|
||||||
|
|
||||||
inherited Destroy;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TX2LogObserverMonitorForm.FormShow(Sender: TObject);
|
|
||||||
begin
|
begin
|
||||||
if Assigned(FLogObservable) and (not FLogAttached) then
|
if Assigned(FLogObservable) and (not FLogAttached) then
|
||||||
begin
|
begin
|
||||||
@ -321,18 +346,67 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TX2LogObserverMonitorForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
procedure TX2LogObserverMonitorForm.DetachLog;
|
||||||
begin
|
begin
|
||||||
if Assigned(FLogObservable) and FLogAttached then
|
if Assigned(FLogObservable) and FLogAttached then
|
||||||
begin
|
begin
|
||||||
FLogObservable.Detach(Self);
|
FLogObservable.Detach(Self);
|
||||||
FLogAttached := False;
|
FLogAttached := False;
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TX2LogObserverMonitorForm.Lock;
|
||||||
|
begin
|
||||||
|
Inc(FLockCount);
|
||||||
|
AttachLog;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TX2LogObserverMonitorForm.Unlock;
|
||||||
|
begin
|
||||||
|
if FLockCount > 0 then
|
||||||
|
begin
|
||||||
|
Dec(FLockCount);
|
||||||
|
|
||||||
|
{ Lock may have prevented a proper close, try again }
|
||||||
|
if Closed then
|
||||||
|
Close;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
destructor TX2LogObserverMonitorForm.Destroy;
|
||||||
|
begin
|
||||||
|
DetachLog;
|
||||||
|
RemoveInstance(Self);
|
||||||
|
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TX2LogObserverMonitorForm.FormShow(Sender: TObject);
|
||||||
|
begin
|
||||||
|
FClosed := False;
|
||||||
|
AttachLog;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TX2LogObserverMonitorForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
||||||
|
begin
|
||||||
|
if LockCount = 0 then
|
||||||
|
begin
|
||||||
|
DetachLog;
|
||||||
|
|
||||||
if FreeOnClose then
|
if FreeOnClose then
|
||||||
Action := caFree
|
Action := caFree
|
||||||
else
|
else
|
||||||
Action := caHide;
|
Action := caHide;
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
Action := caHide;
|
||||||
|
FClosed := True;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -350,21 +424,35 @@ begin
|
|||||||
scroll: Boolean;
|
scroll: Boolean;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if not Paused then
|
scroll := (not Paused) and (vstLog.RootNodeCount > 0) and (vstLog.BottomNode = vstLog.GetLast);
|
||||||
begin
|
|
||||||
scroll := (vstLog.RootNodeCount > 0) and (vstLog.BottomNode = vstLog.GetLast);
|
|
||||||
|
|
||||||
|
vstLog.BeginUpdate;
|
||||||
|
try
|
||||||
node := vstLog.AddChild(nil);
|
node := vstLog.AddChild(nil);
|
||||||
nodeData := vstLog.GetNodeData(node);
|
nodeData := vstLog.GetNodeData(node);
|
||||||
nodeData^.Initialize(ALevel, AMessage, ADetails);
|
|
||||||
|
|
||||||
vstLog.IsVisible[node] := (ALevel in VisibleLevels);
|
{ BeginUpdate causes OnInitNode to be triggered on-demand,
|
||||||
|
moved Initialize call here }
|
||||||
|
Initialize(nodeData^);
|
||||||
|
nodeData^.Initialize(Paused, ALevel, AMessage, ADetails);
|
||||||
|
|
||||||
|
vstLog.IsVisible[node] := (not Paused) and (ALevel in VisibleLevels);
|
||||||
|
|
||||||
|
|
||||||
|
while vstLog.RootNodeCount > MaxEntries do
|
||||||
|
vstLog.DeleteNode(vstLog.GetFirst);
|
||||||
|
finally
|
||||||
|
vstLog.EndUpdate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if scroll then
|
if scroll then
|
||||||
vstLog.ScrollIntoView(node, False);
|
vstLog.ScrollIntoView(node, False);
|
||||||
|
|
||||||
UpdateUI;
|
UpdateUI;
|
||||||
end else
|
|
||||||
|
if Paused then
|
||||||
begin
|
begin
|
||||||
PausedLogCount := PausedLogCount + 1;
|
PausedLogCount := PausedLogCount + 1;
|
||||||
UpdateStatus;
|
UpdateStatus;
|
||||||
@ -413,7 +501,7 @@ begin
|
|||||||
for node in vstLog.Nodes do
|
for node in vstLog.Nodes do
|
||||||
begin
|
begin
|
||||||
nodeData := vstLog.GetNodeData(node);
|
nodeData := vstLog.GetNodeData(node);
|
||||||
vstLog.IsVisible[node] := (nodeData^.Level in VisibleLevels);
|
vstLog.IsVisible[node] := (not nodeData^.Paused) and (nodeData^.Level in VisibleLevels);
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
vstLog.EndUpdate;
|
vstLog.EndUpdate;
|
||||||
@ -594,17 +682,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TX2LogObserverMonitorForm.vstLogInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode;
|
|
||||||
var InitialStates: TVirtualNodeInitStates);
|
|
||||||
var
|
|
||||||
nodeData: PLogEntryNodeData;
|
|
||||||
|
|
||||||
begin
|
|
||||||
nodeData := Sender.GetNodeData(Node);
|
|
||||||
Initialize(nodeData^);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TX2LogObserverMonitorForm.vstLogFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
procedure TX2LogObserverMonitorForm.vstLogFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||||
var
|
var
|
||||||
nodeData: PLogEntryNodeData;
|
nodeData: PLogEntryNodeData;
|
||||||
@ -727,7 +804,31 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
procedure TX2LogObserverMonitorForm.actPauseExecute(Sender: TObject);
|
procedure TX2LogObserverMonitorForm.actPauseExecute(Sender: TObject);
|
||||||
|
var
|
||||||
|
node: PVirtualNode;
|
||||||
|
nodeData: PLogEntryNodeData;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
if not Paused then
|
||||||
|
begin
|
||||||
|
{ Clear Paused status from nodes }
|
||||||
|
vstLog.BeginUpdate;
|
||||||
|
try
|
||||||
|
for node in vstLog.Nodes do
|
||||||
|
begin
|
||||||
|
nodeData := vstLog.GetNodeData(node);
|
||||||
|
|
||||||
|
if nodeData^.Paused then
|
||||||
|
begin
|
||||||
|
nodeData^.Paused := False;
|
||||||
|
vstLog.IsVisible[node] := (nodeData^.Level in VisibleLevels);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
vstLog.EndUpdate;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
PausedLogCount := 0;
|
PausedLogCount := 0;
|
||||||
UpdateStatus;
|
UpdateStatus;
|
||||||
end;
|
end;
|
||||||
|
@ -326,7 +326,9 @@ begin
|
|||||||
eventHandles[Clients.Count] := LogQueueSignal.Handle;
|
eventHandles[Clients.Count] := LogQueueSignal.Handle;
|
||||||
|
|
||||||
waitResult := WaitForMultipleObjects(Length(eventHandles), @eventHandles[0], False, INFINITE);
|
waitResult := WaitForMultipleObjects(Length(eventHandles), @eventHandles[0], False, INFINITE);
|
||||||
if waitResult in [WAIT_OBJECT_0..WAIT_OBJECT_0 + Pred(High(eventHandles))] then
|
|
||||||
|
{ WAIT_OBJECT_0 = 0, no check for minimum bounds since it's an unsigned variable ("Comparison always results to true") }
|
||||||
|
if waitResult < Cardinal(WAIT_OBJECT_0 + High(eventHandles)) then
|
||||||
begin
|
begin
|
||||||
{ Connect or write I/O completed }
|
{ Connect or write I/O completed }
|
||||||
clientIndex := waitResult - WAIT_OBJECT_0;
|
clientIndex := waitResult - WAIT_OBJECT_0;
|
||||||
@ -336,7 +338,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
{ Entry queued }
|
{ Entry queued }
|
||||||
break;
|
break;
|
||||||
end else if waitResult in [WAIT_ABANDONED_0..WAIT_ABANDONED_0 + High(eventHandles)] then
|
end else if (waitResult >= WAIT_ABANDONED_0) and (waitResult <= Cardinal(WAIT_ABANDONED_0 + High(eventHandles))) then
|
||||||
begin
|
begin
|
||||||
{ Client event abandoned }
|
{ Client event abandoned }
|
||||||
clientIndex := waitResult - WAIT_ABANDONED_0;
|
clientIndex := waitResult - WAIT_ABANDONED_0;
|
||||||
|
Loading…
Reference in New Issue
Block a user