type
  tsb=record
  index:string;
  pl_sb:tspeedbutton;
  end;procedure tmain_f.sb_create(name:string;index:integer;cp:string;i:integer;sb:tsb;pt:tscrollbox;pd:tnotifyevent;sb_index:string);
begin
  sb.index:=sb_index;
  showmessage(sb_index+':'+sb.index);//显示出来的是:  xxx:  这是怎么回事?
  sb.pl_sb:=tspeedbutton.create(pl_1);
  sb.pl_sb.Name:=name+inttostr(index+i);
  sb.pl_sb.Parent:=pt;
  sb.pl_sb.caption:=cp;
  sb.pl_sb.top:=index*20+(index-1)*90+i*110;
  sb.pl_sb.left:=20;
  sb.pl_sb.height:=90;
  sb.pl_sb.width:=sb.pl_sb.height;
  sb.pl_sb.GroupIndex:=1;
  sb.pl_sb.AllowAllUp:=true;
  sb.pl_sb.Flat:=true;
  sb.pl_sb.OnClick:=pd;
end;

解决方案 »

  1.   

    你传进来的sb_index的值是空串吧。
      

  2.   

    恩~~反正我赋不进去值
    我申明的是sb_bt:array of tsb;
    我想应该没关系吧
      

  3.   

    看一下传进来的sb_index是否有问题,不可能说是结构体没法赋值的。
      

  4.   

    showmessage(sb_index+':'+sb.index);的显示内容在:号前是有的,可是:后则为空~~!我这就搞不懂了
      

  5.   

    1楼~不是空串~~我用showmessage查看过,注释写的很清楚
      

  6.   


    procedure tmain_f.sb_create(name:string;index:integer;cp:string;i:integer;pt:tscrollbox;pd:tnotifyevent;sb_index:string);
    var
      sb:tsb;  //在这里定义;
    begin
      sb.index:=sb_index;
      showmessage(sb_index+':'+sb.index);//显示出来的是:  xxx:  这是怎么回事?
      sb.pl_sb:=tspeedbutton.create(pl_1);
      sb.pl_sb.Name:=name+inttostr(index+i);
      sb.pl_sb.Parent:=pt;
      sb.pl_sb.caption:=cp;
      sb.pl_sb.top:=index*20+(index-1)*90+i*110;
      sb.pl_sb.left:=20;
      sb.pl_sb.height:=90;
      sb.pl_sb.width:=sb.pl_sb.height;
      sb.pl_sb.GroupIndex:=1;
      sb.pl_sb.AllowAllUp:=true;
      sb.pl_sb.Flat:=true;
      sb.pl_sb.OnClick:=pd;
    end;
    这样试试,
    你传的很多参数好像没用嘛
      

  7.   

    在过程为已经setlength了,否则回出现内存地址错误,可是现在没出现,就只是不能赋值
      

  8.   

    要么你吧sb_index的内容存在hint里