mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 21:29:10 +02:00
examples: help for messages
git-svn-id: trunk@35075 -
This commit is contained in:
parent
88707d2180
commit
78fa86808a
@ -19,7 +19,7 @@
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
ToDos:
|
ToDos:
|
||||||
- FPC keyword: context
|
- FPC keyword: context, for example 'var' can be a section or a parameter modifier
|
||||||
- FPC Messages, message, id
|
- FPC Messages, message, id
|
||||||
- Other messages: Linker errors, fpcres errors
|
- Other messages: Linker errors, fpcres errors
|
||||||
- predefined identifiers: cardinal, longint
|
- predefined identifiers: cardinal, longint
|
||||||
@ -82,6 +82,25 @@ type
|
|||||||
var {%H-}ErrMsg: string): TShowHelpResult; override;
|
var {%H-}ErrMsg: string): TShowHelpResult; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TMyMessagesHelpDatabase }
|
||||||
|
|
||||||
|
TMyMessagesHelpDatabase = class(THTMLHelpDatabase)
|
||||||
|
private
|
||||||
|
FAllMessageNode: THelpNode;
|
||||||
|
public
|
||||||
|
constructor Create(TheOwner: TComponent); override;
|
||||||
|
destructor Destroy; override;
|
||||||
|
function GetNodesForMessage(const AMessage: string; MessageParts: TStrings;
|
||||||
|
var ListOfNodes: THelpNodeQueryList; var ErrMsg: string
|
||||||
|
): TShowHelpResult; override;
|
||||||
|
function ShowHelp(Query: THelpQuery; {%H-}BaseNode, {%H-}NewNode: THelpNode;
|
||||||
|
{%H-}QueryItem: THelpQueryItem;
|
||||||
|
var {%H-}ErrMsg: string): TShowHelpResult; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TMyHelpSetupDialog }
|
||||||
|
|
||||||
TMyHelpSetupDialog = class(TForm)
|
TMyHelpSetupDialog = class(TForm)
|
||||||
private
|
private
|
||||||
public
|
public
|
||||||
@ -98,6 +117,64 @@ procedure Register;
|
|||||||
begin
|
begin
|
||||||
HelpDatabases.CreateHelpDatabase('MyFPCKeyWordHelpDB',TMyFPCKeywordHelpDatabase,true);
|
HelpDatabases.CreateHelpDatabase('MyFPCKeyWordHelpDB',TMyFPCKeywordHelpDatabase,true);
|
||||||
HelpDatabases.CreateHelpDatabase('MyFPCDirectiveHelpDB',TMyDirectiveHelpDatabase,true);
|
HelpDatabases.CreateHelpDatabase('MyFPCDirectiveHelpDB',TMyDirectiveHelpDatabase,true);
|
||||||
|
HelpDatabases.CreateHelpDatabase('MyFPCMessagesHelpDB',TMyMessagesHelpDatabase,true);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TMyMessagesHelpDatabase }
|
||||||
|
|
||||||
|
constructor TMyMessagesHelpDatabase.Create(TheOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(TheOwner);
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TMyMessagesHelpDatabase.Destroy;
|
||||||
|
begin
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TMyMessagesHelpDatabase.GetNodesForMessage(const AMessage: string;
|
||||||
|
MessageParts: TStrings; var ListOfNodes: THelpNodeQueryList;
|
||||||
|
var ErrMsg: string): TShowHelpResult;
|
||||||
|
var
|
||||||
|
Title: String;
|
||||||
|
begin
|
||||||
|
ErrMsg:='';
|
||||||
|
Result:=shrHelpNotFound;
|
||||||
|
if (csDesigning in ComponentState) then exit;
|
||||||
|
debugln(['TMyMessagesHelpDatabase.GetNodesForDirective AMessage="',AMessage,'" Parts="',MessageParts.Text,'"']);
|
||||||
|
|
||||||
|
// check if the message fits
|
||||||
|
if AMessage<>'MyTest' then exit;
|
||||||
|
|
||||||
|
Title:='Help for message';
|
||||||
|
// this help database knows this Directive
|
||||||
|
// => add a node, so that if there are several possibilities the IDE can
|
||||||
|
// show the user a dialog to choose
|
||||||
|
if FAllMessageNode=nil then
|
||||||
|
FAllMessageNode:=THelpNode.CreateURL(Self,'','');
|
||||||
|
FAllMessageNode.Title:=Title;
|
||||||
|
CreateNodeQueryListAndAdd(FAllMessageNode,nil,ListOfNodes,true);
|
||||||
|
Result:=shrSuccess;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TMyMessagesHelpDatabase.ShowHelp(Query: THelpQuery; BaseNode,
|
||||||
|
NewNode: THelpNode; QueryItem: THelpQueryItem; var ErrMsg: string
|
||||||
|
): TShowHelpResult;
|
||||||
|
var
|
||||||
|
Msg: THelpQueryMessage;
|
||||||
|
begin
|
||||||
|
ErrMsg:='';
|
||||||
|
Result:=shrHelpNotFound;
|
||||||
|
if not (Query is THelpQueryMessage) then exit;
|
||||||
|
Msg:=THelpQueryMessage(Query);
|
||||||
|
debugln(['TMyMessagesHelpDatabase.ShowHelp Msg="',Msg.WholeMessage,'" Parts="',Msg.MessageParts.Text,'"']);
|
||||||
|
// check if the message fits
|
||||||
|
if Msg.WholeMessage<>'MyTest' then exit;
|
||||||
|
|
||||||
|
IDEMessageDialog('My message help',
|
||||||
|
'The message "$'+Msg.WholeMessage+'":'#13#13
|
||||||
|
+'is an example to show how help for messages work',mtInformation,[mbOk]);
|
||||||
|
Result:=shrSuccess;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TMyDirectiveHelpDatabase }
|
{ TMyDirectiveHelpDatabase }
|
||||||
|
Loading…
Reference in New Issue
Block a user