Delphi中对word的控制:OleContainer的Color属性无效! 唉,这段时间快疯了,总是碰到一些很诡异的问题,这次又有了:拖了一个OleContainer在Form上,然后改变它的Color属性为clBlack,无效?运行一下,还是那个灰色背景... 又试着添了一个按钮,在按钮处理程序中加了改变OleContainer的Color的代码,运行后,还是无效? 我看到了恶作剧之神在狞笑... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你说明了吧,Ole对象的原理是,在非激活状态是请求服务器给你一张图片,在激活状态是请求服务器在相应区域绘制窗体并响应事件。所以,非激活状态OleContainer中的背景是Word给它的一张图片,激活状态是Word把窗体给塞到了OleContainer中。楼主是否还想改它的Color属性? 按照楼上的说法就是说非激活状态的背景是有word决定的?如果真是这样的话就算改了也达不到我的本来目的了...不过在网上找了很久,最后google到一个国外的Delphi论坛上是这样说的:继承TOleContainer类,然后把类的一个Paint的方法重写下就可以了,但是照着弄了还是搞不定,大家可以参考下:http://www.devsuperpage.com/main.asp?F=Articles/LangCatArt.asp&Lang=1&Cat=28另外,我给Mastering Delphi7的作者Marco Cantu发了个mail,告诉他这个问题,他居然回信说他好久没用OLE这个类了,恐怕帮不了我,也不知道是不是自己被鄙视了... 实验证明,我的想法确实是错的,的确在Paint方法中加上Canvas.FillRect(CR);就可以让它在非激活状态下改变背景色了 可以吗?我也在OleCtnrs单元里面在DrawEdge(Canvas.Handle, CR, EDGE_SUNKEN, Flags or BF_MIDDLE); 后面加了Canvas.FillRect(CR);,然后重新编译运行还是不能改变啊? 刚才又测试了一下,是可以的,但是好像是只有这一行有文字才会在container里出现背景色,如果页面只有一行文字,那么就只会有这一行所在的位置有黑色背景... OleContainer有个属性Ctl3D把它的值设为False就可以了。 关于 kernel32.dll 错误问题! 第一次提问:Delphi中测试dll类型的单元有没什么好的方法 delphi编写动态链接库(DLL)如何让asp.net(C#)调用?? dbgrid问题 QComboBox2Change(nil)有什么作用? Access like通配符的问题 如何屏蔽程序的最小化消息? 考考高手:如何获得正在运行的任意进程的application title? 各位大虾,如何获取系统BOIS信息? 如何使程序在OnClose时最小化? MYSQL中如何一次查询多个结构相同的表,返回一个结果集? 请教 NOKIA 接收短信的AT指令问题
所以,非激活状态OleContainer中的背景是Word给它的一张图片,激活状态是Word把窗体给塞到了OleContainer中。
楼主是否还想改它的Color属性?
不过在网上找了很久,最后google到一个国外的Delphi论坛上是这样说的:继承TOleContainer类,然后把类的一个Paint的方法重写下就可以了,但是照着弄了还是搞不定,大家可以参考下:http://www.devsuperpage.com/main.asp?F=Articles/LangCatArt.asp&Lang=1&Cat=28
另外,我给Mastering Delphi7的作者Marco Cantu发了个mail,告诉他这个问题,他居然回信说他好久没用OLE这个类了,恐怕帮不了我,也不知道是不是自己被鄙视了...
后面加了Canvas.FillRect(CR);,然后重新编译运行还是不能改变啊?
把它的值设为False就可以了。