diff --git a/lcl/forms.pp b/lcl/forms.pp index 0928726cdc..03cb5710e4 100644 --- a/lcl/forms.pp +++ b/lcl/forms.pp @@ -378,7 +378,7 @@ type TCloseEvent = procedure(Sender: TObject; var CloseAction: TCloseAction) of object; TCloseQueryEvent = procedure(Sender : TObject; var CanClose : boolean) of object; TDropFilesEvent = procedure (Sender: TObject; const FileNames: Array of String) of object; - THelpEvent = function(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean of object; + THelpEvent = function(Command: Word; Data: PtrInt; var CallHelp: Boolean): Boolean of object; TShortCutEvent = procedure (var Msg: TLMKey; var Handled: Boolean) of object; TCustomForm = class(TScrollingWinControl) @@ -1152,7 +1152,6 @@ type function GetTitle: string; procedure FreeIconHandles; procedure IconChanged(Sender: TObject); - function InvokeHelp(Command: Word; Data: Longint): Boolean; function GetControlAtMouse: TControl; procedure SetBidiMode ( const AValue : TBiDiMode ) ; procedure SetFlags(const AValue: TApplicationFlags); @@ -1185,6 +1184,7 @@ type procedure NotifyDeactivateHandler; procedure NotifyCustomForms(Msg: Word); function IsHintMsg(var Msg: TMsg): Boolean; + function DoOnHelp(Command: Word; Data: PtrInt; var CallHelp: Boolean): Boolean; virtual; procedure DoOnMouseMove; virtual; procedure ShowHintWindow(const Info: THintInfoAtMouse); procedure OnHintTimer(Sender: TObject); @@ -1213,6 +1213,7 @@ type function UpdateAction(TheAction: TBasicAction): Boolean; override; procedure HandleException(Sender: TObject); override; procedure HandleMessage; + function HelpCommand(Command: Word; Data: PtrInt): Boolean; function HelpContext(Sender: TObject; const Position: TPoint; Context: THelpContext): Boolean; function HelpContext(Context: THelpContext): Boolean; diff --git a/lcl/include/application.inc b/lcl/include/application.inc index 5617c6f2f5..a84be5d75b 100644 --- a/lcl/include/application.inc +++ b/lcl/include/application.inc @@ -414,42 +414,20 @@ begin end; end; -{------------------------------------------------------------------------------ - function TApplication.InvokeHelp(Command: Word; Data: Longint): Boolean; - ------------------------------------------------------------------------------} -function TApplication.InvokeHelp(Command: Word; Data: Longint): Boolean; +function TApplication.HelpCommand(Command: Word; Data: Longint): Boolean; var CallHelp: Boolean; - ActiveForm: TCustomForm; - i: LongInt; begin - Result := False; CallHelp := True; - ActiveForm := Screen.ActiveCustomForm; - { let existing hooks get called, if any. } - if Assigned(ActiveForm) and Assigned(ActiveForm.FOnHelp) then - Result := ActiveForm.FOnHelp(Command, Data, CallHelp) - else if Assigned(FOnHelp) then begin - Result := FOnHelp(Command, Data, CallHelp); - i:=FApplicationHandlers[ahtHelp].Count; - while (not Result) and (FApplicationHandlers[ahtHelp].NextDownIndex(i)) do - Result:=THelpEvent(FApplicationHandlers[ahtHelp][i])(Command, Data, CallHelp); - end; + Result := DoOnHelp(Command, Data, CallHelp); - if CallHelp then begin - if Assigned(ActiveForm) and ActiveForm.HandleAllocated - and (ActiveForm.FHelpFile <> '') then - begin + if Result then + Exit; - end - else - if HelpFile <> '' then - begin - - end else begin - - end; + if CallHelp then + begin + // TODO: call help end; end; @@ -644,6 +622,25 @@ begin Result := False; end; +function TApplication.DoOnHelp(Command: Word; Data: PtrInt; var CallHelp: Boolean): Boolean; +var + ActiveForm: TCustomForm; + i: LongInt; +begin + ActiveForm := Screen.ActiveCustomForm; + + if Assigned(ActiveForm) and Assigned(ActiveForm.FOnHelp) then + Result := ActiveForm.FOnHelp(Command, Data, CallHelp) + else + if Assigned(FOnHelp) then + begin + Result := FOnHelp(Command, Data, CallHelp); + i := FApplicationHandlers[ahtHelp].Count; + while (not Result) and (FApplicationHandlers[ahtHelp].NextDownIndex(i)) do + Result := THelpEvent(FApplicationHandlers[ahtHelp][i])(Command, Data, CallHelp); + end; +end; + {------------------------------------------------------------------------------ procedure TApplication.DoOnMouseMove;