for i :=1 to 31 do
      TDBEdit(findcomponent('DBEdit' + inttostr(i))).Enabled :=True;
我的正常!

解决方案 »

  1.   

    for i := 2 to 13 do
      begin
        tmp:='DBEdit'+inttostr(i);
        if Assigned(FindComponent(tmp)) then 
          begin
            (FindComponent(tmp) as TDbedit).Enabled  := false;
            (findcomponent(tmp) as TDBedit).Color := clmenu;
          end
      end;
      

  2.   

    var
      I: Integer;
      vComponent: TComponent;
    begin
      for I := 2 to 13 do begin
        vComponent := FindComponent(Format('DBEdit%d', [I])); //不一定能找到
        if Assigned(vComponent) then begin
          TDBEdit(vComponent).Enabled := False;
          TDBEdit(vComponent).Color := clMenu;
        end
      end;
    end;
      

  3.   

    以上的大哥 完整的代码如下
    procedure Tqtjd_form.Button9Click(Sender: TObject);
    var i :integer;
        tmp:string;
    begin
    Application.CreateForm(Trzdj_Form, rzdj_Form);
    ///列出操作代码
     rzdj_form.Caption := '续住';
     rzdj_form.Panel1.Visible := true;
     for i := 2 to 13 do
       begin
         tmp:='DBEdit'+inttostr(i);
        //(FindComponent(tmp) as TDbedit).Enabled  := false;
        //(findcomponent(tmp) as TDBedit).Color := clmenu;
        //TDBEdit(findcomponent('DBEdit' + inttostr(i))).Color  :=clmenu;
         if Assigned(FindComponent(tmp)) then
          begin
            (FindComponent(tmp) as TDbedit).Enabled  := false;
            (findcomponent(tmp) as TDBedit).Color := clmenu;
          end
       end;////结束代码完成
    dm.qtjd_table.Append ;
    rzdj_form.showmodal ;
    end;
      

  4.   

    好像要指明在哪儿Find,那么用rzdj_Form.FindComponent试试。
      

  5.   

    按照zswang的不行吗?
      大家帮我一个忙好不好,我已不能再推了
           http://www.csdn.net/expert/topic/483/483983.shtm
      

  6.   


    关键是你的  TDbedit在哪Create的把Form的定义代码打出来
      

  7.   

    请用[TDbedit所在的Form].FindComponent(tmp) 
      

  8.   

    还是不行 报告无效的typecase
      

  9.   

    能不能给个完整的代码啊,从你现在给的代码来看,指定FIND范围后应该没有问题的。
      

  10.   

    把Tqtjd_form的定义代码打出来
      

  11.   

    我的程序的Tqtjd_form是在调用的时候才创建的
    unit Unit104;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons, ExtCtrls, DBCtrls, ComCtrls, Mask,Unit3,db,
      abcdlg;type
      Trzdj_Form = class(TForm)
        label1: TLabel;
        DBEdit1: TDBEdit;
        Label2: TLabel;
        DBEdit2: TDBEdit;
        Label3: TLabel;
        DateTimePicker1: TDateTimePicker;
        Label4: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        Label7: TLabel;
        Label8: TLabel;
        Label9: TLabel;
        Label10: TLabel;
        DBEdit3: TDBEdit;
        DBEdit8: TDBEdit;
        DBComboBox2: TDBComboBox;
        DBComboBox3: TDBComboBox;
        DBComboBox4: TDBComboBox;
        Label11: TLabel;
        Label12: TLabel;
        DBEdit4: TDBEdit;
        DBComboBox5: TDBComboBox;
        DBComboBox6: TDBComboBox;
        Label13: TLabel;
        Label14: TLabel;
        Label15: TLabel;
        DBEdit5: TDBEdit;
        Label16: TLabel;
        Label17: TLabel;
        Label18: TLabel;
        DBEdit6: TDBEdit;
        DBEdit7: TDBEdit;
        DBEdit9: TDBEdit;
        Label19: TLabel;
        Label20: TLabel;
        Label21: TLabel;
        Label22: TLabel;
        Label23: TLabel;
        DBEdit10: TDBEdit;
        DBEdit11: TDBEdit;
        DBEdit12: TDBEdit;
        DateTimePicker2: TDateTimePicker;
        Label24: TLabel;
        Label25: TLabel;
        Label26: TLabel;
        Label27: TLabel;
        DBEdit13: TDBEdit;
        DBComboBox7: TDBComboBox;
        DBEdit14: TDBEdit;
        Label28: TLabel;
        DBComboBox8: TDBComboBox;
        Label29: TLabel;
        DBComboBox9: TDBComboBox;
        Label30: TLabel;
        DateTimePicker4: TDateTimePicker;
        Label31: TLabel;
        DBComboBox10: TDBComboBox;
        Label32: TLabel;
        DBEdit15: TDBEdit;
        BitBtn1: TBitBtn;
        BitBtn2: TBitBtn;
        BitBtn3: TBitBtn;
        BitBtn5: TBitBtn;
        BitBtn6: TBitBtn;
        Bevel1: TBevel;
        Bevel2: TBevel;
        DBComboBox11: TDBComboBox;
        Shape1: TShape;
        DBRadioGroup1: TDBRadioGroup;
        ComboBox1: TComboBox;
        DBEdit16: TDBEdit;
        DBEdit17: TDBEdit;
        abcMessageDlg1: TabcMessageDlg;
        BitBtn7: TBitBtn;
        Bevel3: TBevel;
        Panel1: TPanel;
        Label33: TLabel;
        Edit1: TEdit;
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormActivate(Sender: TObject);
        procedure BitBtn5Click(Sender: TObject);
        procedure BitBtn6Click(Sender: TObject);
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        procedure BitBtn1Click(Sender: TObject);  private
        { Private declarations }
      public
         function dhsc:string;  end;var
      rzdj_Form: Trzdj_Form;
      ji:integer;
    implementationuses Unit102;{$R *.dfm}procedure Trzdj_Form.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    action:=cafree;
    end;procedure Trzdj_Form.FormActivate(Sender: TObject);
    var  i,iC,iL :integer;
          sou,dec :string;
    begin
    if dm.qtjd_table.State = dsInsert then
    begin
    sou:=inttostr(dm.qtjd_table.recordcount);
    i := strlen(pchar(trim(sou)));if i<8 then
     begin
        iC:= 8 - i ;
        for iL:= 1 to iC do
          begin
            sou :='0'+sou;
          end;
     end;
    dec := 'RZ'+sou ;
    DBedit1.Text := dec;
    Dbedit16.Text := timetostr(time);datetimepicker2.Date := date;
    datetimepicker4.Date := date+1;
    end;
    end;procedure Trzdj_Form.BitBtn5Click(Sender: TObject);
    var i :string ;
    begin
    dm.qtjd_tablecsrq.asdatetime := datetimepicker1.DateTime ;
    dm.qtjd_tablerzrq.AsDateTime := datetimepicker2.datetime;
    dm.qtjd_tabletfrq.AsDateTime := datetimepicker4.datetime ;
    dm.qtjd_tablen.Asinteger := strtoint(copy(datetostr(datetimepicker2.Date),0,4));
    i :=copy(datetostr(datetimepicker2.Date),6,1);
    dm.qtjd_tabley.AsInteger := strtoint(formatdatetime('m',datetimepicker2.datetime));
    dm.qtjd_table.Post ;
    bitbtn5.Enabled := false;
    end;procedure Trzdj_Form.BitBtn6Click(Sender: TObject);
    begin
    close;
    end;procedure Trzdj_Form.FormCloseQuery(Sender: TObject;
      var CanClose: Boolean);
    begin
    if dm.qtjd_table.State <>dsBrowse then
      begin
         abcmessagedlg1.Execute ;
         if abcmessagedlg1.Result = mryes then
           begin
             dm.qtjd_tablecsrq.asdatetime := datetimepicker1.date;
             dm.qtjd_tablerzrq.AsDateTime := datetimepicker2.date;
             dm.qtjd_tabletfrq.AsDateTime := datetimepicker4.Date ;
              dm.qtjd_table.Post ;
              canclose:= true;
           end;
         if abcmessagedlg1.Result = mrno then
           begin
             dm.qtjd_table.Cancel;
             canclose := true;
           end;
          if abcmessagedlg1.Result = mrcancel then
             canclose:= false;
               end;
    end;procedure Trzdj_Form.BitBtn1Click(Sender: TObject);
    var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y:string;
    beginif bitbtn5.Enabled = false then
    begin
     ////将数据写入变量
      a:=trim(dbcombobox2.Text);
      b:=trim(dbedit2.text);
      c:=trim(dbcombobox3.text);
      d:=trim(dbedit8.Text);
      e:=trim(dbcombobox4.Text);
      f:=trim(dbcombobox6.Text);
      g:=trim(dbcombobox11.Text);
      h:=trim(dbedit4.Text);
      i:=trim(dbedit17.Text);
      j:=trim(dbcombobox5.Text);
      k:=trim(dbedit5.Text);
      l:=trim(dbedit6.Text);
      m:=trim(dbedit10.Text);
      n:=trim(dbedit13.Text);
      o:=trim(dbcombobox8.Text);
      p:=trim(dbedit7.Text);
      q:=trim(dbedit11.Text);
      r:=trim(dbcombobox7.Text);
      s:=trim(dbcombobox9.Text);
      t:=trim(dbedit9.Text);
      u:=trim(dbedit16.Text);
      v:=trim(dbedit12.Text);
      w:=trim(dbedit14.Text);
      x:=trim(dbcombobox10.Text);
      y:=trim(dbedit15.Text);
     ////
     dm.qtjd_table.Append ;
     dbedit1.Text := dhsc;
     ////将变量写入数据 dbcombobox2.Text:=a;
      dbedit2.text:=b;
      dbcombobox3.text:=c;
     dbedit8.Text :=d;
      dbcombobox4.Text:= e;
      dbcombobox6.Text:=f;
      dbcombobox11.Text:=g;
      dbedit4.Text:=h;
      dbedit17.Text:=i;
      dbcombobox5.Text:=j;
      dbedit5.Text:=k;
      dbedit6.Text:= l;
      dbedit10.Text:=m;
      dbedit13.Text:=n;
      dbcombobox8.Text:=o;
      dbedit7.Text:=p;
      dbedit11.Text:=q;
      dbcombobox7.Text:=r;
      dbcombobox9.Text:=s;
      dbedit9.Text:=t;
      dbedit16.Text:=u;
      dbedit12.Text:=v;
      dbedit14.Text:=w;
      dbcombobox10.Text:=x;
      dbedit15.Text:=y;
       ////
    end;
    bitbtn5.Enabled :=true;
    end;function Trzdj_Form.dhsc: string;
    var  i,iC,iL :integer;
          sou,dec :string;
    begin
    if dm.qtjd_table.State = dsInsert then
    begin
    sou:=inttostr(dm.qtjd_table.recordcount);
    i := strlen(pchar(trim(sou)));if i<8 then
     begin
        iC:= 8 - i ;
        for iL:= 1 to iC do
          begin
            sou :='0'+sou;
          end;
     end;
    dec := 'RZ'+sou ;
    result := dec;
    end;
    end;end.
      

  12.   

    你要指定FindComponent的范围
    请用[TDbedit所在的Form].FindComponent(tmp) 
      

  13.   

    你的程序在Tqtjd_form上 默认范围是Tqtjd_form之内,而你的TDbedit在Tqtjd_form上
      

  14.   

    在Tqtjd_form上还没引用DBCtrls也就不认识TDbedit类,这就是‘无效的typecase ’