我搞不清楚那里错了,可运行后就出错!!帮帮修改一下!!!
procedure TForm1.Panel1Click(Sender: TObject);
var
pi:integer;
icoun,iid:integer;begin
   icoun:=strtoint(rightstr(tpanel(sender).Name,1));
   for pi:=1 to panel1.ControlCount-1 do
   begin
     if  panel1.Controls[pi].ClassName='TPanel'then
       begin
         iid:=strtoint(rightstr(tpanel(sender).Name,1));
         label1.Caption:=Tpanel(sender).ClassName+tpanel(sender).Name;
         plw:='listview'+inttostr(iid);
         pplw:=tlistview(plw);
         label2.Caption:=pplw.Name;//运行到这里出错!!
       end;
   end;end;

解决方案 »

  1.   

    plw := 'listview ' + inttostr(iid); 
    pplw := tlistview(plw); 
    只能这个代码写得有创意
    plw是string类型,实际上string和TListView类型都是指针,所以可以编译器让pplw := tlistview(plw);通过了
    但并不表示,编译后就会智能的判断出字符串所代表的实例
    不过让是pplw指向了plw的地址,而这个地址中存放的内容并不时ListView的实例,当访问的时候会出现异常。TComponent(pplw) := FindComponent(Format('ListView%d', [iid]));
    if Assigned(pplw) then
      Label2.Caption := pplw.Name
    else Label2.Caption := 'NULL';
      

  2.   

    谢谢zswang!
    俺拜你为师吧!您太有才了!!
    留下联系方式好不!我想尽快掌握dephi!!