var
  Info : TForm;
Info是全局的。
procedure TTImg.FormCreate(Sender: TObject);
begin
  Info := TInfoDlg.Create(nil);
end;然后在procedure TTImg.DBGrid1CellClick(Column: TColumn);
begin
  //with TInfoDlg.Create(self) do
  with Info do
  begin
    if DBGrid1.DataSource.DataSet.RecordCount > 0 then
    begin
      EditImgId.Text := DBGrid1.DataSource.DataSet.FieldByName('FilNam').AsString;
    end;
    ShowModal;
  end;
end;报 EditImgIdw未定义。。这个EditImgId是在TInfoDlg这个窗体上的控件。
请教为什么找不到。

解决方案 »

  1.   

    把DBGrid1.DataSource.DataSet.FieldByName('FilNam').AsString的值
    放到全局变量里
      

  2.   

    先去看看TInfoDlg这个窗体的unit名称是什么,假设名称就是:InfoDlg,那么在TImg窗体的unit中的{$R *.dfm}之上加入uses  InfoDlg;最后你的代码中,把EditImgId.Text 改成 TInfoDlg.EditImgId.Text 就可以了
      

  3.   

    var
      Info : TForm;
    Info是全局的。
    procedure TTImg.FormCreate(Sender: TObject);
    begin
      Info := TInfoDlg.Create(nil);
    end;然后在procedure TTImg.DBGrid1CellClick(Column: TColumn);
    begin
      //with TInfoDlg.Create(self) do
      with Info do
      begin
        if DBGrid1.DataSource.DataSet.RecordCount > 0 then
        begin
          EditImgId.Text := DBGrid1.DataSource.DataSet.FieldByName('FilNam').AsString;
        end;
        ShowModal;
      end;
    end;
    这段代码没有问题
    EditImgIdw和EditImgId不同
    搜索EditImgIdw看看
      

  4.   

    改为
      with (Info as TInfoDlg) do 
      begin 
        if DBGrid1.DataSource.DataSet.RecordCount > 0 then 
        begin 
          EditImgId.Text := DBGrid1.DataSource.DataSet.FieldByName('FilNam').AsString; 
        end; 
        ShowModal; 
      end; 
    试试
    父类调用子类的成员造成的问题啦