写出了好用的VCL控件,却不知如何做成OCX!富翁大哥,救我!!!(100分)

  • 主题发起人 主题发起人 21salon
  • 开始时间 开始时间
2

21salon

Unregistered / Unconfirmed
GUEST, unregistred user!
目前,我们做OCX,过程反了——VCL控件(MYVCL)已经做出来,在D6下很好用,
可是因为都没做过OCX,现在边看书,边瞎撞着侥幸能写出基于MYVCL的OCX!几天了,
没进展啊,各位富翁兄弟,救我!!求你了[:(]
详细说来,MYVCL系统由多个继承自TPersistent的数据类(TData1、TData2) +
一个继承自TCustomControl的类(TMain)来完成所有功能。在TMain中声明了一属性
Property p1 :TData1 Read Fp1 Write Setp;
如此,在用D6向导时,该属性无法自动加进OCX中,怎么才行呢?问题一;
在我用向导做完OCX(不完整)后,发现在MainXControl_TLB.pas和MainImpl.pas
中都有一实现类:TMainX;只是有些不同。请问该类在以上两单元中都啥意思?怎么生
成的?特别是在类型库中是怎么生成的???我在类型库中能否生成类似的实现类??
类型库中的代码一定非得用那可视界面工具才能生成吗??问题二;
TData1结构如下:
TData1=Class(TPersistent)
private
FFont : TFont;
FTreeID : String;
FBitmap : TBitmap;
FParentTree : TData1;
function GetSubTree(i: Integer): TData1;
procedure SetSubTree(i: Integer
const Value: TData1);
procedure SetParentTree(const Value: TData1);
procedure SetTreeID(const Value: String);
protected
procedure AssignTo(Dest: TPersistent)
Override;
Public
constructor Create;
destructor Destroy
Override;
Procedure ClearTrees
virtual;
Procedure AddSubTree(Tree:TData1)
virtual;
Procedure DeleteTree(TreeID:String)
overload;
Procedure DeleteTree(Index: Integer)
overload;
Procedure RemoveSubTree(Tree:TData1)
virtual;
Function GetNewTree: TData1
virtual;
Function GetBitmap: TBitmap
virtual;
function IndexOfSubTreeID(TreeID:String;ClassName:String):Integer;
Property SubTrees[i:Integer]:TData1 Read GetSubTree Write SetSubTree;
Function TreesCount :Integer;
Property Font :TFont Read FFont Write FFont;
property TreeID :String Read FTreeID Write SetTreeID;
property ParentTree :TData1 Read FParentTree Write SetParentTree;
Property TreeName :String Read FTreeName Write FTreeName;
Property BitMap :TBitMap Read FBitMap Write FBitMap;
end;
那,如果要让外部调用到OCX的p1属性(属于TData1)的方法和属性,是不是该在MainXControl_TLB.pas
单元中,用可视界面工具加入相关的接口;然后在MainImpl.pas单元中手动加入相关的实现类????
如果是,那该实现类应该如何写呢?特别是类似AddSubTree(Tree:TData1)方法,其参数传递、赋值如何
写?好难啊:(
当然,要在OCX中实现这个自定义类的全部功能,妈哟,我头大!!:(
热诚希望此中高手将这些问题扩展开来讨论,让大家都收益:),让我揪着的心放松放松(@_^
 
关注!帮你踢一脚!
 
简单做法在Delphi6菜单下点击View然后点击Type library 进入后第一个接口中右键加入属性。

 
加属性方法用Type library 在IPROJECT右键就可以,方法代码在MainImpl.pas,
属性代码在——TLB。PAS中实现
 
后退
顶部