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 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环
  • ¥15 ADS已经下载好了,但是DAS下载不了,一直显示这两种情况,有什么办法吗,非常急!
  • ¥100 Excel 点击发送自动跳转outlook邮件