Back to Devexpress

TdxMessageDialogHyperlinkClickDelegate Type

vcl-dxmessagedialog-5ddd0e71.md

latest10.5 KB
Original Source

TdxMessageDialogHyperlinkClickDelegate Type

The procedural type for a hyperlink activation handler in a message dialog.

Declaration

delphi
TdxMessageDialogHyperlinkClickDelegate = reference to procedure(AArgs: TdxHyperlinkClickEventArgs);

Parameters

NameTypeDescription
AArgsTdxHyperlinkClickEventArgs

Stores general information on a hyperlink-related event in a DevExpress control or its UI element.

|

Remarks

A click on a hyperlink defined as a part of formatted text in a message box dialog invokes the default application associated with the hyperlink’s URI scheme (a browser for HTTP/HTTPS, a mail client for MAILTO, etc.)

You can implement a handler of the TdxMessageDialogHyperlinkClickDelegate type and pass the handler as the AHyperlinkClickProc parameter of any message box creation method to change the behavior of hyperlinks in a message box dialog. For example, you can prevent hyperlink activation under specific conditions or execute any custom code in response to clicks on hyperlinks. This scenario can be useful if you define message box content at runtime.

Code Examples

Prevent MAILTO Hyperlink Activation in Message Boxes

The following code example prevents users from activating a hyperlink that contains the MAILTO URL scheme:

delphi
uses
  System.StrUtils; // Declares the ContainsText global function
// ...

procedure TMyForm.LinkClickHandler(AArgs: TdxHyperlinkClickEventArgs);
begin
  if(ContainsText(AArgs.URI, 'mailto')) then // If the clicked hyperlink contains the "mailto" URI scheme
    AArgs.Handled := True; // Prevents hyperlink activation
end;

// This procedure displays a message box with dynamic content and prevents MAILTO links from being opened
procedure TMyForm.ShowMyMessage(const AMessage: string; const ALink: string);
begin
  dxCreateMessageDialog(AMessage + #13#10 + ' [URL=' + ALink + ']' + ALink + '[/URL]', LinkClickHandler);
end;
cpp
#include "System.StrUtils.hpp" // Declares the ContainsText global function
// ...

void __fastcall TMyForm::LinkClickHandler(TdxHyperlinkClickEventArgs *AArgs)
{
  if(ContainsText(AArgs->URI, "mailto")) // If the clicked hyperlink contains the "mailto" URI scheme
    AArgs->Handled = true; // Prevents hyperlink activation
}

// This procedure displays a message box with dynamic content and prevents MAILTO links from being opened
void __fastcall TMyForm::ShowMyMessage(const UnicodeString &AMessage, const UnicodeString &ALink)
{
  dxCreateMessageDialog(AMessage + "\n" + " [URL=" + ALink + "]" + ALink + "[/URL]", LinkClickHeader);
}

Prevent Accidental Hyperlink Activation in Message Boxes

The code example in this section demonstrates TdxMessageDialogHyperlinkClickDelegate and TdxMessageDialogShowHyperlinkHintDelegate handlers. The TdxMessageDialogHyperlinkClickDelegate handler requires a user to hold down the Ctrl key to activate a hyperlink. The TdxMessageDialogShowHyperlinkHintDelegate handler changes all hyperlink hints to prompt a user to hold the Ctrl key for hyperlink activation.

delphi
procedure TMyForm.LinkClickHandler(AArgs: TdxHyperlinkClickEventArgs);
begin
  if AArgs.Shift <> [ssCtrl] then // If the Ctrl key is not held down
    AArgs.Handled := True; // Prevents hyperlink activation
end;

procedure TMyForm.LinkHintHandler(AArgs: TdxShowHyperlinkHintEventArgs);
var
  AHintPrefix, AHintURI: string;
begin
  AHintPrefix := 'Ctrl-click to navigate to ';
  AHintURI := AArgs.URI.Remove(0, 8); // Removes the URI scheme from the hyperlink hint
  AArgs.Hint := AHintPrefix + AHintURI; // Redefines the hyperlink hint
end;

// This procedure displays a message box with dynamic content and prevents MAILTO links from being opened
procedure TMyForm.ShowMyMessage(const AMessage: string; const ALink: string);
begin
  dxCreateMessageDialog(AMessage + #13#10 + ' [URL=' + ALink + ']' + ALink + '[/URL]',
    LinkClickHandler, LinkHintHandler);
end;
cpp
void __fastcall TMyForm::LinkClickHandler(TdxHyperlinkClickEventArgs *AArgs)
{
  if(AArgs->Shift != (TShiftState() << [ssCtrl])) // If the Ctrl key is not held down
    AArgs->Handled = true; // Prevents hyperlink activation
}

void __fastcall TMyForm::LinkHintHandler(TdxShowHyperlinkHintEventArgs *AArgs)
{
  UnicodeString AHintPrefix, AHintURI;
  AHintPrefix = "Ctrl-click to navigate to ";
  AHintURI = AArgs->URI.Remove(0, 8); // Removes the URI scheme from the hyperlink hint
  AArgs->Hint = AHintPrefix + AHintURI; // Redefines the hyperlink hint
}

// This procedure displays a message box with dynamic content and prevents MAILTO links from being opened
void __fastcall TMyForm::ShowMyMessage(const UnicodeString &AMessage, const UnicodeString &ALink)
{
  dxCreateMessageDialog(AMessage + "\n" + " [URL=" + ALink + "]" + ALink + "[/URL]",
    LinkClickHandler, LinkHintHandler);
}

Direct TdxMessageDialogHyperlinkClickDelegate Type References

The following global methods reference the TdxMessageDialogHyperlinkClickDelegate procedural type as the AHyperlinkClickProc parameter:

dxCreateMessageDialog Overloads

dxCreateMessageDialog(string,TMsgDlgType,TMsgDlgButtons,TMsgDlgBtn,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Creates a message dialog box with a specified dialog type and message. Allows you to specify a set of buttons and move focus to one of the buttons.dxCreateMessageDialog(string,TMsgDlgType,TMsgDlgButtons,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Creates a message dialog box with a specified dialog type, message, and a set of buttons.

dxMessageBox Overloads

dxMessageBox(THandle,string,string,Integer,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a message dialog box that displays a specified message, title, and buttons (configured using a combination of flags). Allows you to associate the message box with an owner window.dxMessageBox(string,string,Integer,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a message dialog box that displays a specified message, title, and buttons (configured using a combination of flags).

dxMessageDlg Overloads

dxMessageDlg(string,TMsgDlgType,TMsgDlgButtons,Longint,TMsgDlgBtn,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a message dialog box with a specified dialog type, message, and a set of buttons (and allows you to specify the default button).dxMessageDlg(string,TMsgDlgType,TMsgDlgButtons,Longint,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a message dialog box with a specified dialog type, message, and a set of buttons.

dxMessageDlgPos Overloads

dxMessageDlgPos(string,TMsgDlgType,TMsgDlgButtons,Longint,Integer,Integer,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a message dialog box at a specified position on the screen.dxMessageDlgPos(string,TMsgDlgType,TMsgDlgButtons,Longint,Integer,Integer,TMsgDlgBtn,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a message dialog box at a specified position on the screen. Allows you to specify the default button.

dxMessageDlgPosHelp Overloads

dxMessageDlgPosHelp(string,TMsgDlgType,TMsgDlgButtons,Longint,Integer,Integer,string,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a message dialog box associated with a help topic and positions the dialog box at specific screen coordinates.dxMessageDlgPosHelp(string,TMsgDlgType,TMsgDlgButtons,Longint,Integer,Integer,string,TMsgDlgBtn,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a message dialog box associated with a help topic and positions the dialog box at specific screen coordinates. Allows you to specify the default button.

Miscellaneous dxShowMessage Methods

dxShowMessage(string,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a generic message dialog box with an OK button.dxShowMessageFmt(string,Untyped[],TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a generic message dialog box with a formatted message and an OK button.dxShowMessagePos(string,Integer,Integer,TdxMessageDialogHyperlinkClickDelegate,TdxMessageDialogShowHyperlinkHintDelegate)Opens a generic message dialog box at a specified position on the screen. See Also

TdxMessageDialogShowHyperlinkHintDelegate Procedural Type

TdxHyperlinkClickEvent Procedural Type

dxMessageDialog Unit