如果你的TDBEdit变量为DBEdit1,你的字符串变量为StrDBEdit1,内容为'DBEdit1',则用
  TDBEdit(FindComponemt(StrDBEdit1)). ....就可以做你要做的事情.

解决方案 »

  1.   

    省省吧,vcshcn(黑色的星星) 说得很清楚了,他们属于不同的内存分配对象,怎能相互转换
      

  2.   

    if TForm1.components[i] := TEdit then
      components[i].name := 'string';
      

  3.   


    procedure TDictDataModule.WriteToEachDataSet;
    var
      TableName: String;
      ColumnName: String;
      DataSetName: String;
      DataSetComp: TComponent;
      I: Integer;
    begin  with cdsAllDict do
      begin
        First;
        while not Eof do
        begin
          TableName := UpperCase(FieldByName('F_CODETBL_TABLENAME').AsString);
          TableName := Copy(TableName, 1, 1) +
                    LowerCase(Copy(TableName, 2, Length(TableName) -1));
          ColumnName := UpperCase(FieldByName('F_CODETBL_COLNAME').AsString);
          ColumnName := Copy(ColumnName, 1, 1) +
                    LowerCase(Copy(ColumnName, 2, Length(ColumnName) -1));
          if 'cds' + TableName + ColumnName <> DataSetName then
          begin
    ------------------------------------------------------------------
            DataSetName := 'cds' + TableName + ColumnName;
            DataSetComp := Self.FindComponent(DataSetName);
    -------------------------------------------------------------------
            if not (DataSetComp is TClientDataSet) then
            begin
              DataSetName := '';
              Next;
              Continue;
            end; {if DictDataSet}        if not (DataSetComp as TClientDataSet).Active then
              (DataSetComp as TClientDataSet).Data := cdsBaseDict.Data
            else
              (DataSetComp as TClientDataSet).EmptyDataSet;      end; {for DataSetName}      (DataSetComp as TClientDataSet).Append;
          for I := Low(PubEachDictFields) to High(PubEachDictFields) do
          begin
            (DataSetComp as TClientDataSet).FieldByName(PubEachDictFields[I]).AsString :=
                    FieldByName(PubEachDictFields[I]).AsString;
          end; {for I}
          (DataSetComp as TClientDataSet).Post;      Next;
        end; {while}
      end; {with}
    end;