TdataSet的字段编辑器有这样的功能:在设计时可以拖一个字段到form上,它会自动生成对应的数据敏感元件,哪位高人说说这是如何实现的?我要做一个类似的属性编

  • 主题发起人 主题发起人 tomboy
  • 开始时间 开始时间
T

tomboy

Unregistered / Unconfirmed
GUEST, unregistred user!
TdataSet的字段编辑器有这样的功能:在设计时可以拖一个字段到form上,它会自动生成对应的数据敏感元件,哪位高人说说这是如何实现的?我要做一个类似的属性编辑器。(100分)<br />可能是在DSDesign.pas中,但我看不太明白
 
可能是IFormDesigner的CreateComponent方法
 
大概意思是建立了一个属性编辑器DSDesigner,然后在属性编辑器中调用
TFieldsEditor(这是个Form)来编辑字段,在拖动到窗体上时建立TDBEdit。具体的还没明白。
 
建立控件的确是如hubdog所说createcomponent就可以,但是拖动功能是如何实现的呢?
那个单元的最后一句代码是register了一个什么drag有关的东西,看不明白,帮忙啊
 
RegisterDragTarget(TDragFields.ClassName, TFieldsTarget);

procedure RegisterDragTarget(const SourceName: string; TargetClass: TDragTargetClass);
begin
if Assigned(RegisterDragTargetProc) then
RegisterDragTargetProc(SourceName, TargetClass);
end;

TRegisterDragTargetProc = procedure(const SourceName: string;
TargetClass: TDragTargetClass);
var
RegisterDragTargetProc: TRegisterDragTargetProc;

这个RegisterDragTargetProc函数指针是Delphi实现的,可Delphi不会公开原码的,就象
IFormDesigner实现的原码一样,你照它的样用就算了,试试再说
 
再看一下:designer为什么可以接受拖动呢?
 
TDragFields = class(TDragControlObject)
应该是认TDragControlObject吧
 
写好了通知一声!!
 
后退
顶部