Delphi7中的动态组件创建

4

我需要动态创建编辑框,使用循环(循环变量j)进行创建。前五个组件创建成功,但在第六个组件中,数组显示为nil(在调试过程中),即实际上没有创建任何内容。然后第七个和第八个组件成功创建,但第九个没有。我已经声明了变量,例如 -

      sud,eud,fud,a,e,c,d,na,st1,st2,citye,statee,pinne,cn,cr,cb,ca: array [0..9] of TEdit;
      crr,vcl: array [0..9] of TEdit;

在那个循环中,我声明的所有其他组件都已成功创建。

      crr[j+3]:=tEdit.Create(coregroup[i]);
      crr[j+3].Parent:=coregroup[i];
      crr[j+3].Top:= 77;
      crr[j+3].Left:=83+(j*57);
      crr[j+3].Width:=17;

我希望你能够帮助我翻译与IT技术有关的内容。以下是需要翻译的内容:

最近两天,我一直在处理同样的代码问题。如果需要更多的解释,我可以提供给你。

实际代码如下:

sud,eud,fud,a,e,c,d,na,st1,st2,citye,statee,pinne,cn,cr,cb,ca: array [0..9] of TEdit;
  crr,vcl: array [0..9] of TEdit;
  dud,leud,lfud,b,f,g,h,nal,st1l,st2l,cityel,stateel,pinnel,dt,cl,crl,cbl,cal,vce: array [0..9] of TLabel;
  count,ppointer:integer;
  rcaldt: array[0..5] of TDateTimePicker;
  coregroup:array of TGroupBox;



var
  i,j,kk,aa,x:integer;
  divv:array[0..3] of Tlabel;
  u,m,k:integer;
 begin
   k:=0;
   m:=0;
 //kk:=groupbox11.ControlCount-1;

 SetLength(coregroup,5);


 for i:=0 to count-1 do
  begin
   coregroup[i]:= tGroupbox.Create(groupbox11);
   coregroup[i].Parent:=groupbox11;
   coregroup[i].SetBounds(8+(i*223),140,x,170);


  if ctvt.ItemIndex=0 then
   coregroup[i].Caption:='C T'+ IntToStr((aa*i)+1)
  else
   coregroup[i].Caption:='V T'+ IntToStr((aa*i)+1);

   cl[0]:= tLabel.Create(coregroup[i]);
   cl[0].Parent:=coregroup[i];
   cl[0].Top:= 20;
   cl[0].Left:=8;
   cl[0].Caption:= 'CORE';
   cl[0].Font.Style :=  cl[0].Font.Style + [fsBold];
   cbl[0]:= tLabel.Create(coregroup[i]);
   cbl[0].Parent:=coregroup[i];
   cbl[0].Top:= 50;
   cbl[0].Left:=8;
   cbl[0].Caption:= 'BURDEN';
   cbl[0].Font.Style :=  cbl[0].Font.Style + [fsBold];
   crl[0]:= tLabel.Create(coregroup[i]);
   crl[0].Parent:=coregroup[i];
   crl[0].Top:= 80;
   crl[0].Left:=8;
   crl[0].Caption:= 'RATIO';
   crl[0].Font.Style :=  crl[0].Font.Style + [fsBold];
   cal[0]:= tLabel.Create(coregroup[i]);
   cal[0].Parent:=coregroup[i];
   cal[0].Top:= 110;
   cal[0].Left:=8;
   cal[0].Caption:= 'ACLASS';                              //cr,cb,ca
   cal[0].Font.Style :=  cal[0].Font.Style + [fsBold];
   vce[0]:= tLabel.Create(coregroup[i]);
   vce[0].Parent:=coregroup[i];
   vce[0].Top:= 140;
   vce[0].Left:=8;
   vce[0].Caption:= 'VCLASS';                              //cr,cb,ca
   vce[0].Font.Style :=  cal[0].Font.Style + [fsBold];

 for j:=0 to ((StrToInt(ncorct.Text))-1) do
  begin
   if cn[j]=nil then
    begin
     cn[j]:=tEdit.Create(coregroup[i]);
     cn[j].Parent:=coregroup[i];
     cn[j].Top:= 17;
     cn[j].Left:=52+(j*57);
     cn[j].Width:=50;
     cb[j]:=tEdit.Create(coregroup[i]);
     cb[j].Parent:=coregroup[i];
     cb[j].Top:= 47;
     cb[j].Left:=71+(j*57);
     cb[j].Width:=30;
     cr[j]:=tEdit.Create(coregroup[i]);
     cr[j].Parent:=coregroup[i];
     cr[j].Top:= 77;
     cr[j].Left:=56+(j*57);
     cr[j].Width:=17;

    ca[j]:=tEdit.Create(coregroup[i]);
    ca[j].Parent:=coregroup[i];
    ca[j].Top:= 107;
    ca[j].Left:=61+(j*60);
    ca[j].Width:=35;

    divv[j]:=tLabel.Create(coregroup[i]);
    divv[j].Parent:=coregroup[i] ;
    divv[j].Top:=80;
    divv[j].Left:=74+(j*57);
    divv[j].Caption:='/';

    crr[j]:=tEdit.Create(coregroup[i]);
    crr[j].Parent:=coregroup[i];
    crr[j].Top:= 77;
    crr[j].Left:=83+(j*57);
    crr[j].Width:=17;


   vcl[j]:=tEdit.Create(coregroup[i]);
   vcl[j].Parent:=coregroup[i];
   vcl[j].Top:= 137;
   vcl[j].Left:=61+(j*60);
   vcl[j].Width:=35;
 end
 else

 if cn[j+3]=nil then
  begin
  cn[j+3]:=tEdit.Create(coregroup[i]);
  cn[j+3].Parent:=coregroup[i];
  cn[j+3].Top:= 17;
  cn[j+3].Left:=52+(j*57);
  cn[j+3].Width:=50;
  cb[j+3]:=tEdit.Create(coregroup[i]);
  cb[j+3].Parent:=coregroup[i];
  cb[j+3].Top:= 47;
  cb[j+3].Left:=71+(j*57);
  cb[j+3].Width:=30;
  cr[j+3]:=tEdit.Create(coregroup[i]);
  cr[j+3].Parent:=coregroup[i];
  cr[j+3].Top:= 77;
  cr[j+3].Left:=56+(j*57);
  cr[j+3].Width:=17;

  ca[j+3]:=tEdit.Create(coregroup[i]);
  ca[j+3].Parent:=coregroup[i];
  ca[j+3].Top:= 107;
  ca[j+3].Left:=61+(j*60);
  ca[j+3].Width:=35;

  divv[j+3]:=tLabel.Create(coregroup[i]);
  divv[j+3].Parent:=coregroup[i] ;
  divv[j+3].Top:=80;
  divv[j+3].Left:=74+(j*57);
  divv[j+3].Caption:='/';

  ***crr[j+3]:=tEdit.Create(coregroup[i]);
  crr[j+3].Parent:=coregroup[i];
  crr[j+3].Top:= 77;
  crr[j+3].Left:=83+(j*57);
  crr[j+3].Width:=17;***


  vcl[j+3]:=tEdit.Create(coregroup[i]);
  vcl[j+3].Parent:=coregroup[i];
  vcl[j+3].Top:= 137;
  vcl[j+3].Left:=61+(j*60);
  vcl[j+3].Width:=35;

 end
  else
   begin
    cn[j+6]:=tEdit.Create(coregroup[i]);
    cn[j+6].Parent:=coregroup[i];
    cn[j+6].Top:= 17;
    cn[j+6].Left:=52+(j*57);
    cn[j+6].Width:=50;
    cb[j+6]:=tEdit.Create(coregroup[i]);
    cb[j+6].Parent:=coregroup[i];
    cb[j+6].Top:= 47;
    cb[j+6].Left:=71+(j*57);
    cb[j+6].Width:=30;
    cr[j+6]:=tEdit.Create(coregroup[i]);
    cr[j+6].Parent:=coregroup[i];
    cr[j+6].Top:= 77;
    cr[j+6].Left:=56+(j*57);
    cr[j+6].Width:=17;

    ca[j+6]:=tEdit.Create(coregroup[i]);
    ca[j+6].Parent:=coregroup[i];
    ca[j+6].Top:= 107;
    ca[j+6].Left:=61+(j*60);
    ca[j+6].Width:=35;

    divv[j+3]:=tLabel.Create(coregroup[i]);
    divv[j+3].Parent:=coregroup[i] ;
    divv[j+3].Top:=80;
    divv[j+3].Left:=74+(j*57);
    divv[j+3].Caption:='/';

    crr[j+6]:=tEdit.Create(coregroup[i]);
    crr[j+6].Parent:=coregroup[i];
    crr[j+6].Top:= 77;
    crr[j+6].Left:=83+(j*57);
    crr[j+6].Width:=17;


    vcl[j+6]:=tEdit.Create(coregroup[i]);
    vcl[j+6].Parent:=coregroup[i];
    vcl[j+6].Top:= 137;
    vcl[j+6].Left:=61+(j*60);
    vcl[j+6].Width:=35;

    end;
   end;
  end;
 end
 else
  begin

   one.Enabled:=false;

   onem.Enabled:=false;
  end;
 end;

什么是coregroup,它来自哪里?你能展示定义i和j的循环吗? - Millie Smith
2
你应该展示你的代码。 - valex
请展示实际的循环。 - Remy Lebeau
代码已更新,请查看。 - Prateek Shukla
1
这是很多无关的代码。请将其简化到仅包含演示实际问题所需的最少代码。 - Remy Lebeau
1个回答

0

你和 nil 进行比较

if cn[j]=nil then

但是你有没有将数组变量CN初始化为nil呢? 我没有看到这个。 我想这就是问题所在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接