Menu

[r2509]: / trunk / Src / Help / HTML / snippet_unit.htm  Maximize  Restore  History

Download this file

124 lines (114 with data), 3.8 kB

  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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/
*
* Copyright (C) 2012, Peter Johnson (www.delphidabbler.com).
*
* $Rev$
* $Date$
*
* Help topic describing the unit snippet kind.
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text-html; charset=Windows-1252">
<title>
Unit Snippets
</title>
<link rel="stylesheet" href="../css/codesnip.css" type="text/css">
</head>
<body>
<object
type="application/x-oleobject"
classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e"
>
<param name="ALink Name" value="SnippetUnit">
</object>
<h1>
<a name="snippet_unit"></a>Unit Snippets
</h1>
<p>
A <em>unit</em> snippet defines a complete Pascal unit. If a unit compiles
successfully in Delphi or in Free Pascal then it is valid for use as a
<em>unit</em> snippet.
</p>
<p>
<em>Unit</em> snippets are compilable just like all the other
<a href="snippet_kinds.htm">snippet kinds</a> except
<a href="snippet_freeform.htm">freeform</a>. However, that is where the
similarities end. Specifically, <em>unit</em> snippets:
</p>
<ul class="spaced">
<li>
Can't be referenced by other snippets except as cross references.
</li>
<li>
Can't depend on any other snippets.
</li>
<li>
Can't be included in a generated unit. This is obvious: units can't
contain other units.
</li>
<li>
Must be self contained. Any constants, types (including classes and
advanced records) or routines referenced by the unit's code must be
defined in the unit itself on in a unit included in one the unit's
<strong>uses</strong>
statements<sup style="font-size:smaller;">&dagger;</sup>. To compile
correctly the used units must be accessible to the available compilers
(i.e. be on the compiler's search
path<sup style="font-size:smaller;">&Dagger;</sup>.)
</li>
<li>
Do not have comments containg the snippet description inserted when
saved.
</li>
</ul>
<p>
Here is an example of a <em>unit</em> snippet:
</p>
<pre class="source-code">// A sample unit, adapted from the CodeSnip source code repository
unit UShowCaseCtrl;
interface
uses
Controls;
type
// Simple transparent control designed to be placed over other controls to
// prevent user interaction with the "show cased" controls.
TShowCaseCtrl = class(TCustomControl)
protected
// Modifies window creation parameters. Ensures control is transparent.
procedure CreateParams(var Params: TCreateParams); override;
end;
implementation
uses
Windows;
{ TShowCaseCtrl }
procedure TShowCaseCtrl.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;
end.</pre>
<p>
In this unit, the <var>Windows</var> and <var>Controls</var> must be
available to the available compilers. All is well in this case because the
units are in the VCL.
</p>
<p>
<strong>Notes</strong>
</p>
<p>
&dagger; For other compilable snippet types the required units are entered
in the <a href="dlg_editsnippet.htm">Snippets Editor</a>, but for
<em>unit</em> snippets they are entered in the source code itself.
</p>
<p>
&Dagger; Compiler search paths can be configured in the <em>Search
Paths</em> tab of the <a href="dlg_configcompilers.htm">Configure
Compilers</a> dialogue box.
</p>
</body>
</html>
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.