📄 048.htm
字号:
<p> </font><font face="Arial" size="3">DsgnIntf</font><font face="宋体"lang="ZH-CN" size="3">库单元中定义了几种属性编辑器。它们都是从</font><fontface="Arial" size="3">TPropertyEditor</font><font face="宋体" lang="ZH-CN" size="3">继承而来。当创建属性编辑器时,可以直接从</font><fontface="Arial" size="3">TPropertyEditor</font><font face="宋体" lang="ZH-CN" size="3">中继承或从表中的任一属性编辑器中继承。</p><p> </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.4</font><font face="宋体" lang="ZH-CN" size="3">属性编辑器的类型</font><fontface="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font><fontface="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3"> 类型</font><font size="3"> </font><fontface="宋体" lang="ZH-CN" size="3">编辑的属性</font><font face="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3">─────────────────────────────────────</font><fontface="Arial" size="3"></p><p>TOrdinalProperty</font><font face="宋体" lang="ZH-CN" size="3"> </font><fontsize="3"> </font><font face="宋体" lang="ZH-CN" size="3"> </font><font size="3"> </font><fontface="宋体" lang="ZH-CN" size="3">所有有序的属性(整数、字符、枚举)</font><fontface="Arial" size="3"></p><p>TIntegerProperty</font><font face="宋体" lang="ZH-CN" size="3"> </font><fontsize="3"> </font><font face="宋体" lang="ZH-CN" size="3"> </font><font size="3"> </font><fontface="宋体" lang="ZH-CN" size="3">所有整型,包括子界类型</font><fontface="Arial" size="3"></p><p>TCharProperty</font><font face="宋体" lang="ZH-CN" size="3"> </font><fontsize="3"> </font><font face="宋体" lang="ZH-CN" size="3"> </font><font size="3"> </font><fontface="宋体" lang="ZH-CN" size="3">字符类型或字符子集</font><font face="Arial"size="3"></p><p>TEnumProperty</font><font face="宋体" lang="ZH-CN" size="3"> </font><fontsize="3"> </font><font face="宋体" lang="ZH-CN" size="3">任何枚举类型</font><fontface="Arial" size="3"></p><p>TFloatProperty</font><font face="宋体" lang="ZH-CN" size="3"> </font><fontsize="3"> </font><font face="宋体" lang="ZH-CN" size="3">所有浮点数</font><fontface="Arial" size="3"></p><p>TStringProperty</font><font face="宋体" lang="ZH-CN" size="3"> </font><fontsize="3"> </font><font face="宋体" lang="ZH-CN" size="3">字符串,包括定长的字符串</font><fontface="Arial" size="3"></p><p>TSetElementProperty </font><font face="宋体" lang="ZH-CN" size="3">集合中的独立元素</font><fontface="Arial" size="3"></p><p>TSetElementProperty </font><font face="宋体" lang="ZH-CN" size="3">所有的集合,并不是直接编辑集合类型,而是展开成一列</font><fontface="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3">集合元素属性</font><fontface="Arial" size="3"></p><p>TClassProperty </font><font face="宋体" lang="ZH-CN" size="3">对象,显示对象名,并允许对象属性的展开</font><fontface="Arial" size="3"></p><p>TMethodPropevty </font><font face="宋体" lang="ZH-CN" size="3">方法指针,主要指事件</font><fontface="Arial" size="3"></p><p>TComponentProperty </font><font face="宋体" lang="ZH-CN" size="3">相同窗体中的部件,用户不能编辑部件的属性,</font><fontface="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3">但能指向兼容的部件</font><fontface="Arial" size="3"></p><p>TColorProperty</font><font face="宋体" lang="ZH-CN" size="3"> </font><fontsize="3"> </font><font face="宋体" lang="ZH-CN" size="3">部件颜色,显示颜色常量,否则显示十六进制数</font><fontface="Arial" size="3"></p><p>TFontNameProperty </font><font face="宋体" lang="ZH-CN" size="3">字体名称</font><fontface="Arial" size="3"></p><p>TFontProperty </font><font face="宋体" lang="ZH-CN" size="3">字体,允许展开字体的属性或弹出字体对话框</font><fontface="Arial" size="3"></p><p></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></font><font face="宋体" lang="ZH-CN" size="3">下面是</font><font face="Arial"size="3">TFloatPropertyEditor</font><font face="宋体" lang="ZH-CN" size="3">的定义:</p><p></font><font size="3"> </font><font face="Arial" size="3"></p><p>type</p><p>TFloatProperty=Class(TPropertyEditor)</p><p>public</p><p>function AllEqual: Boolean; override; </p><p>function GetValue: String; override; </p><p>procedure SetValue ( Const Value: string ); override; </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><fontface="宋体" lang="ZH-CN" size="3">象文本一样编辑属性</p><p> 所有的属性都需要将它们的值在</font><font face="Arial" size="3">ObjectInspector</font><font face="宋体" lang="ZH-CN" size="3">窗口中以文本的方式显示。属性编辑器对象提供了文本表现和实际值之间转换的虚方法。这些虚方法是</font><fontface="Arial" size="3">GetValue</font><font face="宋体" lang="ZH-CN" size="3">和</font><fontface="Arial" size="3">SetValue</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.5</font><font face="宋体" lang="ZH-CN" size="3">读写属性值的方法</font><fontface="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3">━━━━━━━━━━━━━━━━━━━━━━━━━━</font><fontface="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3">属性类型 </font><fontsize="3"> </font><font face="Arial" size="3">"Get"</font><font face="宋体"lang="ZH-CN" size="3">方法</font><font size="3"> </font><font face="Arial" size="3">"Set"</font><fontface="宋体" lang="ZH-CN" size="3">方法</font><font face="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3">──────────────────────────</font><fontface="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3">浮点数</font><font size="3"> </font><fontface="Arial" size="3">GetFloatValue SetFloatVallue</p><p></font><font face="宋体" lang="ZH-CN" size="3">方法指针</font><font size="3"> </font><fontface="Arial" size="3">GetMethodValue SetMehodValue</p><p></font><font face="宋体" lang="ZH-CN" size="3">有序类型</font><font size="3"> </font><fontface="Arial" size="3">GetOrdValue SetOrdValue</p><p></font><font face="宋体" lang="ZH-CN" size="3">字符串</font><font size="3"> </font><fontface="Arial" size="3">GetStrValue SetStrValue</p><p></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">GetValue</font><font face="宋体" lang="ZH-CN" size="3">方法时,调用一个</font><fontface="Arial" size="3">"Get"</font><font face="宋体" lang="ZH-CN" size="3">方法;当覆盖</font><fontface="Arial" size="3">SetValue</font><font face="宋体" lang="ZH-CN" size="3">方法时调用一个</font><fontface="Arial" size="3">"Set"</font><font face="宋体" lang="ZH-CN" size="3">方法。</p><p> 属性编辑器的</font><font face="Arial" size="3">GetValue</font><fontface="宋体" lang="ZH-CN" size="3">方法返回一个字符串以表现当前属性值。缺省情况下</font><fontface="Arial" size="3">GetValue</font><font face="宋体" lang="ZH-CN" size="3">返回</font><fontface="Arial" size="3">"unknown"</font><font face="宋体" lang="ZH-CN" size="3">。</font><fontface="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3">属性编辑器的</font><fontface="Arial" size="3">SetValue</font><font face="宋体" lang="ZH-CN" size="3">接收</font><fontface="Arial" size="3">Object Inspector</font><font face="宋体" lang="ZH-CN" size="3">窗口</font><fontface="Arial" size="3">String</font><font face="宋体" lang="ZH-CN" size="3">类型的参数,并将其转换成合适的类型,并设置属性值。</p><p> 下面是</font><font face="Arial" size="3">TIntegerProperty</font><fontface="宋体" lang="ZH-CN" size="3">的</font><font face="Arial" size="3">GetValue</font><fontface="宋体" lang="ZH-CN" size="3">和</font><font face="Arial" size="3">SetValue</font><fontface="宋体" lang="ZH-CN" size="3">的例子:</p><p></font><font size="3"> </font><font face="Arial" size="3"></p><p>function TIntegerProperty GetValue: string; </p><p>begin</p><p>Result := IntToStr (GetOrdValue); </p><p>end; </p><p></font><font size="3"> </font><font face="Arial" size="3"></p><p>proceduve TIntegerPropertySetValue (Const Value: string); </p><p>var</p><p>L: Longint; </p><p>begin</p><p>L := StrToInt(Value); { </font><font face="宋体" lang="ZH-CN" size="3">将字符串转换为数学</font><fontsize="3"> </font><font face="Arial" size="3">}</p><p>with GetTypeData (GetPropType)^ do</p><p>if ( L < Minvalue ) or ( L > MaxValue ) then</p><p>Raise EPropertyError.Create (FmtloadStr(SOutOfRange,</p><p>[MinValue</font><font face="宋体" lang="ZH-CN" size="3">,</font><font face="Arial"size="3">MaxValue]));</p><p>SetOrdValue (L);</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><fontface="宋体" lang="ZH-CN" size="3">将属性作为一个整体来编辑</p><p> </font><font face="Arial" size="3">Delphi</font><font face="宋体" lang="ZH-CN"size="3">支持提供用户以对话框的方式可视化地编辑属性。这种情况常用于对对象类型属性的编辑。一个典型的例子是</font><fontface="Arial" size="3">Font</font><font face="宋体" lang="ZH-CN" size="3">属性,用户可以找开</font><fontface="Arial" size="3">Font</font><font face="宋体" lang="ZH-CN" size="3">对话框来选择字体的属性。</p><p> 提供整体属性编辑对话框,要覆盖属性编辑对象的</font><fontface="Arial" size="3">Edit</font><font face="宋体" lang="ZH-CN" size="3">方法。</font><fontface="Arial" size="3">Edit</font><font face="宋体" lang="ZH-CN" size="3">方法也使用</font><fontface="Arial" size="3">"Get"</font><font face="宋体" lang="ZH-CN" size="3">和</font><fontface="Arial" size="3">"Set"</font><font face="宋体" lang="ZH-CN" size="3">方法。</font><fontface="Arial" size="3"></p><p></font><font face="宋体" lang="ZH-CN" size="3"> 在大多数部件中使用的</font><fontface="Arial" size="3">Color</font><font face="宋体" lang="ZH-CN" size="3">属性将标准的</font><fontface="Arial" size="3">Windows</font><font face="宋体" lang="ZH-CN" size="3">颜色对话框作为属性编辑器。下面是</font><fontface="Arial" size="3">TColorProperty</font><font face="宋体" lang="ZH-CN" size="3">的</font><fontface="Arial" size="3">Edit</font><font face="宋体" lang="ZH-CN" size="3">方法</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -