Siehe
OH?
Command gibt an was es für eine Hilfe ist. (Context oder Keyword)
und in Data ist dann entweder der Context (Integer) oder das Keyword (PString) drin.
Und in CallHelp gibst DU an, ob du die Hilfe-Anfrage verarbeitet hast, oder ob es doch noch an Standardbehandlung weitergereicht werden soll.
[add] Der Anfang von etwas, dass ich mal vor paar Jahren schrieb.
Delphi-Quellcode:
function THelpModul.ApplicationEvents1Help(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;
...
begin
Log := '';
try
{$REGION 'originalen Hilfeaufruf loggen'}
case Command of
HELP_CONTEXT: S := ' - HELP_CONTEXT (Display topic in ulTopic)';
HELP_QUIT: S := ' - HELP_QUIT (Terminate help)';
HELP_INDEX: S := ' - HELP_INDEX/HELP_CONTENTS (Display index)';
HELP_HELPONHELP: S := ' - HELP_HELPONHELP (Display help on using help)';
HELP_SETINDEX: S := ' - HELP_SETINDEX/HELP_SETCONTENTS (Set current Index for multi index help)';
HELP_CONTEXTPOPUP: S := ' - HELP_CONTEXTPOPUP';
HELP_FORCEFILE: S := ' - HELP_FORCEFILE';
HELP_CONTEXTMENU: S := ' - HELP_CONTEXTMENU';
HELP_FINDER: S := ' - HELP_FINDER';
HELP_WM_HELP: S := ' - HELP_WM_HELP';
HELP_SETPOPUP_POS: S := ' - HELP_SETPOPUP_POS';
HELP_KEY: S := ' - HELP_KEY (Display topic for keyword in offabData)';
HELP_COMMAND: S := ' - HELP_COMMAND';
HELP_PARTIALKEY: S := ' - HELP_PARTIALKEY';
HELP_MULTIKEY: S := ' - HELP_MULTIKEY';
HELP_SETWINPOS: S := ' - HELP_SETWINPOS';
else S := '';
end;
Log := Log + Format('CallHelp: Command=%d%s Data=%d'#10, [Command, S, Data]);
if Command = HELP_COMMAND then
Log := Log + ' Keyword/JumpID="' + PChar(Data) + '"'#10
else if (Command = HELP_CONTEXT) or (Command = HELP_CONTEXTPOPUP) then
Log := Log + ' ContextID=' + IntToStr(THelpContext(Data)) + #10
else
Log := Log + ' Keyword/ContextID/JumpID nicht erkannt'#10;
{$ENDREGION}
{$REGION 'nicht alle Komandos verarbeiten (z.B. wird beim F1 ein HELP_SETPOPUP_POS vor dem HELP_COMMAND aufgerufen)'}
//if not (Command in [HELP_INDEX, HELP_CONTEXT, HELP_COMMAND, HELP_WM_HELP, HELP_QUIT]) then
// Exit(True);
case Command of
HELP_INDEX, HELP_CONTEXT, HELP_CONTEXTPOPUP, HELP_COMMAND, HELP_WM_HELP, HELP_QUIT: ; // mit CASE, da IN einen zu kleinen Wertebereich zur Verfügung stellt
else Exit(True);
end;
{$ENDREGION}
{$REGION 'HELP_QUIT: das Hilfefenster soll geschlossen werden'}
if Command = HELP_QUIT then begin
FreeAndNil(HauptFormAbstract.FormWebBrowser);
Exit(True);
end;
{$ENDREGION}
...