unit RichBoxHyperlink;
interface
uses
System.Drawing, System.Collections, System.ComponentModel, System.Windows.Forms,
System.Runtime.InteropServices;
type
charformat2 =
record
bAnimation : System.Byte;
bCharSet : system.Byte;
bPitchAndFamily : system.Byte;
bReserved1 : System.Byte;
bRevAuthor: Byte;
bUnderlineType : System.Byte;
cbSize: Cardinal;
crBackColor : integer;
crTextColor : integer;
// dwEffects: CharFormat2Effect;
// dwMask: CharFormat2Mask;
dwReserved : integer;
lcid : integer;
sSpacing : word;
sStyle : Smallint;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=32)]
szFaceName : system.Char;
wKerning : Smallint;
wWeight : Smallint;
yHeight : integer;
yOffset : integer;
end;
TRichBoxHyperlink =
class(System.Windows.Forms.Richtextbox)
{$REGION 'Vom Designer verwalteter Code'}
strict private
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
Components: System.ComponentModel.Container;
/// <summary>
/// Erforderliche Methode zur Unterstützung des Designers -
/// ändern Sie die Methode nicht mit dem Quelltext-Editor
/// </summary>
procedure InitializeComponent;
{$ENDREGION}
strict protected
/// <summary>
/// Ressourcen nach der Verwendung bereinigen
/// </summary>
procedure Dispose(Disposing: Boolean);
override;
private
{ Private-Deklarationen }
FDetectUrls : boolean;
function get_urls : boolean ;
procedure set_urls(Value : boolean);
public
constructor Create;
overload;
constructor Create(Container: System.ComponentModel.IContainer);
overload;
procedure InsertLink(text :
String);
overload;
procedure InsertLink(text :
String; position : Integer);
overload;
published
property DetectUrls : boolean
read get_urls
write set_urls
default false;
end;
implementation
uses
System.Globalization;
{$AUTOBOX ON}
{$REGION 'Vom Windows Form-Designer erzeugter Code'}
/// <summary>
/// Erforderliche Methode zur Unterstützung des Designers -
/// ändern Sie die Methode nicht mit dem Quelltext-Editor
/// </summary>
procedure TRichBoxHyperlink.InitializeComponent;
begin
Self.Components := System.ComponentModel.Container.Create;
end;
{$ENDREGION}
function TRichBoxHyperlink.get_urls : boolean;
begin
result := FDetectUrls;
end;
procedure TRichBoxHyperlink.InsertLink(text :
String);
begin
InsertLink(Text, Self.SelectionStart);
end;
procedure TRichBoxHyperlink.InsertLink(text :
String; position : Integer);
begin
if (Position < 0)
or (Position > self.Text.Length)
then ArgumentOutOfRangeException.Create('
Position')
else
begin
// self.SelectionStart := position;
// self.SelectedText := text;
// self.Select(position, text.Length);
// self.SetSelectionLink(true);
// self.Select(position + text.Length, 0);
end;
end;
procedure TRichBoxHyperlink.set_urls(Value : boolean);
begin
FDetectUrls := Value;
end;
constructor TRichBoxHyperlink.Create;
begin
inherited Create;
//
// Erforderlich für die Unterstützung des Windows Forms-Designers
//
InitializeComponent;
//
// TODO: Fügen Sie nach dem Aufruf von InitializeComponent Konstruktorcode hinzu.
//
end;
constructor TRichBoxHyperlink.Create(Container: System.ComponentModel.IContainer);
begin
inherited Create;
//
// Erforderlich für die Unterstützung des Windows Forms-Designers
//
Container.Add(Self);
InitializeComponent;
//
// TODO: Fügen Sie nach dem Aufruf von InitializeComponent Konstruktorcode hinzu.
//
end;
procedure TRichBoxHyperlink.Dispose(Disposing: Boolean);
begin
if Disposing
then
begin
if Components <>
nil then
Components.Dispose();
end;
inherited Dispose(Disposing);
end;
end.