我想在一个按钮中调用几个其它按钮执行函数,可是它们看起来是同时执行的,会出错。也就是说,并不是等一个按钮的全过程执行完,再接下去执行下一个的。应该如何实现呢?
比如这样是不行的:
procedure TForm1.Button10Click(Sender: TObject);
begin
  Button6.Click;
 Button7.Click;
  Button8.Click;
end;当然我也可以用笨办法把具体函数都粘过来,但有没有简单的办法呢?

解决方案 »

  1.   

    10执行Button6.Click; 
    6执行完执行Button7.Click;
    7执行完执行Button8.Click;
      

  2.   

    to : andyzhou1101(〆.赱 極端(http://lovelcy.blogcn.com))   没看明白to : anime_jin()  不是同时,是要一个按钮里的所有语句都执行完毕,再执行下一个按钮的
      

  3.   

    to : andyzhou1101(〆.赱 極端(http://lovelcy.blogcn.com))   没看明白to : anime_jin()  不是同时,是要一个按钮里的所有语句都执行完毕,再执行下一个按钮的------------------------
    就因为你有先后执行的顺序
    所以才那样的啊procedure TForm1.Button10Click(Sender: TObject);
    begin
      Button6.Click;
    end;procedure TForm1.Button6Click(Sender: TObject);
    begin
     ...........................  Button7.Click;
    end;procedure TForm1.Button7Click(Sender: TObject);
    begin
     ...........................  Button8.Click;
    end;
      

  4.   

    用互斥对象做同步
    WaitForSingleObject
    OpenMutexReleaseMutex
      

  5.   

    一段演示的例子
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        ADOQuery1: TADOQuery;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        p : PChar;
      end;var
      Form1: TForm1;
      MutexHandle: THandle;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);//分配空间
    var
      d : DWORD;
    begin
      WaitForSingleObject(MutexHandle, INFINITE);
       d := GetTickCount();
       while (GetTickCount()-d) < 2000 do
          Application.ProcessMessages;
       GetMem(p,sizeof(pchar));
       ReleaseMutex(MutexHandle);end;procedure TForm1.Button2Click(Sender: TObject);//给分配的空间赋值
    begin
      WaitForSingleObject(MutexHandle, INFINITE);
      StrCopy(p,pchar('abc'));
      ShowMessage(p);
      ReleaseMutex(MutexHandle);
    end;procedure TForm1.Button3Click(Sender: TObject);//释放
    begin
      WaitForSingleObject(MutexHandle, INFINITE);
       FreeMem(p);
       ReleaseMutex(MutexHandle);
       CloseHandle(MutexHandle)
    end;procedure TForm1.Button4Click(Sender: TObject);//上面的三个按钮都不可以直接点击,让他们顺序执行通过点击这个按钮来完成
    begin
      if MutexHandle<>DWORD(-1) then
         CloseHandle(MutexHandle);
      //生成一个互斥对象
      MutexHandle := CreateMutex(nil, False, 'MyMutex');
       Button1.Click;
       Button2.Click;
       Button3.Click;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      MutexHandle :=DWORD(-1);
    end;end.
      

  6.   

    to LZ 和andyzhou1101(〆.赱 極端(http://lovelcy.blogcn.com))   
    如果按钮里有showmessage这样的我测试了下,不对!
      

  7.   

    如果按钮里有showmessage这样的我测试了下,不对!-------
    那按wudi_1982的做去
      

  8.   

    由于刚才在别处上网,没有测试。现在测试以后发现,wudi_1982(︻┳═一编码是一种享受) ( )的方法不知什么原因,并不能成功。