Menu

[r3166]: / trunk / Src / FmHelpAware.pas  Maximize  Restore  History

Download this file

134 lines (111 with data), 3.4 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
{
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/
*
* Copyright (C) 2005-2012, Peter Johnson (www.delphidabbler.com).
*
* $Rev$
* $Date$
*
* Implements a base class for forms that can access topics in the help file.
}
unit FmHelpAware;
interface
uses
// Delphi
Classes,
// Projct
FmBase;
type
{
THelpAwareForm:
Form class that provides help functionality and F1 key awareness to
descendant forms.
}
THelpAwareForm = class(TBaseForm)
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
strict private
fDisableHelp: Boolean; // Value of DisableHelp property
strict protected
procedure DisplayHelp; overload; virtual;
{Displays help specified by a keyword. Form's HelpKeyword is used if set
otherwise the keyword returned by CustomHelpKeyword method is used. Help
context numbers are ignored. Help is not called if DisableHelp is true or
if no keyword can be found.
}
procedure DisplayHelp(const AKeyword: string); overload; virtual;
{Displays help using a keyword. Does nothing if DisableHelp property is
true.
@param AKeyword [in] Keyword to be used.
}
function CustomHelpKeyword: string; virtual;
{Gets a help keyword to be used if form's HelpKeyword property is not set.
Default is to use name of form. Subclasses can override this behaviour.
@return Name of form.
}
property DisableHelp: Boolean
read fDisableHelp write fDisableHelp default False;
{Determines whether help is enabled or disabled. When true form is not
"help-enabled"}
end;
implementation
uses
// Delphi
Windows,
// Project
UHelpMgr;
{$R *.dfm}
{ THelpAwareForm }
function THelpAwareForm.CustomHelpKeyword: string;
{Gets a help keyword to be used if form's HelpKeyword property is not set.
Default is to use name of form. Subclasses can override this behaviour.
@return Name of form.
}
begin
Result := Name;
end;
procedure THelpAwareForm.DisplayHelp;
{Displays help specified by a keyword. Form's HelpKeyword is used if set
otherwise the keyword returned by CustomHelpKeyword method is used. Help
context numbers are ignored. Help is not called if DisableHelp is true or if
no keyword can be found.
}
var
AKeyword: string; // A-link keyword
begin
if DisableHelp then
Exit;
if HelpKeyword <> '' then
AKeyword := HelpKeyword
else
AKeyword := CustomHelpKeyword;
if AKeyword <> '' then
DisplayHelp(AKeyword);
end;
procedure THelpAwareForm.DisplayHelp(const AKeyword: string);
{Displays help using a keyword. Does nothing if DisableHelp property is true.
@param AKeyword [in] Keyword to be used.
}
begin
if not fDisableHelp then
HelpMgr.ShowHelp(AKeyword);
end;
procedure THelpAwareForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
{Traps form key-down event. If FI key pressed with no modifiers we display
help.
@param Sender [in] Not used.
@param Key [in/out] Key pressed by user. Set to 0 if F1 to inhibit further
processing.
@param Shift [in] Modifier keys pressed.
}
begin
inherited;
if (Key = VK_F1) and (Shift = []) then
begin
DisplayHelp;
Key := 0;
end;
end;
end.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.