请问下面代码创建一个线程有什么错误码?编译不过,报错:[DCC Error] Unit1.pas(109): E2036 Variable requiredprocedure TForm2.IsTradingTimeTimerTimer(Sender: TObject);
begin
    IsTradingDayListView1.Items.Add.Caption := 'Hello';
    IsTradingDayListView1.Items.Add.SubItems[0] := 'World';
    IsTradingDayListView1.Items.Add.SubItems[1] := 'Hehe';
end;procedure TForm2.MulThreadIsTradingDayClick(Sender: TObject);
var
  ThreadID: DWORD;
  hThreadHandle: THandle;
begin
  hThreadHandle := CreateThread(nil,0,@IsTradingTimeTimerTimer,nil,0,ThreadID);
end;

解决方案 »

  1.   


    procedure my;
    beginend;procedure TForm1.DBGrid1CellClick(Column: TColumn);
    var
      ThreadID: DWORD;
      hThreadHandle: THandle;
    begin
      hThreadHandle := CreateThread(nil,0,@my,nil,0,ThreadID);
    end;
      

  2.   

    procedure TForm2.IsTradingTimeTimerTimer(Sender: TObject);线程不能是某个类的方法,应该改成procedure IsTradingTimeTimerTimer(Sender: TObject); stdcall;
      

  3.   

    还要改一下是, 一般是FUN,参数为Pointer,反回值为 dword, stdcall调用, 如下面function MyThreadFun(p: Pointer): DWORD; stdcall;
      

  4.   

    IsTradingTimeTimerTimer应该是全局的!
    而不应该是类方法
      

  5.   

    IsTradingTimeTimerTimer应该是全局的!
    而不应该是类方法
      

  6.   

    试试。function IsTradingTime(p: Pointer): integer; stdcall;
    begin
      result := 0;
      Form2.IsTradingDayListView1.Items.Add.Caption := 'Hello';
      Form2.IsTradingDayListView1.Items.Add.SubItems[0] := 'World';
      Form2.IsTradingDayListView1.Items.Add.SubItems[1] := 'Hehe';
    end;procedure TForm2.MulThreadIsTradingDayClick(Sender: TObject);
    var
      ThreadID: DWORD;
      hThreadHandle: THandle;
    begin
      hThreadHandle := CreateThread(nil,0,@IsTradingTime,nil,0,ThreadID);
    end;
      

  7.   


    我按照你的办法,但是这样往ListView里面添加数据的时候,程序会崩溃掉,报错:
    List index out of bound(0),请问怎样才能正确往里面添加数据呢? 
      

  8.   

    把ITEM定为全局变量ITEM:= Form2.IsTradingDayListView1.Items.Add;
    ITEM.CAPTCION:= ...
      

  9.   


    那是因为你的LV控件操作方法不对function IsTradingTime(p: Pointer): integer; stdcall;
    begin
      result := 0;
      with Form1.IsTradingDayListView1.Items.Add do
      begin
        Caption := 'Hello';
        SubItems.Add('World');
        SubItems.Add('hehe');
      end;
    end;procedure TForm1.MulThreadIsTradingDayClick(Sender: TObject);
    var
      ThreadID: DWORD;
      hThreadHandle: THandle;
    begin
      hThreadHandle := CreateThread(nil,0,@IsTradingTime,nil,0,ThreadID);
    end;