解决方案 »

  1.   

    线程SendMessage通知主程序,由主程序来调用显示.
      

  2.   

    在线程中添加一个私有变量 如:FMsg: string,并添加一个过程,如
    procedure ShowMsg;
    begin
      ShowMessage(FMsg);
    end;用在显示提示的时候先把FMsg赋值,然后Synchronize(ShowMsg);即可正常显示
    如:FMsg := '发生异常';
        Synchronize(ShowMsg);
      

  3.   

    FigoZhu(谢慕安) 和 postren(小虫)方法不同,但道理一样,都是给主程序来调用。线程应该这样写地
      

  4.   

    同意小虫的,
    其实delphi在创建线程时都说明了的,
    当在线程里调用vcl或者clx的对象的方法和属性时要用Synchronize加函数的方式,
    那样大概表示同步的意思吧
    { Important: Methods and properties of objects in VCL or CLX can only be used
      in a method called using Synchronize, for example,      Synchronize(UpdateCaption);  and UpdateCaption could look like,    procedure Tqqqq.UpdateCaption;
        begin
          Form1.Caption := 'Updated in a thread';
        end; }