?? 048.htm
字號:
<p> ⑴</font><font size="3"> </font><font face="宋體" lang="ZH-CN" size="3">繼承屬性編輯器對象</p>
<p> </font><font face="Arial" size="3">DsgnIntf</font><font face="宋體"
lang="ZH-CN" size="3">庫單元中定義了幾種屬性編輯器。它們都是從</font><font
face="Arial" size="3">TPropertyEditor</font><font face="宋體" lang="ZH-CN" size="3">繼承而來。當創建屬性編輯器時,可以直接從</font><font
face="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><font
face="Arial" size="3"></p>
<p></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"></p>
<p>TOrdinalProperty</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>TIntegerProperty</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>TCharProperty</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>TEnumProperty</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>TFloatProperty</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>TStringProperty</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>TSetElementProperty </font><font face="宋體" lang="ZH-CN" size="3">集合中的獨立元素</font><font
face="Arial" size="3"></p>
<p>TSetElementProperty </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"></p>
<p>TClassProperty </font><font face="宋體" lang="ZH-CN" size="3">對象,顯示對象名,并允許對象屬性的展開</font><font
face="Arial" size="3"></p>
<p>TMethodPropevty </font><font face="宋體" lang="ZH-CN" size="3">方法指針,主要指事件</font><font
face="Arial" size="3"></p>
<p>TComponentProperty </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"></p>
<p>TColorProperty</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>TFontNameProperty </font><font face="宋體" lang="ZH-CN" size="3">字體名稱</font><font
face="Arial" size="3"></p>
<p>TFontProperty </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> </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><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">GetValue</font><font face="宋體" lang="ZH-CN" size="3">和</font><font
face="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><font
face="Arial" size="3"></p>
<p></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="Arial" size="3">"Get"</font><font face="宋體"
lang="ZH-CN" size="3">方法</font><font size="3"> </font><font face="Arial" size="3">"Set"</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"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">浮點數</font><font size="3"> </font><font
face="Arial" size="3">GetFloatValue SetFloatVallue</p>
<p></font><font face="宋體" lang="ZH-CN" size="3">方法指針</font><font size="3"> </font><font
face="Arial" size="3">GetMethodValue SetMehodValue</p>
<p></font><font face="宋體" lang="ZH-CN" size="3">有序類型</font><font size="3"> </font><font
face="Arial" size="3">GetOrdValue SetOrdValue</p>
<p></font><font face="宋體" lang="ZH-CN" size="3">字符串</font><font size="3"> </font><font
face="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><font
face="Arial" size="3">"Get"</font><font face="宋體" lang="ZH-CN" size="3">方法;當覆蓋</font><font
face="Arial" size="3">SetValue</font><font face="宋體" lang="ZH-CN" size="3">方法時調用一個</font><font
face="Arial" size="3">"Set"</font><font face="宋體" lang="ZH-CN" size="3">方法。</p>
<p> 屬性編輯器的</font><font face="Arial" size="3">GetValue</font><font
face="宋體" lang="ZH-CN" size="3">方法返回一個字符串以表現當前屬性值。缺省情況下</font><font
face="Arial" size="3">GetValue</font><font face="宋體" lang="ZH-CN" size="3">返回</font><font
face="Arial" size="3">"unknown"</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">SetValue</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">String</font><font face="宋體" lang="ZH-CN" size="3">類型的參數,并將其轉換成合適的類型,并設置屬性值。</p>
<p> 下面是</font><font face="Arial" size="3">TIntegerProperty</font><font
face="宋體" lang="ZH-CN" size="3">的</font><font face="Arial" size="3">GetValue</font><font
face="宋體" lang="ZH-CN" size="3">和</font><font face="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>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><font
size="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><font
face="宋體" lang="ZH-CN" size="3">將屬性作為一個整體來編輯</p>
<p> </font><font face="Arial" size="3">Delphi</font><font face="宋體" lang="ZH-CN"
size="3">支持提供用戶以對話框的方式可視化地編輯屬性。這種情況常用于對對象類型屬性的編輯。一個典型的例子是</font><font
face="Arial" size="3">Font</font><font face="宋體" lang="ZH-CN" size="3">屬性,用戶可以找開</font><font
face="Arial" size="3">Font</font><font face="宋體" lang="ZH-CN" size="3">對話框來選擇字體的屬性。</p>
<p> 提供整體屬性編輯對話框,要覆蓋屬性編輯對象的</font><font
face="Arial" size="3">Edit</font><font face="宋體" lang="ZH-CN" size="3">方法。</font><font
face="Arial" size="3">Edit</font><font face="宋體" lang="ZH-CN" size="3">方法也使用</font><font
face="Arial" size="3">"Get"</font><font face="宋體" lang="ZH-CN" size="3">和</font><font
face="Arial" size="3">"Set"</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
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -