各位大侠好:
我想制作一个ocx控件以实现以下功能,有一个image控件,一个memo控件,用户利用这个控件可以浏览本机图片(bmp、jpg等),并且利用memo给该图片作注释。
我没制作过ocx,用向导生成了一个,但是我所添加的函数,对方并不能使用,各位高手帮帮忙吧!
谢谢!

解决方案 »

  1.   

    public中申明;对方安装了吗?
      

  2.   

    对方安装了该控件呀,我放再了public中,可是出不来,
    我的过程是:
    procedure getdir(dir:string);
    begin
      image1.picture.loadformfile(dir);
    end;
    目的是根据用户提供的图像路径显示图像,有什么不对吗?
    请指教。
      

  3.   

    作为一个OCX控件{应该叫组件吧},首先你要创建ActiveX Lib,当创建完之后,你要打开TLB(类型库 Shift + F12 or View -> Type Library),你要让别人可以用你这个OCX中定义的方法,那么这一切方法只有在TLB中去写才可以。方法如此,其中字段、属性也需要这样定义,不然别人没有办法用你的这个组件,而方法、字段、属性置其ID为小于0的整数{这一点和普通的组件有出入}----------------
    沉沦中..........
      

  4.   

    我还是很不明白,我打开了这个类型库,可是具体再哪里定义呢?
    我想让组件的一个属性为loadfromfile,像image控件的属性一样,该怎么实现?
    另外,id是怎么个用法?能查到相应的id号吗?还是自己定义?
      

  5.   

    TLB中有添加方法的 图表,绿色的。
    当你正确的添加了方法时,你会看到其ID的。你想实现什么功能不重要。给你个例子
    unit PrintTextExProj1_TLB;// ************************************************************************ //
    /。
    ..................................
        function  GetTexts: OleVariant; safecall;////////////这个就是
        。。
        property Active: WordBool readonly dispid 9;
        property DropTarget: WordBool dispid 10;
        property HelpFile: WideString dispid 11;
        property DoubleBuffered: WordBool dispid 12;
        property AlignDisabled: WordBool readonly dispid 13;
        property VisibleDockClientCount: Integer readonly dispid 14;
        property Enabled: WordBool dispid -514;
        property Cursor: Smallint dispid 15;
        property HelpType: TxHelpType dispid 16;
        property HelpKeyword: WideString dispid 17;
    {                以下的都是}
        procedure SetToolValue(Value: WordBool); dispid -553;
        procedure SetPrintVlaue(Value: WordBool); dispid -554;
        procedure SetFileName(const Value: WideString); dispid -555;
        property SaveFile: WideString writeonly dispid -556;
        procedure SetClient(Value: WordBool); dispid -557;
        procedure SetSaveFile(Value: WordBool); dispid -558;
        procedure SetOpenValue(Value: WordBool); dispid -559;
        procedure SetFilePath(const FileName: WideString); dispid -560;
        property Text: IStrings dispid 18;
        function  GetTexts: OleVariant; dispid -562;
      end;   。。
       
    procedure Register;
    begin
      RegisterComponents('ActiveX',[TPrintTextEx]);
    end;end.----------------
    沉沦中..........
      

  6.   

    哦,找到了,多谢老师!
    我想对这方面有所了解,知道您一定很忙得,所以麻烦您给我提供一些这方面的
    网站或者demo,多谢了!