紧急求助,没分了,就这点了(20分)

  • 主题发起人 主题发起人 星之瀚海
  • 开始时间 开始时间

星之瀚海

Unregistered / Unconfirmed
GUEST, unregistred user!
一般来说,编写一个组件后,
它的某个属性如果要在属性编辑器中显示为下拉框的形式,
它应该是一个集合类型,
但TDatabase的DriverName也是这样的,
为什么在其组件源码中没有具体的实现方法?
它的属性声明仅为
type
TDatabase=class(TCustomConnection)
private
FDatabaseType:String;
published
property DriverName: string read GetDriverName write SetDriverName;

function TDatabase.GetDriverName: string;
begin
if FAliased then Result := '' else Result := FDatabaseType;
end;
procedure TDatabase.SetDriverName(const Value: string);
begin
SetDatabaseType(Value, False);
end;
 
你打开Program Files/Borland/Delphi6/Source/Property Editors/BDEReg.pas来看看就知道
是怎么一回事了:
type
TDriverNameProperty = class(TDBStringProperty)
public
procedure GetValueList(List: TStrings); override;
end;

procedure TDriverNameProperty.GetValueList(List: TStrings);
begin
(GetComponent(0) as TDatabase).Session.GetDriverNames(List);
end;


RegisterPropertyEditor(TypeInfo(string), TDatabase, 'DriverName', TDriverNameProperty);
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部