File: CastleWindow.TMenuItem.html

package info (click to toggle)
castle-game-engine 5.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 185,428 kB
  • sloc: pascal: 260,781; cpp: 1,363; objc: 713; makefile: 537; xml: 496; sh: 480; php: 4
file content (265 lines) | stat: -rw-r--r-- 17,743 bytes parent folder | download
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
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Castle Game Engine: CastleWindow: Class TMenuItem</title>
<meta name="generator" content="PasDoc 0.13.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<table class="container"><tr><td class="navigation">
<h2>Castle Game Engine</h2><p><a href="introduction.html" class="navigation">Introduction</a></p><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
<a name="TMenuItem"></a><h1 class="cio">Class TMenuItem</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td><a class="section" href="#PasDoc-Properties">Properties</a></td></tr></table>
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
<p class="unitlink">
<a  href="CastleWindow.html">CastleWindow</a></p>
<h2 class="declaration">Declaration</h2>
<p class="declaration">
<code>type TMenuItem = class(<a class="normal" href="CastleWindow.TMenuEntryWithCaption.html">TMenuEntryWithCaption</a>)</code></p>
<h2 class="description">Description</h2>
<p>
<a class="normal" href="CastleWindow.TMenuEntry.html">TMenuEntry</a> that is a simple, clickable menu item. User expects that something will happend when he clicks on <code>TMenuItem</code>. You can also specify key shortcuts for this menu item.</p>
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
<ul class="hierarchy"><li class="ancestor">TObject</li>
<li class="ancestor"><a class="normal" href="CastleWindow.TMenuEntry.html">TMenuEntry</a></li>
<li class="ancestor"><a class="normal" href="CastleWindow.TMenuEntryWithCaption.html">TMenuEntryWithCaption</a></li>
<li class="thisitem">TMenuItem</li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="CastleWindow.TMenuItem.html#DoClick">DoClick</a></b>: boolean; virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="CastleWindow.TMenuItem.html#KeyString">KeyString</a></b>(out S: string): boolean;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="CastleWindow.TMenuItem.html#KeyMatches">KeyMatches</a></b>(const AKey: <a  href="CastleKeysMouse.html#TKey">TKey</a>; const ACharKey: char; const AModifiers: <a  href="CastleKeysMouse.html#TModifierKeys">TModifierKeys</a>): boolean;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="CastleWindow.TMenuItem.html#CaptionWithKey">CaptionWithKey</a></b>: string;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>constructor <b><a  href="CastleWindow.TMenuItem.html#Create">Create</a></b>(const ACaption: String; AIntData: Integer);</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>constructor <b><a  href="CastleWindow.TMenuItem.html#Create">Create</a></b>(const ACaption: String; AIntData: Integer; ACharKey: char);</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>constructor <b><a  href="CastleWindow.TMenuItem.html#Create">Create</a></b>(const ACaption: String; AIntData: Integer; AKey: <a  href="CastleKeysMouse.html#TKey">TKey</a>);</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>destructor <b><a  href="CastleWindow.TMenuItem.html#Destroy">Destroy</a></b>; override;</code></td>
</tr>
</table>
<a name="PasDoc-Properties"></a><h3 class="summary">Properties</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleWindow.TMenuItem.html#IntData">IntData</a></b>: Integer read FIntData write FIntData;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleWindow.TMenuItem.html#SmallId">SmallId</a></b>: Integer read FSmallId;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleWindow.TMenuItem.html#CharKey">CharKey</a></b>: char read FCharKey write FCharKey default #0;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleWindow.TMenuItem.html#Key">Key</a></b>: <a  href="CastleKeysMouse.html#TKey">TKey</a> read FKey write FKey default K_None;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleWindow.TMenuItem.html#Modifiers">Modifiers</a></b>: <a  href="CastleKeysMouse.html#TModifierKeys">TModifierKeys</a> read FModifiers write FModifiers;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Methods</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="DoClick"></a><code>function <b>DoClick</b>: boolean; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Called when this menu item will be choosen by user (by clicking, or pressing the matching key shortcut).

<p>You can override this and return true if you handled the event. If this will return false, <a class="normal" href="CastleWindow.html">CastleWindow</a> will call EventMenuClick (OnMenuClick).

<p>When entering this method, current OpenGL context is set to the context of the window that the clicked menu belongs to.

<p>Default implementation of this method in this class always returns false.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="KeyString"></a><code>function <b>KeyString</b>(out S: string): boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
Returns as S the string that describes key shortcut (<a class="normal" href="CastleWindow.TMenuItem.html#CharKey">CharKey</a>, <a class="normal" href="CastleWindow.TMenuItem.html#Key">Key</a>, <a class="normal" href="CastleWindow.TMenuItem.html#Modifiers">Modifiers</a>) and then returns true. If both <a class="normal" href="CastleWindow.TMenuItem.html#CharKey">CharKey</a> = #0 and Key = K_None then returns false and S is undefined.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="KeyMatches"></a><code>function <b>KeyMatches</b>(const AKey: <a  href="CastleKeysMouse.html#TKey">TKey</a>; const ACharKey: char; const AModifiers: <a  href="CastleKeysMouse.html#TModifierKeys">TModifierKeys</a>): boolean;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="CaptionWithKey"></a><code>function <b>CaptionWithKey</b>: string;</code></td>
</tr>
<tr><td colspan="2">
<p>
Caption with optional key description (returned by <a class="normal" href="CastleWindow.TMenuItem.html#KeyString">KeyString</a>) appended.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(const ACaption: String; AIntData: Integer);</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(const ACaption: String; AIntData: Integer; ACharKey: char);</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(const ACaption: String; AIntData: Integer; AKey: <a  href="CastleKeysMouse.html#TKey">TKey</a>);</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Destroy"></a><code>destructor <b>Destroy</b>; override;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<h3 class="detail">Properties</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="IntData"></a><code>property <b>IntData</b>: Integer read FIntData write FIntData;</code></td>
</tr>
<tr><td colspan="2">
<p>
An integer value, for any purpose you want. Useful to identify this item in <a class="normal" href="CastleWindow.TCastleWindowCustom.html#OnMenuClick">TCastleWindowCustom.OnMenuClick</a> callback.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="SmallId"></a><code>property <b>SmallId</b>: Integer read FSmallId;</code></td>
</tr>
<tr><td colspan="2">
<p>
Unique small identifier of this menu item. This is initialized at creation of this object, to be unique among all currently existing (created and not destroyed) <a class="normal" href="CastleWindow.TMenuItem.html">TMenuItem</a> instances.

<p>The intention is that this <code>SmallId</code> should be the smallest possible value &gt;= 0. So it's not something like PtrUInt(Self). This may be useful when you're constructing a menu using some API &mdash; you usually want to identify your menu item by some unique id and you want this id to be small (e.g. under WinAPI menu item's id must fit in 16 bit integer).

<p></p>
<h6 class="description_section">See also</h6>
<dl class="see_also">
  <dt><a class="normal" href="CastleWindow.html#MenuItemFromSmallId">MenuItemFromSmallId</a></dt>
  <dd>Search for menu item with given SmallId.</dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="CharKey"></a><code>property <b>CharKey</b>: char read FCharKey write FCharKey default #0;</code></td>
</tr>
<tr><td colspan="2">
<p>
Key shortcut for this menu item.

<p>When user presses indicated Key (if it's not K_None) or <code>CharKey</code> (if it's not #0) then <a class="normal" href="CastleWindow.TMenuItem.html#DoClick">DoClick</a> will be called (which results in TCastleWindowCustom.EventMenuClick, and <a class="normal" href="CastleWindow.TCastleWindowCustom.html#OnMenuClick">TCastleWindowCustom.OnMenuClick</a>, if <a class="normal" href="CastleWindow.TMenuItem.html#DoClick">DoClick</a> returns false).

<p>Handling of menu key shortcuts is completely within the <a class="normal" href="CastleWindow.html">CastleWindow</a> (usually, it's even done by the underlying backend like GTK or WinAPI). You will not get EventPress (OnPress) messages for keypresses that translate to menu clicks. Although TCastleWindowCustom.Pressed.Keys will be still appropriately updated.

<p>Note that Caption of this object should not contain description of Key or <code>CharKey</code>. The backend will automatically show the key description in an appropriate way.

<p>You should use at most one of these properties, not both. So either use Key or <code>CharKey</code>, and leave the other one at default value (Key = K_None, <code>CharKey</code> = #0).

<p>Note that <code>CharKey</code> = #8 (<a class="normal" href="CastleStringUtils.html#CharBackSpace">CharBackSpace</a> = <a class="normal" href="CastleStringUtils.html#CtrlH">CtrlH</a>) or <code>CharKey</code> = #9 (<a class="normal" href="CastleStringUtils.html#CharTab">CharTab</a> = <a class="normal" href="CastleStringUtils.html#CtrlI">CtrlI</a>) or <code>CharKey</code> = #13 (<a class="normal" href="CastleStringUtils.html#CharEnter">CharEnter</a> = <a class="normal" href="CastleStringUtils.html#CtrlM">CtrlM</a>) are interpreted to mean the combination of letter with Ctrl modfier. They do <b>not</b> mean the backspace or tab or enter keys. If you want to have backspace/tab/enter keys to activate the menu item, use Key = K_BackSpace, Key = K_Tab or Key = K_Enter.

<p>TODO: for now, this must be assigned before adding this menu item to parent (actually, before the parent menu is added to window MainMenu) to work reliably. Don't change this property afterwards. Usually, you will set this property by an argument to the constructor.

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Key"></a><code>property <b>Key</b>: <a  href="CastleKeysMouse.html#TKey">TKey</a> read FKey write FKey default K_None;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Modifiers"></a><code>property <b>Modifiers</b>: <a  href="CastleKeysMouse.html#TModifierKeys">TModifierKeys</a> read FModifiers write FModifiers;</code></td>
</tr>
<tr><td colspan="2">
<p>
<code>Modifiers</code> (shift, ctrl and such) required to activate this menu item. These have to be pressed along with <a class="normal" href="CastleWindow.TMenuItem.html#Key">Key</a> or <a class="normal" href="CastleWindow.TMenuItem.html#CharKey">CharKey</a>.

<p>Note that <a class="normal" href="CastleWindow.TMenuItem.html#CharKey">CharKey</a> may already indicate some <code>modifiers</code>, if it's one of the <a class="normal" href="CastleStringUtils.html#CtrlA">CtrlA</a> ... <a class="normal" href="CastleStringUtils.html#CtrlZ">CtrlZ</a> then the Ctrl key is required and if it's an uppercase letter then the Shift key is required. There's no need to include this modifier in this property then.

<p>TODO: for now, this must be assigned before adding this menu item to parent (actually, before the parent menu is added to window MainMenu) to work reliably. Don't change this property afterwards.</p>
</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(["trackPageView"]);
  _paq.push(["enableLinkTracking"]);

  (function() {
    var u=(("https:" == document.location.protocol) ? "https" : "http") + "://michalis.ii.uni.wroc.pl/piwik-castle-engine/";
    _paq.push(["setTrackerUrl", u+"piwik.php"]);
    _paq.push(["setSiteId", "1"]);
    var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
    g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Piwik Code -->

<noscript>
<!-- Piwik Image Tracker -->
<img src="http://michalis.ii.uni.wroc.pl/piwik-castle-engine/piwik.php?idsite=1&amp;rec=1" style="border:0" alt="" />
<!-- End Piwik -->
</noscript>
<hr noshade size="1"><span class="appinfo"><em>Generated by <a  href="http://pasdoc.sourceforge.net/">PasDoc 0.13.0</a> on 2015-06-15 04:43:13</em>
</span>
</td></tr></table></body></html>