📄 048.htm
字号:
face="Arial" size="3">Color</font><font face="宋体" lang="ZH-CN" size="3">属性将标准的</font><font
face="Arial" size="3">Windows</font><font face="宋体" lang="ZH-CN" size="3">颜色对话框作为属性编辑器。下面是</font><font
face="Arial" size="3">TColorProperty</font><font face="宋体" lang="ZH-CN" size="3">的</font><font
face="Arial" size="3">Edit</font><font face="宋体" lang="ZH-CN" size="3">方法</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>procedure TColorProperty.Edit</p>
<p>var </p>
<p>ColorDialog: TColorDialog;</p>
<p>begin</p>
<p>ColorDialog := TColorDialog.Create(Application); { </font><font face="宋体"
lang="ZH-CN" size="3">创建编辑器</font><font size="3"> </font><font face="Arial"
size="3">}</p>
<p>try</p>
<p>ColorDialog.Color := GetOrdValue; { </font><font face="宋体" lang="ZH-CN" size="3">使用已有的值</font><font
size="3"> </font><font face="Arial" size="3">}</p>
<p>if ColorDialog.Execute then</p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> </font><font size="3"> </font><font
face="Arial" size="3">SetOrdValue (ColorDialog.Color);</p>
<p>finally</p>
<p>ColorDialog.Free;</p>
<p>end; </p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> </font><font face="Arial" size="3">end;</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3">⑷</font><font size="3"> </font><font
face="宋体" lang="ZH-CN" size="3">描述编辑器的属性</p>
<p> 属性编辑必须告诉</font><font face="Arial" size="3">Object Inspector</font><font
face="宋体" lang="ZH-CN" size="3">窗口如何采用合适的显示工具。例如</font><font
face="Arial" size="3">Object Inspector</font><font face="宋体" lang="ZH-CN" size="3">窗口需要知道属性是否有子属性,或者是否能显示可能取值的列表。描述编辑器的属性通常覆盖属性编辑器的</font><font
face="Arial" size="3">GetAttributes</font><font face="宋体" lang="ZH-CN" size="3">方法。</font><font
face="Arial" size="3"></p>
<p>GetAttributes</font><font face="宋体" lang="ZH-CN" size="3">返回</font><font
face="Arial" size="3">TPropertyAttributes</font><font face="宋体" lang="ZH-CN" size="3">类型的集合。集合中包括表中任何或所有的值:</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3">表</font><font face="Arial" size="3">19.6
</font><font face="宋体" lang="ZH-CN" size="3">属性编辑器特征标志</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> </font><font size="3"> </font><font
face="宋体" lang="ZH-CN" size="3">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> 标志</font><font size="3"> </font><font
face="宋体" lang="ZH-CN" size="3">含</font><font size="3"> </font><font face="宋体"
lang="ZH-CN" size="3">义</font><font size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">相关方法</font><font face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> </font><font size="3"> </font><font
face="宋体" lang="ZH-CN" size="3">──────────────────────────────</font><font
face="Arial" size="3"></p>
<p>paValuelist </font><font face="宋体" lang="ZH-CN" size="3">编辑器能给予一组枚举值</font><font
size="3"> </font><font face="Arial" size="3">GetValues</p>
<p>paSubPropertie </font><font face="宋体" lang="ZH-CN" size="3">属性有子属性</font><font
size="3"> </font><font face="Arial" size="3">GetPropertises</p>
<p>paDialog </font><font face="宋体" lang="ZH-CN" size="3">编辑器能显示编辑对话框</font><font
size="3"> </font><font face="Arial" size="3">Edit</p>
<p>PaMultiSelect </font><font face="宋体" lang="ZH-CN" size="3">当用户选择多于一个部件</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3">时,属性应能显示</font><font
size="3"> </font><font face="宋体" lang="ZH-CN" size="3">N/A</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> </font><font size="3"> </font><font
face="宋体" lang="ZH-CN" size="3">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>Color</font><font face="宋体" lang="ZH-CN" size="3">属性是灵活的,它允许在</font><font
face="Arial" size="3">Object Inspector</font><font face="宋体" lang="ZH-CN" size="3">窗口中以多种方式选择他们。或者键入,或者从列表中选择定编辑器。因此</font><font
face="Arial" size="3">TColorProperty</font><font face="宋体" lang="ZH-CN" size="3">的</font><font
face="Arial" size="3">GetAttributes</font><font face="宋体" lang="ZH-CN" size="3">方法在返回值中包含多种属性。</p>
<p> </p>
<p> </font><font face="Arial" size="3">function TColorProperty.GetAttributes:
TProrertyAttributes;</p>
<p>begin</p>
<p>Result := [PaMultiselect, paDialog, paValuelist];</p>
<p>end;</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> ⑸</font><font size="3"> </font><font
face="宋体" lang="ZH-CN" size="3">注册属性编辑器</p>
<p> 一旦创建属性编辑器,必须在</font><font face="Arial" size="3">Delphi</font><font
face="宋体" lang="ZH-CN" size="3">中注册。注册属性编辑器时,要与某种属性相联。</p>
<p> 调用</font><font face="Arial" size="3">RegisterPropertyEditor</font><font
face="宋体" lang="ZH-CN" size="3">过程来注册属性编辑器。该过程接受四个参数:</p>
<p> ●</font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">要编辑的属性的类型信息的指针。这总是通过调用调用</font><font
face="Arial" size="3">TypeInfo</font><font face="宋体" lang="ZH-CN" size="3">函数得到,如</font><font
face="Arial" size="3">TypeInfo ( TMyComponent )</font><font face="宋体" lang="ZH-CN"
size="3"></p>
<p> ●</font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">编辑器应用的部件类型,如果该参数为</font><font
face="Arial" size="3">nil</font><font face="宋体" lang="ZH-CN" size="3">则编辑器应用于所给的类型的所有属性</p>
<p> ●</font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">属性名,该参数只有在前一参数描述了部件的情况下才可用</p>
<p> ●</font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">使用该属性编辑器的属性的类型</p>
<p> </p>
<p> 下面引用了注册标准部件的过程:</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>procedure Register;</p>
<p>begin</p>
<p>RegisterPropertyEditor (TypeInfo(TComponent), nil, TComponentProperty,</p>
<p>RegisterPropertyEditor(TypeInfo(TComponentName), TComponent,</p>
<p>'Name', (ComponentNamePropety);</p>
<p>RegisterPropertyEditor (TypeInfo(TMenuItem), TMenu, '', TMenuItemProperty);</p>
<p>end;</font><font face="宋体" lang="ZH-CN" size="3"></p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> 这三句表达式使用</font><font
face="Arial" size="3">RegisterPropertyEditor</font><font face="宋体" lang="ZH-CN"
size="3">三种不同的用法:</p>
<p> ●</font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">第一种最典型</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3">它注册了用于所有</font><font
face="Arial" size="3">TComponent</font><font face="宋体" lang="ZH-CN" size="3">类型属性的属性编辑器</font><font
face="Arial" size="3">TComponentProperty</font><font face="宋体" lang="ZH-CN" size="3">。通常,当为某种类型属性注册属性编辑器时,它就能应用于所有这种类型的属性,因此,第二和第三个参数为</font><font
face="Arial" size="3">nil</font><font face="宋体" lang="ZH-CN" size="3">。</p>
<p> ●</font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">第二个表达式注册特定类型的属性编辑器</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3">它为特定部件的特定属性注册属性编辑器,在这种情况下,编辑器用于所有部件的</font><font
face="Arial" size="3">Name</font><font face="宋体" lang="ZH-CN" size="3">属性。</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> ●</font><font size="3"> </font><font
face="宋体" lang="ZH-CN" size="3">第三个表达式介于第一个和第二个表达式之间</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3">它为部件</font><font face="Arial"
size="3">TMenu</font><font face="宋体" lang="ZH-CN" size="3">的</font><font
face="Arial" size="3">TMenuItem</font><font face="宋体" lang="ZH-CN" size="3">类型的所有属性注册了属性编辑器。</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>19.2.2.2 </font><font face="宋体" lang="ZH-CN" size="3">创建事件</p>
<p> </p>
<p> 事件是部件的很重要的部分。事件是部件必须响应的系统事件与响应事件的一段代码的联接。响应代码被称为事件处理过程,它总是由部件用户来编写。通过使用事件,应用开发者不需要改变部件本身就能定制部件的行为。作为部件编写者,运用事件能使应用发者定制所有的标准</font><font
face="Arial" size="3">Delphi</font><font face="宋体" lang="ZH-CN" size="3">部件。要创建事件,应当理解:</p>
<p> </font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">●</font><font
size="3"> </font><font face="宋体" lang="ZH-CN" size="3">什么是事件</p>
<p> </font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">●</font><font
size="3"> </font><font face="宋体" lang="ZH-CN" size="3">怎样实现标准事件</p>
<p> </font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">●</font><font
size="3"> </font><font face="宋体" lang="ZH-CN" size="3">怎样定义自己的事件</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>1. </font><font face="宋体" lang="ZH-CN" size="3">什么是事件</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3">事件是联接发生的事情与某些代码的机制,或者说是方法指针,一个指向特定对象实例的特定方法的指针。从部件用户的角度,事件是与系统事件</font><font
face="Arial" size="3">(</font><font face="宋体" lang="ZH-CN" size="3">如</font><font
face="Arial" size="3">OnClick)</font><font face="宋体" lang="ZH-CN" size="3">有关的名称,用户能给该事件赋特定的方法供调用。例如,按钮</font><font
face="Arial" size="3">Buttonl</font><font face="宋体" lang="ZH-CN" size="3">有</font><font
face="Arial" size="3">OnClick</font><font face="宋体" lang="ZH-CN" size="3">方法,缺省情况下</font><font
face="Arial" size="3">Delphi</font><font face="宋体" lang="ZH-CN" size="3">在包含该按钮的窗体中产生一个为</font><font
face="Arial" size="3">ButtonlClick</font><font face="宋体" lang="ZH-CN" size="3">的方法,并将其赋给</font><font
face="Arial" size="3">OnClick</font><font face="宋体" lang="ZH-CN" size="3">。当一个</font><font
face="Arial" size="3">Click</font><font face="宋体" lang="ZH-CN" size="3">事件发生在按钮上时,按钮调用赋给</font><font
face="Arial" size="3">OnClick</font><font face="宋体" lang="ZH-CN" size="3">的方法</font><font
face="Arial" size="3">ButtonlClick</font><font face="宋体" lang="ZH-CN" size="3">:</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3">部件用户将事件看作是由用户编写的代码,而事件发生时由系统调用的处理办法。</p>
<p> 从部件编写者角度事件有更多的含义。最重要的是提供了一个让用户编写代码响应特定事情的场所。</p>
<p> 要编写一个事件,应当理解:</font><font face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> ●</font><font size="3"> </font><font
face="宋体" lang="ZH-CN" size="3">事件和方法指针</p>
<p> </font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">●</font><font
size="3"> </font><font face="宋体" lang="ZH-CN" size="3">事件是属性</p>
<p> ●</font><font size="3"> </font><font face="宋体" lang="ZH-CN" size="3">事件处理过程类型</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> ●</font><font size="3"> </font><font
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -