IE里控件的如何调试 (50分)

  • 主题发起人 主题发起人 ucan1
  • 开始时间 开始时间
U

ucan1

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个控件,用在IE里的,但是每次都要到IE里才能测试,那里不好调试啊。
有没有什么方便的方法可以用啊?不要告诉我用showmessage,应为程序太长,不好使。
最好能在Delphi里直接逐行调试,但是这样又没有IE下的环境,那个控件我要在IE里输入参数或者进行操作的。

还有阿,控件里面用到了一个Timer,在onTimer事件里先执行一段代码,之后Timer.Enabled:=False,但是执行完一次后还是会执行onTimer事件里的代码,这是怎么回事啊?

 
你在Timer事件中先Timer.Enabled:=False,然后再执行一段代码。
 
To TYZhang:
onTimer的事情已搞定,那个调试的有没有什么好的办法?
 
加入WebBrowser控件到程序里面做一个象ie一样的浏览器,然后再调试,调试完后再删掉
 
To dream0:
我的那个是控件阿,不是普通的工程,如何把那个控件嵌入到WebBrowser里就象是嵌在ie里那样呢?
我试了一下,好像那个WebBrowser不可以阿


 
在delphi的你的控件的工程环境下
菜单 run/parameters
host application 选择ie
parameters输入htm文件名字(全路径)
直接在delphi里面F9执行
 
同意pipi.(蹭点分[:)])
 
楼上正解
 
To:Pipi
你的方法确实可以打开IE,并且显示控件,但是还是没有解决我的问题呀。
我的问题是,如果控件里面有一个按钮,按钮事件里写了100行代码,那么我怎么逐行调试每一行代码呢?

 
你如果设置好了的话,把ie的首页设置成可以使用你的控件的页面,其他就
和你平时一样了,下断点就可以了。
你一run就打开ie然后ie去调你的控件,到了断点就会停
 
To satanmonkey,
你说“你一run就打开ie然后ie去调你的控件,到了断点就会停"
但是我设置了几个断点,都没有停呀,一按F9 or F7,代码都是全部运行完毕。
没有停在断点处,怎么回事?


 
你的控件必须是注册到你的delphi编译输出的控件上,而不是拷贝出来注册的控件
 
你还要把project->options->Linker->Include TD32 Debug Info前打勾。
 
我是照下面这么做的,但还是没有用啊
ActiveX:
1.project->options->Linker->Include TD32 Debug Info前打勾。
2.设置好断点
3.编译为ocx
4.Run--Register ActiveX server
5.Component --- Import ActiveX Control.之后在ActiveX面板上有了这个ActiveX控件图标。

新建一个Application:
从ActiveX面板上拖下这个ActiveX控件放到Form上,F7调试,但是还是正常执行,没有在断点处停止阿






 
哈哈,你的问题就在这:
你不能在新建的Application中对ActiveX进行调试。
你应该:
编译你的新建的Application,然后重新打开你的ActiveX的项目,在run->paramters->host application 中选择你的新建的Application编译的程序,然后运行,就可以进行调试了。

其实调试ActiveX、Com、DLL等都是使用相同的方式,就是使用宿主Host将ActiveX、Com、DLL加载到内存后进行调试,注意:是打开“ActiveX、Com、DLL”的project用run->paramters->host application 将“ActiveX、Com、DLL”加载到内存进行调试,不是在宿主的程序中调试。
 
还是不行,出错提示为:
raised ecxeption class EReadError with message
"Property does not exist"
 
可能只是delphi截取了异常,在delphi菜单 tools/debugger options/language exceptions
把stop on delphi exceptions选项不要打勾,就正常很多了
 
后退
顶部