解决就给分.procedure TNewMain.ToolButton5Click(Sender: TObject);
begin
  ToolButton4Click(self);
  ToolButton3Click(self);
end;有什么命令能让这两个事件相当于按两次按钮.既.ToolButton4Click(self);马上就提交.两句不起执行.

解决方案 »

  1.   

    ToolButton4Click(ToolButton4);
      ToolButton3Click(ToolButton3);
      

  2.   

    这样用不太好。
    用ActionList1来管理吧。
      

  3.   

    跟你的button4、button3的click事件有关你这样写:
    procedure TNewMain.ToolButton5Click(Sender: TObject);
    begin
      ToolButton4Click(self);
      ToolButton3Click(self);
    end;那么Button3的click事件是在button4执行完毕后执行的
      

  4.   

    procedure TNewMain.ToolButton5Click(Sender: TObject);
    begin
      ToolButton4.Click;
      ToolButton3.Click;
    end;
    也可以
      

  5.   

    楼上这个可以吧,
    procedure TNewMain.ToolButton5Click(Sender: TObject);
    begin
      ToolButton4.Click;
      ToolButton3.Click;
    end;
    也可以
      

  6.   

    把ToolButton4的OnClick中代码提到一个Procedure里面,ToolButton4调用一次,ToolButton5调用2次就可以了
      

  7.   

    >>有什么命令能让这两个事件相当于按两次按钮.既.ToolButton4Click(self);马上就提交.
    >>两句不起执行.
    ---
    没有看懂你的意思。
      

  8.   

    现在的问题是.这样的.我有一个dhtmlsafe,一个dhtmledit
    procedure TMain.ToolButton3Click(Sender: TObject);
    begin
    DHTMLSafe1.DocumentHTML:= DHTMLedit1.DocumentHTML;
    showmessage (DHTMLSafe1.DocumentHTML);
    end;
    报错.灾难性故障,而分开写
    procedure TMain.ToolButton4Click(Sender: TObject);
    begin
    DHTMLSafe1.DocumentHTML:= DHTMLedit1.DocumentHTML;
    end;procedure TMain.ToolButton5Click(Sender: TObject);
    begin
    showmessage (DHTMLSafe1.DocumentHTML);
    end;
    这样就不报错.为什么呢.怎么解决.高分送了.快来帮我.
      

  9.   

    你要找原因是为什么,你分开写有什么用啊。分开写跟一块写的区别只是分开写了后,你按两下键有延迟时间了。你按照下面改一下估计也没有问题了
    procedure TMain.ToolButton3Click(Sender: TObject);
    var
      i:Integer;
    begin
      DHTMLSafe1.DocumentHTML:= DHTMLedit1.DocumentHTML;
      //延迟1s
      for i:= 1 to 100 do begin
        sleep(10);
        application.processmessages;
      end; 
      showmessage (DHTMLSafe1.DocumentHTML);
    end;
      

  10.   

    >>有什么命令能让这两个事件相当于按两次按钮.既.ToolButton4Click(self);马上就提交.
    >>两句不起执行.
    ---
    没有看懂你的意思。
      

  11.   

    不是的.就是sleep(200000000)都是一样的.delphi中一个事件是一次提交的.
    分开写就不会一次提交的了.
      

  12.   

    介个玩意好像跟DHTML这个东东有点关系我记得以前用的时候也是经常在访问DocumentHTML的时候抱错但是错的很诡异后来实在没办法我每次要用的时候,把DHTML关闭再打开一次就好了具体啥属性记不清了,好久以前的事好像是个什么enable吧?
      

  13.   

    当时给我一个感觉是DocumentHTML这个东东有点问题是修改完了不能直接访问还是访问完了不能直接修改忘了忘了
      

  14.   

    用for i := 循環可以不?
      

  15.   

    我用的一点问题也没有,就是这个问题是   delphi 的,不知道怎么解决。多线程不行的。
      

  16.   

    楼主的问题不是出现在多少次调用点击按钮,而是语句的同步机制问题。我想原因可能是DHTMLSafe1.DocumentHTML:= DHTMLedit1.DocumentHTML;采用了异步机制,也就是说这个付值语句并不是阻塞的(执行完毕再继续执行),这样你在这句之后紧跟着使用DHTMLSafe1的DocumentHTML时可能它并没有完成付值,也就是说它是未完成付值的不安全的。你可以试试将一旦付值后就使用DHTMLSafe1.DocumentHTML的语句(楼主的ShowMessage(..))放在DHTMLSafe1的OnDocumentComplete事件中,这样就可以保证一旦付值完成即可使用DHTMLSafe1.DocumentHTML.
    以上实属推断,我没用过这两个组件,希望是正确的。
      

  17.   

    你说的很对,可是我想调用他在第一个付值语句放在complete中,窗口打开时他也会执行的.
      

  18.   

    怎么能一直判断等待ondocumentcomplete 完成在执行调用showmessage呀.不完成就在那等.怎么写呢.
      

  19.   

    建立个Event,初始化为非激活,付值后紧接着WaitForSingleObject(EventHandle,INFINITE)即可。
    而在OnDocumentComplete中使用SetEvent(EventHandle)将Event激活。