嵌入的IE和Form1.BorderStyle之间的显示问题 by 晓茶(50分)

  • 主题发起人 主题发起人 茶叶蛋
  • 开始时间 开始时间

茶叶蛋

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中嵌入了IE,我有个操作是想动态改变窗口的属性,这样实现的:
FormMain.BorderStyle := bsNone;
ReCreateWnd;
以及
FormMain.BorderStyle := bsSizeable;
ReCreateWnd;
在没有WebBrowser的时候,完全没问题,
有WebBrowser的时候,就会出现下述错误:
could not obtain OLE control window handle
然后窗口就不显示了。但是我的程序里头WebBrowser是唱主角的呀!
而且我的根本目的是
如何解决呢?

ps: 当我改变BorderIcon时也会出现这种情况。
 
小茶: 我帮不了你了, 我Delphi Form中放THTML控件, 结
果出错: ---中文提示: <font color=red>找不到运行该程序所需的一个库文件 </font>

我是Pwin97 , 没有装IE4.0. 只有原装IE3.
 
不用放THTML啊!我放的是<font color="red">WebBrowser</font>!
是Import ActiveX里头的Microsoft Internet Controls
的<font color="red">TWebBrowser</font>!
我也是PWin97,也是原装IE3!
 
为什么 ?
ReCreateWnd;

不用ReCreateWnd不行吗?
 
问题是不用ReCreateWnd也是这个错误啊!
 
问题已经被我解决了,但是我觉得解决的办法不是很好,所以我想继续问下去。
我的解决方法是这样的:
改变窗口的BorderStyle前把WebBrowser给Free掉,改过BorderStyle后再
创建一个WebBrowser(鸵鸟战术)。
<font color="blue">还有没有大虾有更好的办法呢?</font>

对于RecreateWnd的问题,是这样的:
RecreateWnd是TWincontrol的一个成员函数,在运行时刻改变TWinControl的
BorderStyle和BorderIcons时,通常是不可取的,因为这样会改变窗体的基本
行为。但是我们可以通过重新建立窗口来进行这一操作。ReCreateWnd就是干这
种事情的。

如果不用ReCreateWnd的话,您会发现第一次BorderStyle可能还会改过去,第
二次就无论如何改不回来了。
 
还是没有人知道吗?
 
晓茶:
我最近写了个触摸屏演示的东西,也用 BROWSER,问题和你的一样。
我的解决方法是:
整个动态生成FORM,不是改变,而是整个 FREE FORM,然后再根据条件建立。
呵呵,MS真是垃圾。
 
WaKao,整个free Form, 真是服了你了, CJCJC
 
呵呵,没办法,三天要交货,来不及多想了,不出错就可以。
 
我到想了一个办法:
建立两个Form
Form1:正常状态,有窗口,有菜单 住窗口
Form2:全屏,中间加上一个Twebbrowser控建
Form 1有系统自己建立
Form 2手工创建,及Destory
这样可以省去Recreate Windows,同时系统开销也不大
而且在设计阶段也能生一些时间
 
我知道!!!
 
天无绝人之路,我决心采用<font color="red">恶劣</font>的方法了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部