-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhotlabel.html
229 lines (221 loc) · 10.3 KB
/
hotlabel.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
---
dl-file-prefix: "dd-hotlabel-"
layout: "codelib-tplt"
group: lib
priority: 6
version: "2.2.1"
release-date: "2016-02-14"
platforms: ["Win32", "Win64"]
frameworks: ["VCL"]
compatibility: "Delphi 7 and later"
title: "Hot Label Component"
precis: "Label component that accesses a URL when clicked"
summary: "Label component that accesses a URL when clicked."
meta-title: "Clickable Link Label Component for Delphi Pascal VCL that opens URLs | Open Source | 32 & 64 bit"
meta-desc: "Delphi Pascal VCL component that opens a specified URL when clicked. Link, hover & visited colours can be customised. Descends from TLabel. Requires Delphi 7 & later."
download-base-url: "https://sourceforge.net/projects/ddablib/files/hotlabel/"
repo-url: "https://github.com/ddablib/hotlabel"
docs-url: "https://github.com/delphidabbler/ddab-lib-docs/blob/master/Docs/HotLabelComponent.md"
want-header-buttons: true
status: "current"
---
{% assign dl-file = page.dl-file-prefix | append: page.version | append: ".zip" %}
{% assign dl-url = page.download-base-url | append: dl-file %}
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Overview
</h2>
</div>
<div class="panel-body">
<p>
<var>TPJHotLabel</var> is a simple Delphi component that descends from <var>TLabel</var>. It provides a clickable label that can start the default browser or email client to access a specific URL.
</p>
<h3 data-toggle="collapse" data-target="#features" class="collapsible collapsed">
Features
</h3>
<div id="features" class="collapse"> <!-- begin collapsible #features section -->
<p>
Key features of the component are:
</p>
<ul class="wide">
<li>
All properties of <var>TLabel</var> are supported, although the usage and default values of some of the inherited properties have been changed.
</li>
<li>
The <var>URL</var> property is used for storing the URL to be accessed when the label is clicked. The <var>Caption</var> property can either store descriptive text or can reflect the URL, depending on the value of the <var>CaptionIsURL</var> property. The ability to link the Caption and URL makes it easy to display the URL without having to keep two properties synchronised.
</li>
<li>
The URL can be validated to check for supported protocols. This validation is switched on and off using the <var>ValidateURL</var> property. Supported protocols are:
<ul class="narrow">
<li><code>http://</code></li>
<li><code>https://</code></li>
<li><code>mailto:</code></li>
<li><code>file:</code></li>
<li><code>ftp://</code></li>
</ul>
</li>
<li>
The label's <var>Font</var> property defaults to navy blue to indicate a link.
</li>
<li>
The label can be highlighted when the mouse passes over it. Highlighting is used if the <var>HighlightURL</var> property is True, and the font used for highlighting is set using the <var>HighlightFont</var> property.
</li>
<li>
The label can also display differently when its "link" has been clicked successfully. The font to be used is specified via the <var>VistedFont</var> property. The user can switch the visited state on and off via the <var>Visited</var> property or the component can be enabled to track visits automatically using the <var>TrackVisits</var> property.
</li>
<li>
The label displays the "hand point" cursor by default.
</li>
<li>
The component's pop-up hints can be customised as follows, using the <var>HintStyle</var> property:
<ul class="narrow">
<li>
the hint text can come from the <var>Hint</var> property as normal,<br /> <em>or</em>
</li>
<li>
the hint text can come from the <var>URL</var> property with the <var>Hint</var> property being ignored,<br /> <em>or</em>
</li>
<li>
the hint text can be modified just before the hint is shown by handling the <var>OnCustomHint</var> event, which is useful for displaying dynamic information in the hint.
</li>
</ul>
</li>
</ul>
</div> <!-- /#features -->
<h3 data-toggle="collapse" data-target="#demo" class="collapsible collapsed">
Demo code
</h3>
<div id="demo" class="collapse"> <!-- begin collapsible #demo section -->
<p>
A demo program is included in the download. See the <code>Demo</code> sub-directory.
</p>
</div> <!-- /#demo -->
<h3 data-toggle="collapse" data-target="#how-it-works" class="collapsible collapsed">
How the component works
</h3>
<div id="how-it-works" class="collapse"> <!-- begin collapsible #how-it-works section -->
<p>
The component functions mainly as a standard <var>TLabel</var> except that:
</p>
<ol class="wide">
<li>
It handles the Delphi-specific <var>CM_MOUSEENTER</var> and <var>CM_MOUSELEAVE</var> messages to highlight the label when the mouse is over it.
</li>
<li>
It handles Delphi's <var>CM_HINTSHOW</var> message to provide customised hints.
</li>
<li>
The <var>Caption</var> property may automatically change when the optionally linked <var>URL</var> property changes.
</li>
</ol>
<p>
<var>TPJHotLabel</var> uses the Windows ShellAPI <var>ShellExecute</var> function to start the default browser or email client when a URL is clicked.
</p>
</div> <!-- /#how-it-works -->
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Get The Code
</h2>
</div>
<div class="panel-body">
<p>
You can download the latest version of the <em>{{page.title}}</em> directly from SourceForge as <code>{{ dl-file }}</code>.
</p>
<p class="text-center">
<a class="btn btn-primary" role="button" href="{{ dl-url }}" aria-label="Go to SourceForge and download latest version automatically">Download <span class="hidden-xs">release </span>v{{ page.version }}<span class="hidden-xs"> from SourceForge</span></a>
</p>
<p>
The <em>{{ page.title }}</em> source code is hosted in the <a href="{{ page.repo-url }}" aria-label="Link to the ddablib/hotlabel repository on GitHub"><code>ddablib/hotlabel</code></a> GitHub repository. You can <code>git clone</code> or fork the repository as required.
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Installation
</h2>
</div>
<div class="panel-body">
<p>
The <em>{{page.title}}</em> is supplied in a zip file. Before installing you need to extract all the files from the zip file, preserving the directory structure. The following files will be extracted:
</p>
<ul class="list-group">
<li class="list-group-item">
<strong><code>PJHotLabel.pas</code></strong> – component source code.
</li>
<li class="list-group-item">
<strong><code>PJHotLabel.dcr</code></strong> – component palette glyphs.
</li>
<li class="list-group-item">
<code>ReadMe.htm</code> – read-me file.
</li>
<li class="list-group-item">
<code>ChangeLog.txt</code> – project change log.
</li>
<li class="list-group-item">
<code>MPL-2.txt</code> – the Mozilla Public License v2.0.
</li>
<li class="list-group-item">
<code>Documentation.URL</code> – short-cut to the component's online documentation.
</li>
</ul>
<p>
In addition to the above files you will find the source code of the demo project the <code>Demo</code> sub-directory.
</p>
<p>
You can now install the components into the Delphi IDE. To do this, the files <code>PJHotLabel.pas</code> and <code>PJHotLabel.dcr</code> should be added to a design time package. If you need help doing this <a href="{{ site.data.core.install-to-ide-link }}" aria-title="see a tip on working with design time packages">see here</a>.
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Documentation
</h2>
</div>
<div class="panel-body">
<p>
The <em>{{page.title}}</em> is comprehensively documented online <a href="{{ page.docs-url }}" aria-title="View the online documentation">here</a>
</p>
<p>
The project's change log can be viewed <a href="https://raw.githubusercontent.com/ddablib/hotlabel/main/Docs/ChangeLog.txt" aria-title="View the change log in plain text">here</a>.
</p>
<p>
A read-me file (<code>ReadMe.htm</code>) is included in the project download.
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title" id="feedback">
Feedback & Queries
</h2>
</div>
<div class="panel-body">
<p>
If you find any bugs or want to suggest a new feature please report them using the <em>{{page.title}}</em> <a href="https://github.com/ddablib/hotlabel/issues">issue tracker</a>.
</p>
<p>
If you have created a bug fix or have implemented a new feature please open a pull request for it.
</p>
<p>
Should you have any queries about using the component please read the <a href="{{ page.docs-url }}">documentation</a>. If you can't find an answer in the documentation then post a message in the <a href="https://github.com/orgs/ddablib/discussions">discussion group</a>.
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
License
</h2>
</div>
<div class="panel-body">
<p>
<span class="fa fa-copyright fa-pull-left fa-3x"></span> The <em>{{page.title}}</em> is open source. It is copyright © 1999-2016 by <a href="https://en.gravatar.com/delphidabbler" aria-label="Peter Johnson's Gravatar account">Peter Johnson</a>. The source code is made available under the terms of the <a href="https://www.mozilla.org/MPL/2.0/" aria-label="Mozilla Public License v2.0 on mozilla.org">Mozilla Public License v2.0</a>. All relevant trademarks are acknowledged.
</p>
</div>
</section>