下面是线程的代码:
此代码有和错误!
请问:我要在另外的窗口单击时调用调ReadRealInfo(x,y),该如何写?
{x,y的值不同!}调试成功后给分ReadRealInfo(x,y)
type
  suityou = class(TThread)
  private
   li_Term,li_Com:integer;
    { Private declarations }
  protected
    procedure Execute; override;
    procedure ReadRealInfo(iTerp,iCom:integer); virtual; abstract;
  public
    constructor Create(iTerm,iCom:integer);
  end;{number1}  TNum1 = class(suityou)
  protected
    procedure ReadRealInfo(iTerp,iCom:integer); override;
  end;{number2}  TNum2 = class(suityou)
  protected
    procedure ReadRealInfo(iTerp,iCom:integer); override;
  end;{ number3 }  TNum3= class(suityou)
  protected
    procedure ReadRealInfo(iTerp,iCom:integer); override;
  end;{ number4 }  TNum4= class(suityou)
  protected
    procedure ReadRealInfo(iTerp,iCom:integer); override;
  end;implementation
uses DDMSTYou;
{ 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 suityou.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }{ suityou }constructor suityou.Create(iTerm, iCom: integer);
begin
li_Term:=iTerm;
li_com:=iCom;
end;procedure suityou.Execute;
begin
  { Place thread code here }
  ReadRealInfo(li_Term,li_Com);
  inherited Create(False);
end;{ TNum1 }procedure TNum1.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)
end;{ TNum2 }procedure TNum2.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)
end;{ TNum3 }procedure TNum3.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)end;{ TNum4 }procedure TNum4.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)end;end.

解决方案 »

  1.   

    { suityou }constructor suityou.Create(iTerm, iCom: integer);
    begin
    li_Term:=iTerm;
    li_com:=iCom;
    end;procedure suityou.Execute;
    begin
      { Place thread code here }
      ReadRealInfo(li_Term,li_Com);
      inherited Create(False);
    end;改:
    { suityou }constructor suityou.Create(iTerm, iCom: integer);
    begin
    li_Term:=iTerm;
    li_com:=iCom;
    inherited Create(False);
    end;procedure suityou.Execute;
    begin
      { Place thread code here }
      ReadRealInfo(li_Term,li_Com);
    end;
      

  2.   

    谢谢MOJ现在我要在其他的窗口上的某一事件上来调用(假如:按扭Clicked事件)
    ReadRealInfo(li_Term,li_Com);其中Li_Term=1,2,3,4,li_Com=1
    代码如何写?在Delphiz中的DEMO中有一段是这么写的:
    procedure TThreadSortForm.StartBtnClick(Sender: TObject);
    begin
      RandomizeArrays;
      ThreadsRunning := 3;
      with TBubbleSort.Create(BubbleSortBox, BubbleSortArray) do
        OnTerminate := ThreadDone;
      with TSelectionSort.Create(SelectionSortBox, SelectionSortArray) do
        OnTerminate := ThreadDone;
      with TQuickSort.Create(QuickSortBox, QuickSortArray) do
        OnTerminate := ThreadDone;
        StartBtn.Enabled := False;
    end;
      

  3.   

    照着写嘛:
    //要用TNum1的ReadRealInfo()就:
      with TNum1.Create(1, 1) do
        OnTerminate := OnTNum1Done;//要用TNum2的ReadRealInfo()就:
      with TNum2.Create(2, 1) do
        OnTerminate := OnTNum2Done;//要用TNum3的ReadRealInfo()就:
      with TNum3.Create(3, 1) do
        OnTerminate := OnTNum3Done;//要用TNum4的ReadRealInfo()就:
      with TNum4.Create(4, 1) do
        OnTerminate := OnTNum4Done;其实我没有看明白你的第二问是问什么.如果说我回答的不是你要的,那么你再说清楚些.
      

  4.   

    就这么吧现在我要在其他的窗口上的某一事件上来调用(假如:按扭Clicked事件)
    ReadRealInfo(li_Term,li_Com);其中Li_Term=1,2,3,4,li_Com=1
    代码如何写?你可以看看我开始发出的代码!你就别照着我给出的例程。
    代码是你自己写的。
      

  5.   

    我越来越不清楚你要什么了,如果你要调用TNum1的ReadRealInfo()就
    写:TNum1.Create(1, 1);那么TNum1的ReadRealInfo(1, 1)就会执行啊,以下的类推.线程建立以后,如果 inherited Create(False);那么Excute就会自动执行,你的Excute调用了ReadRealInfo,所以你的线程建立以后就会自动执行ReadRealInfo.明白了吗?