怎样在循环语句中给窗体变量(变量名的后几位是取循环变量的)赋值(100)

  • 主题发起人 主题发起人 denjin98
  • 开始时间 开始时间
D

denjin98

Unregistered / Unconfirmed
GUEST, unregistred user!
type TForm2 = class(TForm) QuickRep1: TQuickRep; QRLabel1: TQRLabel; QR01: TQRLabel; QR02: TQRLabel; QR03: TQRLabel; QR00: TQRLabel; QR04: TQRLabel; QR05: TQRLabel; QR13: TQRLabel; QR14: TQRLabel; QR15: TQRLabel; QR23: TQRLabel; QR24: TQRLabel; QR25: TQRLabel; QR06: TQRLabel; QR07: TQRLabel; QR08: TQRLabel; QR16: TQRLabel; QR17: TQRLabel; QR18: TQRLabel; QR26: TQRLabel; QR27: TQRLabel; QR28: TQRLabel; QR09: TQRLabel; QR37: TQRLabel; QR38: TQRLabel; QR19: TQRLabel; QR010: TQRLabel; QR011: TQRLabel; QR29: TQRLabel; QR110: TQRLabel; QR111: TQRLabel; QR10: TQRLabel; QR20: TQRLabel; QR30: TQRLabel; QR11: TQRLabel; QR21: TQRLabel; QR31: TQRLabel; QR12: TQRLabel; QR22: TQRLabel; QR32: TQRLabel; QR33: TQRLabel; QR34: TQRLabel; QR35: TQRLabel; QR36: TQRLabel; QR39: TQRLabel; QR210: TQRLabel; QR310: TQRLabel; QR211: TQRLabel; QR311: TQRLabel;......... for j:=0 to 11 do begin Form2.qr+str(k)+str(j).Caption:='固定资产'; Form2.QR+str(k+1)+str(j).Caption:='资产编号:'+ExcelApp.activesheet.cells.item[i+j,6].text+'日期:'+ExcelApp.activesheet.cells.item[i+j,14].text;Form2.QR+str(k+2)+str(j).Caption:='型号:'+ExcelApp.activesheet.cells.item[i+j,8].text+' '+ExcelApp.activesheet.cells.item[i+j,9].text;Form2.QR+str(k+3)+str(j).Caption:='地点:'+ExcelApp.activesheet.cells.item[i+j,20].text+ExcelApp.activesheet.cells.item[i+j,21].text; end; i:=i+12; Form2.QuickRep1.Preview; end;我是想用循环语句实现对FORM2的 QR00....QR311等48个TQRLabel变量赋值但报未定义的变量错,不知怎样用 Form2.qr+str(k)+str(j).Caption:='固定资产';(K:=0,J:=0时)来实现Form2.qr00.Caption:='固定资产';的赋值. 请指教!
 
查 FindComponent
 
for i:=1 to 21 do begin TLabel(self.FindComponent('Label'+inttostr(i))).Caption:=sx ; Tedit(self.FindComponent('Edit'+inttostr(i))).Text:= sx1; end ;
 
TLabel(self.FindComponent('Label'+inttostr(i))).Name 比较好
 
不能用循环语句,因为 Form2.qr+str(k)+str(j).Caption 的意思是:Form2.qr是一变量(有错),str(k)是一变量,.....,Form2.qr+str(k)+str(j).Caption 不等于 Form2.qr00.caption,所以只能老老实实地用 form2.qr00.caption 来赋值
 
你不就是想一性 全部删除 TQRLabel 中的值吗?用运行时信息 操作符号; is ,as ; 循环父容器 中包含的 控件; 用is 判断 用 as 转换; 就可以搞定啦; 你可以 看看 有关 运行时信息 的 知识,就知道了
 
for i:=0 to 311 do if Form2.FindComponent( 'QR'+Inttostr(I) ) <>nil then begin TQRLabel( Form2.FindComponent( 'QR'+Inttostr(I) ) ).Caption := ... end;
 
for i:=0 to Form1.ControlCount-1 do if Form1.Controls is TQRLabel then (Form1.Controls as TQRLabel).Caption:='';如果你要有特殊判断 可以家 if (Form1.Controls as TQRLabel).Name='**' then 特殊处理当然你 还有 其它 类型的 控件,也可以判断啊 结贴吧;
 
干吗不动态创建?
 
各位大虾还是没搞定:TQRLabel(Form2.FindComponent('QR'+inttostr(k)+inttostr(j)))).Caption:='固定资产',编译时无法通过,报UNDECLARED IDENTIFIER TQRLabel用TForm2(Form2.FindComponent('QR'+inttostr(k)+inttostr(j)))).Caption:='固定资产';编译时通过了,但不产生作用,例如当K:=0,J:=0 时form2.QR00.Caption的值应为'固定资产',但在程序内用str:=form2.QR00.Caption;检查STR的值不是'固定资产',而是初始的'QR00'
 
你没有引用TQRLabel所在单元。在当前form上放一个TQRLabel,就可以编译通过,然后把它删除。
 
主要采用了znxia和zkktom方法,参与者都给分了,重在参与,如觉分配不公,望请谅!
 

Similar threads

I
回复
0
查看
687
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部