救救大陆的Delphi程序员吧(Intraweb Web报表 ActiveX在Intraweb中的应用)抛砖引玉,目的在于吸引更多的人一起研究Delphi的Web报表,Intraweb中ActiveX组件的应用知道您忙,所以我是没办法了才去找您,希望您能给点思路,以下是我在几个Delphi的几个论坛发的贴子,希望您能百忙之中抽空看看http://expert.csdn.net/Expert/topic/1933/1933958.xml?temp=.9307978http://www.delphibbs.com/delphibbs/dispq.asp?lid=1965142http://www.51delphi.com/delphi/showtl?ID=32072----------------各大中文论坛几乎无人能解,困惑ing......http://expert.csdn.net/Expert/topic/1891/1891098.xml?temp=.1868402
HTML and JavaScript code for the browser. IntraWeb even knows about certain bugs in
specific versions of each browser and works around them dynamically. In other cases,
output for each browser is optimized. IntraWeb performs all of this transparently to you
and without using Java, ActiveX, or any plug-ins.
'<p>'
+'<object classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" id="WindowsMediaPlayer1" width="245" height="240">'
+'<param name="URL" value="http://XXX/XXX/XX.avi">' ////iis发布
+'<param name="rate" value="1">'
+'<param name="balance" value="0">'
+'<param name="currentPosition" value="0">'
+'<param name="defaultFrame" value>'
+'<param name="playCount" value="1">'
+'<param name="autoStart" value="-1">'
+'<param name="currentMarker" value="0">'
+'<param name="invokeURLs" value="-1">'
+'<param name="baseURL" value>'
+'<param name="volume" value="50">'
+'<param name="mute" value="0">'
+'<param name="uiMode" value="full">'
+'<param name="stretchToFit" value="0">'
+'<param name="windowlessVideo" value="0">'
+'<param name="enabled" value="-1">'
+'<param name="enableContextMenu" value="-1">'
+'<param name="fullScreen" value="0">'
+'<param name="SAMIStyle" value>'
+'<param name="SAMILang" value>'
+'<param name="SAMIFilename" value>'
+'<param name="captioningID" value>'
+'<param name="enableErrorDialogs" value="0">'
+'<param name="_cx" value="6482">'
+'<param name="_cy" value="6350">'
+'</object>'
+'</p>';
有这么一个程序,在ActiveXform上有一些报表控件,而在intraweb界面上有一个iwedit,希望通过对iwedit上输入sql语句,来实现报表的产生。
(1)产生一个ActiveXForm,上面有Query\DataSource还有几个报表控件,在Type Libary里增加一个SQL:widestring read Get_SQL的属性,这个是用来接收SQL语句的,在它的Get_SQL中写出调用ActiveForm.Query执行SQL的代码
(2)注册这个ActiveFormX,这个时候,启动FrontPage,建立一个新的页面,然后在这个页面中插入你新建的ActiveXForm
(3)在FrontPage里分析一下你的脚本看看,你有了全新的发现,在加入ActiveXForm的脚本是这么写的
<object classid:....classid....... width........ height......>
<param name="caption“ value="activeXform1">
................
<param name="SQL" value="">
</object>
这个说明了什么呢?说明了IntraWeb完全可以通过产生动态脚本的方式插入ActiveXForm的控件,而且可以通过指定<param name..........value.........>的方式控制ActiveXForm执行什么样的工作。
(4)那么我们回到Intraweb,加入一个iwbutton,再加一个iwedit,我们可以写iwbutton来动态产生插入ActiveXForm的脚本。
这里有个问题,那么由谁加载这个脚本呢?我觉得最好的就是IwText,那么再在Iwform上放一个IwText,这个时候写Iwbutton的OnClick的事件代码
IwText1.lines.clear;
IwText1.lines.add( '<object classid:....classid....... width........ height......>
<param name="caption“ value="activeXform1">
................');
IwText1.lines.add('<param name="SQL" value="'+IwEdit1.text+'">');
IwText1.lines.add('</object>');
(4)OK了,你执行一下,现在的ActivexForm就可以加载到Intraweb上,并且一出现,就执行了IwEdit里指定的SQL语句(5)一句话"
1.通过动态产生<object>...........</object>脚本的方式加载ActiveForm
2.通过动态产生<param name .... value>脚本的方式与ActiveForm传递参数
最后注意一下,刚才说的IwText的RowLine的属性必须为True,以免IwText自动换行或者加那些不该有的空格
我就是这么做的!
<object classid:....classid....... width........ height......>
的地方指定的,至于说Top\left,这个是依据IWText的位置
<object classid:....classid....... width........ height......>
的地方指定的,至于说Top\left,这个是依据IWText的位置