unit GetThread;
interface
uses
    Classes,Messages,SysUtils;
const
   My_Big     = $BD00;
   //My_Samll   = My_Big+1; type
     TMyBaseThread=class(TThread)
     private
        FNowValue : integer ;
     protected
       procedure Execute; override;       procedure ChangeValue();virtual ;   abstract;      // procedure Sort( ); virtual;
       procedure Sort( ); virtual; abstract;
       procedure SetValueToControl(var Message: TMessage);message my_big;
     public
       constructor Create(  );virtual ;
       destructor Destroy;virtual ;
     end;
     TMyBigThread =class (TMyBaseThread)
     private     protected
       procedure ChangeValue(); overload;     public
     end;
     TMySmallThread=class(TMyBaseThread)
     private
     protected
       procedure ChangeValue(); overload;     public
     end ;implementation
{ TMyBaseThread }constructor TMyBaseThread.Create( );
begin
     FreeOnTerminate := True;
     inherited Create(False);
end;destructor TMyBaseThread.Destroy;
beginend;procedure TMyBaseThread.Execute;
begin
  ChangeValue; //这里出错,为什么呀?end;procedure TMyBaseThread.SetValueToControl(var Message: TMessage);
beginend; { TMySmallThread }procedure TMySmallThread.ChangeValue;
beginend;{ TMyBigThread }procedure TMyBigThread.ChangeValue;
begin
end;end.