我用delphi的active 写了一个ocx的控件,其中有一些onMousedown、onMouseUp、OnMouseOver的函数,为什么在调用这个控件后,这些函数都不能执行呢,如果要调用这些函数该怎么办呢?在线等,望高手指点一二!

解决方案 »

  1.   

    这个应该是你的程序问题!
    你的ACTIVE路径都设置对了?
    输入路径一定要为OCX控件所在路径
      

  2.   

    To fancy100 (遗失的城市):
        现在假设你的TActiveForm对象的名称为ActiveFormX,源文件名称为ActiveFormX.pas,打开ActiveFormX.pas,找到TActiveFormX的Initialize过程,可以发现如下代码:
      inherited Initialize;
      OnActivate := ActivateEvent;
      OnClick := ClickEvent;
      OnCreate := CreateEvent;
      OnDblClick := DblClickEvent;
      OnDeactivate := DeactivateEvent;
      OnDestroy := DestroyEvent;
      OnKeyPress := KeyPressEvent;
      OnPaint := PaintEvent;
        原来问题出在这里,事件被吃掉了。怎么搞办?我们以处理OnPaint事件为例。
        把此行注释掉吧,然后再写一个你自己的OnPaint事件处理过程,不要忘了带参数sender。
        如:procedure MyPaint(Sender:TObject);
        然后赋给OnPaint就行了。如:OnPaint:=MyPaint; 
        上面列举的几个事件都和OnPaint类似。模仿OnPaint就ok了。
      

  3.   

    终于有人说话,不过问题已经解决了,其实在ActiveX里面的vcl组件的OnMouseDown,OnMouseMove,OnMouseDown的事件不需要任何修改就可以运行,正是因为我在做控件之前,看了 “头皮屑”引用的文章,做了一些修改反而使事件不能触发了。谢谢各位的捧场,顺便在这里结交一些delphi的高手,以方便以后请教,还望各位前辈多多指点,我的qq:99113130,
    MSN:[email protected], 有兴趣的话和我联系,感激不尽!
      

  4.   

    To fancy100 (遗失的城市):
        听了楼主的话,真让在下汗颜,因为我确实引用了你看的那篇文章,却聪明反被聪明误,还望余兄不要嗔怪。
        再一次表示歉意。
      

  5.   

    没关系的啊,那骗文章说的还是有道理的,现在又有一个问题了,就我想给这个控件加一个函数,可是在定义参数的时候有问题了,在参数的类型选择里居然找不到String 类型的变量,该怎么办呢,我想创建一个函数,输入一个字符串变量表示文件存放的路径,然后把图片保存到这个变量里,请问我该怎么做呢?
      

  6.   

    To fancy100 (遗失的城市):
        虽然我对这个问题不是很清楚,但是string类型变量你可以用WideString类型代替。你可以参照看一下TActiveFormX的源代码,在那里使用的变量类型铁定是可以的。