1。对于select对象,目前通过赋值给它的value可以确定我的选择;但不知如何判断它的options[].text与我需要的字符串一致?
     if doc.all.item(i).name='COMBOBOX1' then
                begin
                  doc.all.item(i).value:= 4;
                  如何判断他的.text是否为'ABCDEF'?
                  if (doc.all.item(i).options[4].text <> 'ABCDEF') then ... ???
                end;
2。DELPHI 通过WEBBROWSER打开一个HTML文件,其中有一个Button,如何判断该Button已被点击过?
     即DELPHI如何响应Button事件?别见笑,先谢谢大家。

解决方案 »

  1.   

    1. 是的。
    2. 响应Button点击事件有几种做法
       I. 比较麻烦的做法 
          编写实现HTMLElementEvents接口(实际编程时应该实现IDispatch)的事件处理对象,在Button上取得IConnectionPointContainer,找到HTMLElementEvents对应的IConnectionPoint,Advise你实现的事件处理对象。   II. 使用EventSinkImp工具生成一个MSHTMLEvents.pas文件,然后你可以用类似这样的程序来响应事件了
          FEvent := TMSHTMLXXXEvents2.Create(nil);
          FEvent.Connect(ButtonElement);
          FEvent.onclick := MyClickEventHandler;
          ...
    EventSinkImp是个非常好的小巧工具,它帮你生成指定COM组件事件接收器的Delphi包装类,以简化接收COM事件的代码。
    可以在以下网站下载(免费并包含源码)
    http://www.techvanguards.com/products/eventsinkimp/   III.使用IHTMLElement::onclick属性 或者 IHTMLElement3::attachEvent方法
       ButtonElement.onclick := EventHandlerObj;
    或者
       ButtonElement.attachEvent("onclick",EventHandlerObj);
    其中EventHandlerObj是你自己定义的的实现IDispatch接口的对象,你只要在Invoke方法里编写事件处理代码。
      

  2.   

    还有一类做法也被广泛使用
      通过提供Windows.External对象 或者扩展Document.Script之类的办法 让脚本可以调用到宿主里的程序
    然后编写这样的HTML即可
      <button onclick="javascript:window.external.handleBtnClick()"></button>
      

  3.   

    谢谢gray:
    问题1: ???处在运行时出现EOleError with message 'Method 'text' not supported' by automation object. 错误,什么原因?
      

  4.   

    试试
    doc.all.item(i).item(4,4).text
      

  5.   

    doc.all.item(i).item(4,4).text OK谢谢,给分