diff --git a/applications/lazstats/docs/chm/LazStats.chm b/applications/lazstats/LazStats.chm similarity index 99% rename from applications/lazstats/docs/chm/LazStats.chm rename to applications/lazstats/LazStats.chm index 22ea2253a..5e1bc30fb 100644 Binary files a/applications/lazstats/docs/chm/LazStats.chm and b/applications/lazstats/LazStats.chm differ diff --git a/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.lfm index f3427f97a..765ca547b 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.lfm @@ -3,6 +3,8 @@ object BoxPlotFrm: TBoxPlotFrm Height = 365 Top = 119 Width = 361 + HelpType = htKeyword + HelpKeyword = 'BoxPlots.htm' AutoSize = True Caption = 'Box Plot' ClientHeight = 365 diff --git a/applications/lazstats/source/forms/analysis/descriptive/breakdownunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/breakdownunit.lfm index db37affaf..caf157d31 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/breakdownunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/breakdownunit.lfm @@ -3,6 +3,8 @@ object BreakDownFrm: TBreakDownFrm Height = 367 Top = 248 Width = 428 + HelpType = htKeyword + HelpKeyword = 'Breakdown.htm' AutoSize = True Caption = 'Breakdown' ClientHeight = 367 diff --git a/applications/lazstats/source/forms/analysis/descriptive/bubbleplotunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/bubbleplotunit.lfm index d6d7d8e44..f4645c129 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/bubbleplotunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/bubbleplotunit.lfm @@ -3,6 +3,8 @@ object BubbleForm: TBubbleForm Height = 454 Top = 253 Width = 500 + HelpType = htKeyword + HelpKeyword = 'RepeatedMeasuresBubblePlot.htm' AutoSize = True Caption = 'Repeated Measures Bubble Plot' ClientHeight = 454 diff --git a/applications/lazstats/source/forms/analysis/descriptive/comparedistunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/comparedistunit.lfm index 6093a06ab..65644578a 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/comparedistunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/comparedistunit.lfm @@ -3,6 +3,8 @@ object CompareDistFrm: TCompareDistFrm Height = 375 Top = 227 Width = 516 + HelpType = htKeyword + HelpKeyword = 'ComparisonsWithTheoreticalDistri.htm' AutoSize = True Caption = 'Compare Cumulative Distributions' ClientHeight = 375 diff --git a/applications/lazstats/source/forms/analysis/descriptive/crosstabunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/crosstabunit.lfm index 995f496c2..79998af64 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/crosstabunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/crosstabunit.lfm @@ -3,6 +3,8 @@ object CrossTabFrm: TCrossTabFrm Height = 347 Top = 230 Width = 421 + HelpType = htKeyword + HelpKeyword = 'Cross-tabulation.htm' AutoSize = True Caption = 'Cross Tabulation' ClientHeight = 347 diff --git a/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.lfm index b9166b2da..2fddf9a49 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.lfm @@ -3,6 +3,8 @@ object DescriptiveFrm: TDescriptiveFrm Height = 393 Top = 226 Width = 453 + HelpType = htKeyword + HelpKeyword = 'DistributionStatistics.htm' AutoSize = True Caption = 'Descriptive Statistics' ClientHeight = 393 diff --git a/applications/lazstats/source/forms/analysis/descriptive/frequnit.lfm b/applications/lazstats/source/forms/analysis/descriptive/frequnit.lfm index 21519c87a..a24bae3ec 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/frequnit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/frequnit.lfm @@ -3,6 +3,8 @@ object FreqFrm: TFreqFrm Height = 388 Top = 228 Width = 502 + HelpType = htKeyword + HelpKeyword = 'FrequencyAnalysis.htm' Caption = 'Frequency Distribution' ClientHeight = 388 ClientWidth = 502 diff --git a/applications/lazstats/source/forms/analysis/descriptive/groupfrequnit.lfm b/applications/lazstats/source/forms/analysis/descriptive/groupfrequnit.lfm index 9712c7273..67139234b 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/groupfrequnit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/groupfrequnit.lfm @@ -3,6 +3,8 @@ object GroupFreqForm: TGroupFreqForm Height = 341 Top = 233 Width = 444 + HelpType = htKeyword + HelpKeyword = 'GroupFrequencyHistograms.htm' AutoSize = True Caption = 'Group Frequency Analysis' ClientHeight = 341 diff --git a/applications/lazstats/source/forms/analysis/descriptive/multxvsyunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/multxvsyunit.lfm index 4486ed661..0454193c1 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/multxvsyunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/multxvsyunit.lfm @@ -3,6 +3,8 @@ object MultXvsYFrm: TMultXvsYFrm Height = 416 Top = 216 Width = 395 + HelpType = htKeyword + HelpKeyword = 'MultipleGroupXVersusYPlot.htm' Anchors = [akLeft] AutoSize = True Caption = 'Multiple X Versus Y Plot' diff --git a/applications/lazstats/source/forms/analysis/descriptive/normalityunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/normalityunit.lfm index 2fb9153b5..c85b6fd0a 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/normalityunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/normalityunit.lfm @@ -3,6 +3,8 @@ object NormalityFrm: TNormalityFrm Height = 396 Top = 294 Width = 402 + HelpType = htKeyword + HelpKeyword = 'NormalityTests.htm' Caption = 'Normality Tests' ClientHeight = 396 ClientWidth = 402 diff --git a/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.lfm index c56c4762e..af878686e 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.lfm @@ -3,6 +3,8 @@ object PlotXYFrm: TPlotXYFrm Height = 367 Top = 262 Width = 490 + HelpType = htKeyword + HelpKeyword = 'XVersusYPlot.htm' AutoSize = True Caption = 'Plot X versus Y' ClientHeight = 367 diff --git a/applications/lazstats/source/forms/analysis/descriptive/resistancelineunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/resistancelineunit.lfm index 9ba16eef9..4d3e52cd0 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/resistancelineunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/resistancelineunit.lfm @@ -3,6 +3,8 @@ object ResistanceLineForm: TResistanceLineForm Height = 480 Top = 301 Width = 535 + HelpType = htKeyword + HelpKeyword = 'ResistantLineforBivariateData.htm' Caption = 'Resistant Line for Bivariate Data' ClientHeight = 480 ClientWidth = 535 diff --git a/applications/lazstats/source/forms/analysis/descriptive/rot3dunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/rot3dunit.lfm index 603da14e2..460158ec4 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/rot3dunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/rot3dunit.lfm @@ -3,6 +3,8 @@ object Rot3DFrm: TRot3DFrm Height = 527 Top = 153 Width = 710 + HelpType = htKeyword + HelpKeyword = 'ThreeDimensionalRotation.htm' Caption = 'Three Dimension Rotation' ClientHeight = 527 ClientWidth = 710 diff --git a/applications/lazstats/source/forms/analysis/descriptive/smoothdataunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/smoothdataunit.lfm index e918549e4..f96606b2e 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/smoothdataunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/smoothdataunit.lfm @@ -3,6 +3,8 @@ object DataSmoothingForm: TDataSmoothingForm Height = 388 Top = 284 Width = 372 + HelpType = htKeyword + HelpKeyword = 'DataSmoothing.htm' AutoSize = True Caption = 'Smooth Data' ClientHeight = 388 diff --git a/applications/lazstats/source/forms/analysis/descriptive/stemleafunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/stemleafunit.lfm index c18b699a7..e73f18329 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/stemleafunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/stemleafunit.lfm @@ -3,6 +3,8 @@ object StemLeafFrm: TStemLeafFrm Height = 296 Top = 257 Width = 407 + HelpType = htKeyword + HelpKeyword = 'StemandLeafPlot.htm' AutoSize = True Caption = 'Stem and Leaf Analysis' ClientHeight = 296 diff --git a/applications/lazstats/source/forms/analysis/descriptive/xvsmultyunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/xvsmultyunit.lfm index 87d92a7ba..f652409fc 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/xvsmultyunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/xvsmultyunit.lfm @@ -3,6 +3,8 @@ object XvsMultYForm: TXvsMultYForm Height = 467 Top = 117 Width = 452 + HelpType = htKeyword + HelpKeyword = 'PlotXVersusMultipleYValues.htm' Caption = 'X vs Multiple Y Plot' ClientHeight = 467 ClientWidth = 452 diff --git a/applications/lazstats/source/forms/analysis/matrix_manipulation/matmanunit.lfm b/applications/lazstats/source/forms/analysis/matrix_manipulation/matmanunit.lfm index 8bac64e0c..734fd2c9b 100644 --- a/applications/lazstats/source/forms/analysis/matrix_manipulation/matmanunit.lfm +++ b/applications/lazstats/source/forms/analysis/matrix_manipulation/matmanunit.lfm @@ -3,6 +3,8 @@ object MatManFrm: TMatManFrm Height = 575 Top = 176 Width = 943 + HelpType = htKeyword + HelpKeyword = 'DistributionStatistics.htm' Caption = 'Matrix Manipulation' ClientHeight = 555 ClientWidth = 943 diff --git a/applications/lazstats/source/forms/mainunit.pas b/applications/lazstats/source/forms/mainunit.pas index 920b59541..ec7a75ff3 100644 --- a/applications/lazstats/source/forms/mainunit.pas +++ b/applications/lazstats/source/forms/mainunit.pas @@ -7,11 +7,18 @@ unit MainUnit; {$mode objfpc}{$H+} +{$DEFINE USE_EXTERNAL_HELP_VIEWER} + interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, Menus, ExtCtrls, StdCtrls, Grids, + {$IFDEF USE_EXTERNAL_HELP_VIEWER} + {$IFDEF MSWINDOWS} + HtmlHelp, + {$ENDIF} + {$ENDIF} Globals, DataProcs, DictionaryUnit; type @@ -424,6 +431,11 @@ type procedure XvsMultYClick(Sender: TObject); private { private declarations } + {$IFDEF USE_EXTERNAL_HELP_VIEWER} + {$IFDEF MSWINDOWS} + function HelpHandler(Command: Word; Data: PtrInt; var CallHelp: Boolean): Boolean; + {$ENDIF} + {$ENDIF} procedure Init; public { public declarations } @@ -1280,9 +1292,15 @@ begin if OutputFrm = nil then Application.CreateForm(TOutputFrm, OutputFrm); -(* if OptionsFrm = nil then - Application.CreateForm(TOptionsFrm, OptionsFrm); - *) + {$IFDEF USE_EXTERNAL_HELP_VIEWER} + {$IFDEF MSWINDOWS} + Application.HelpFile := Application.Location + 'LazStats.chm'; + if FileExists(Application.HelpFile) then + Application.OnHelp := @HelpHandler + else + Application.HelpFile := ''; + {$ENDIF} + {$ENDIF} end; procedure TOS3MainFrm.DataGridKeyPress(Sender: TObject; var Key: char); @@ -1564,6 +1582,25 @@ begin end; end; +{$IFDEF USE_EXTERNAL_HELP_VIEWER} +{$IFDEF MSWINDOWS} +// Call HTML help (.chm file) +// Is is expected that help topics are specified as HelpKeyword (HelpType = htContext). +// Using numeric HelpContext values will crash the application. +function TOS3MainFrm.HelpHandler(Command:word; Data:PtrInt; + var CallHelp:Boolean): Boolean; +var + topic: UnicodeString; +begin + topic := Application.HelpFile + '::/' + PChar(Data); + htmlhelp.HtmlHelpW(0, PWideChar(topic), HH_DISPLAY_TOPIC, 0); + + // Don't call regular help + CallHelp := False; +end; +{$ENDIF} +{$ENDIF} + procedure TOS3MainFrm.Init; var i: integer;