将几个控件合并,然后...(100分)

  • 主题发起人 主题发起人 davidc
  • 开始时间 开始时间
D

davidc

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在做一个控件,由DBGrid、ClientDataSet和DataSource组合而成(不要问我为
什么这样做,因为……),从TDBGrid继承而来,基本的功能已经实现,只是不知如
何调用ClientDataSet的Fields Editor(双击弹出的编辑框),这样对ClientDataSet
的显式控制就欠缺了许多,ClientDataSet被设置为私有变量,请各位指教。
 
试试看 publish 一个属性:
published
property Fields: TFields read FClientDataSet.Fields write FClientDataSet.Fields;

没有测试过,应该是可以的。
 
这个方法我早就试过,在Object Inspector中出现Fields的属性,相当于那种类的属性
一样(左边有一个加号),当鼠标点击加号时,出现错误“Unable to expend”
 
如果这样不行的话,就换一种写法:
private
FFields: TFields;
function GetFields: TFields;
procedure SetFields(AFields: TFields);
published
Fields: TFields read GetFields write SetFields;
end;

function Txxx.GetFields: TFields;
begin
FFields.Assign(FClientDataSet.Fields);
return FFields;
end;

procedure Txxx.SetFields: TFields;
begin
FFields.Assign(AFields);
FClientDataSet.Fields.Assign(FFields);
end;

我的意思是用 Assign 方法和一个中间 TFields 变量来过渡。
 
我试了,不可以这样做。
首先,TField类没有Assign方法
其次,TClientDataset.Fields为只读。
 
我用 TFields 只是一个比方,但是 TCollection 类是一定有 Assign 方法的,所有的
TCollection 的子类都实现了自己的 Assign 方法,你说的 Fields Editor(双击弹出的编
辑框),内部就是用 TCollection 保存数据的。
关于 TCollection 的说明,可以看我原来的一个老贴子:
<a href="DispQ.asp?LID=247126">TCollection</a>
 
你自己写一个属性编辑器不就行啦.
 
提问者:
如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
请认真阅读大富翁论坛规则说明

http://www.delphibbs.com/delphibbs/rules.htm
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部