gjzneng 2018-01-22 10:12 采纳率: 50%
浏览 1323
已采纳

delphi xe10,控件可以根据名称下标动态调用吗?

例如:需要对edit1.text、edit2.text......edit100.text赋值。能不能用类似以下形式:
for I:=1 to 100 do
edit(I).text:='.......';

例如:

aa[1]:='123';

aa[2]:='中国';
...
aa[100]:='洛杉矶';

for I:=1 to 100 do
edit(I).text:=aa[i];

CaoZhy: 你的方法可以对edit赋值,但不能将aa[25]赋值给edit25,而是将aa[25]赋值给了某一个edit。这不能满足程序设计的要求。
对这个问题的一个解是:先判断搜索到的edit的名字是不是edit25,然后再赋值。
有没有更好的方案?
  • 写回答

3条回答 默认 最新

  • 堕落恶魔_Delphi 2018-01-23 01:43
    关注

    首先 根据edit(i)方式来访问控件是不可能的, 你的需求只是为了懒得写代码 嘿嘿........
    可以使用其他方式(FindComponent)来达到目的

     var
      i: integer;
      nEdt: TComponent;
    begin
      for i := 1 to 100 do
      begin
        nEdt := FindComponent('edit' + IntToStr(i));
        if nEdt = nil then
          Continue;
        if not (nEdt is TEdit) then
          Continue;
        TEdit(nEdt).Text := aa[i];
      end;
    end;
    
    

    另外, 个人建议, 类似你这种100个edit的需求:
    1.不应该在界面里扔那么多edit给用户, 很乱, 如果真有这么多输入框应该分页
    2.界面应该是少量, 有明确对象的输入框, 每个输入框都需要对应的值, 这时应该每个输入框有自己的可维护名称(比如 edtCity)
    3.如果真的需要很多并且不能预知值得输入框, 建议动态创建, 这样在创建的时候就可以使其和一个了列表对应上, 也就实现你的需求了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题