下例是名為IsTrue的布爾類型屬性設置缺省值True的過程
type
TSampleComponent=class(TComponent)
private
FIsaTrue: Boolean;
pubilic
constructor Create (AOwner: TComponent)
published
property Istrue: Boolean read FIsTrue write FIsTrue default True;
end;
constructor TSampleComponent
begin
inherited Create ( Aowner)
Fistvue := True; { 設置缺省值 }
end;
Object Inspector提供所有類型屬性的缺省編輯器
● 繼承一個屬性編輯器對象
● 將屬性作為文本編輯
● 將屬性作為整體編輯
● 描述編輯器屬性
● 注冊屬性編輯器
⑴ 繼承屬性編輯器對象
DsgnIntf庫單元中定義了幾種屬性編輯器
表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
類型 編輯的屬性
─────────────────────────────────────
TOrdinalProperty 所有有序的屬性(整數
TIntegerProperty 所有整型
TCharProperty 字符類型或字符子集
TEnumProperty 任何枚舉類型
TFloatProperty 所有浮點數
TStringProperty 字符串
TSetElementProperty 集合中的獨立元素
TSetElementProperty 所有的集合
TClassProperty 對象
TMethodPropevty 方法指針
TComponentProperty 相同窗體中的部件
TColorProperty 部件顏色
TFontNameProperty 字體名稱
TFontProperty 字體
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
下面是TFloatPropertyEditor的定義
type
TFloatProperty=Class(TPropertyEditor)
public
function AllEqual: Boolean; override;
function GetValue: String; override;
procedure SetValue ( Const Value: string )
end;
⑵ 象文本一樣編輯屬性
所有的屬性都需要將它們的值在Object Inspector窗口中以文本的方式顯示
表
━━━━━━━━━━━━━━━━━━━━━━━━━━
屬性類型
──────────────────────────
浮點數 GetFloatValue SetFloatVallue
方法指針 GetMethodValue SetMehodValue
有序類型 GetOrdValue SetOrdValue
字符串 GetStrValue SetStrValue
━━━━━━━━━━━━━━━━━━━━━━━━━━
當覆蓋GetValue方法時
屬性編輯器的GetValue方法返回一個字符串以表現當前屬性值
屬性編輯器的SetValue接收Object Inspector窗口String類型的參數
下面是TIntegerProperty的GetValue和SetValue的例子
function TIntegerProperty GetValue: string;
begin
Result := IntToStr (GetOrdValue)
end;
proceduve TIntegerPropertySetValue (Const Value: string)
var
L: Longint;
begin
L := StrToInt(Value)
with GetTypeData (GetPropType)^ do
if ( L < Minvalue ) or ( L > MaxValue ) then
Raise EPropertyError
[MinValue
SetOrdValue (L)
end;
⑶ 將屬性作為一個整體來編輯
Delphi支持提供用戶以對話框的方式可視化地編輯屬性
提供整體屬性編輯對話框
在大多數部件中使用的Color屬性將標准的Windows顏色對話框作為屬性編輯器
procedure TColorProperty
var
ColorDialog: TColorDialog;
begin
ColorDialog := TColorDialog
try
ColorDialog
if ColorDialog
SetOrdValue (ColorDialog
finally
ColorDialog
end;
end;
⑷ 描述編輯器的屬性
屬性編輯必須告訴Object Inspector窗口如何采用合適的顯示工具
GetAttributes返回TPropertyAttributes類型的集合
表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
標志 含 義 相關方法
──────────────────────────────
paValuelist 編輯器能給予一組枚舉值 GetValues
paSubPropertie 屬性有子屬性 GetPropertises
paDialog 編輯器能顯示編輯對話框 Edit
PaMultiSelect 當用戶選擇多於一個部件時
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[
From:http://tw.wingwit.com/Article/program/Delphi/201311/25118.html