比如我新建一个Ttimer控件。
 myTimer := TTimer.Create(Self);
 myTimer.name := '123';  //这里可以这样命名这个控件吗?
 ...
 myTimer.Enabled := true;
但在程序运行过程中,如果我想关掉这个定时器并,FREE它。如何通过它的名字找到这个控件并进行操作?

解决方案 »

  1.   

    myTimer.name := '123';  //这里可以这样命名这个控件吗?
    这句不行, 一定要遵守命名原则,(以英文字或下划线开始).
      

  2.   

    myTimer.Free;在initalization和finalization中分别使用就可以!
      

  3.   

    第一个要英文字母,myTimer.name := 'T123'FindComponent('T123').Free;
      

  4.   

    可以命名,代码中如下写:
    myTimer := TTimer.Create(Self);
    myTimer.name := '123'
    form1.insertcontrol(myTimer);--相当于注册控件
    ----查询代码
    var 
     i:integer;
     oTemp:TControl;
     timer:TTimer;
    begin
      ...
    ----------方案1
     for i:=0 to Form1.ControlCount -1 do
      begin
        oTemp := Form1.Controls[i];
        if oTemp.InheritsFrom(TTimer) then
        begin
          timer := oTemp as TTimer;
          if timer.name='123' then 你要进行处理的代码
        end
      end;
    ----------方案2
      oTemp := Form1.FindChildControl('123');
      if oTemp <> nil then
      begin
          timer := oTemp as TTimer;
          if timer.name='123' then 你要进行处理的代码
      end;
    end;