unit zy_thread;
interface
uses
  Classes,sjcs;type
  Tzythread = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;implementation
uses sjcsu;procedure Tzythread.Execute;
begin
  sjcsf.statusbar1.Panels[0].Text :='00000';
end;
end.
为什么我调用上面这个线程时,sjcsf窗体中的statusbar1状态栏无任何显示呢?
线程调用的代码为:
          xc:=Tzythread.Create(false);
          xc.Suspended :=false;
是调用的问题吗?
谢谢大家!!!

解决方案 »

  1.   

    线程中调用VCL组件的方法最好使用Synchronize
    自己检查自己的代码吧
      

  2.   

    xc:=Tzythread.Create(false);
    支持使用同步
      

  3.   

    xc.Suspended :=false;
     去掉,其它没什么问题!可加
      sjcsf.statusbar1.refresh;
      

  4.   

    xc:=Tzythread.Create(false);
    只要上面这句
      

  5.   

    procedure Tzythread.Execute;
    begin
      with sjcsf.StatusBar1 do 
      begin
        try
          Canvas.Lock;
          Panels[0].Text := '00000';
        finally
          Canvas.Unlock;
        end;
      end;
    end;调用:
    var
      xc: TzyThread;
    begin
      xc := TzyThread.Create(True);
      xc.Terminate;
      xc.Resume;
      xc.WaitFor;
      xc.Free;
    end;
      

  6.   

    昏,调用:
    var
      TempThread: TzyThread;
    begin
      TempThread := TzyThread.Create(True);
      TempThread.FreeOnTerminate := True;
      TempThread.Resume;
    end;
      

  7.   

    还不行呀?
        try
          Canvas.Lock;
          Panels[0].Text := '00000';
        finally
          Canvas.Unlock;
        end;
    每行代码都执行了,是不是只执行
          Canvas.Lock;
          Panels[0].Text := '00000';
    才对呢?
    赶快帮帮忙吧?!
      

  8.   

    在你的线程当中,将statubar做为一个形参传给线程,主要原因是在线程对象之外调用另外的一个线程的原因
      

  9.   

    sjcsf.statusbar1.Panels[0].Text :='00000';中Panels[0]存在不?不然也不会显示,也不会报错!