control的name不知道,用control[1]是不是可以代替,可怎么取得这个control的text值(假如这个control是tedit)

解决方案 »

  1.   

    for i=0 to controlconut-1 do
    begin
     if controls[i] is Tedit then
     begin
       Memo1.lines.add(TEdit(Controls[i]).Text)
     end;
    end;
    这样就把所有的edit的text加到memo里面去了
      

  2.   

    var
    i:integer;
    begin
      for i:=0 to self.Panel1.ControlCount-1  do begin
         if self.Panel1.Controls[i] is TEdit then
         showmessage((self.Panel1.Controls[i] as TEdit).Text);
      end;
    end;
      

  3.   

    你可以重载一系列的方法啊
    function getText(ed: TEdit): String; overload;
    begin
      Result := ed.text;
    end;function getText(me: TMemo): String; overload;
    begin
      Result := me.line.text;
    end;function getText(date: TDatetimepicker): string; overload;
    begin
      Result := Dataformat("yyyymmdd",data.date);
    end;然后在循环的时候
    if control[i] is TEdit then text := getText(TEdit(control[i]))
    else if ....
    else if ...
      

  4.   

    type
      TTextObject = class(TControl);procedure TForm1.Button1Click(Sender: TObject);
    var
      Obj: TObject;
      i: Integer;
    begin
      for i := 0 to Panel1.ControlCount - 1 do
      begin
        Obj := Panel1.Controls[i];
        ShowMessage(TTextObject(Obj).Text);
      end;
    end;
      

  5.   

    补充:如果不想得到无用的Text,可加一个条件,如:
      for i := 0 to Panel1.ControlCount - 1 do
        if Panel1.Controls[i] is TWinControl then
        begin
          Obj := Panel1.Controls[i];
          ShowMessage(TTextObject(Obj).Text);
        end;