我在一个数据编辑窗口,点击一个speedbutoon打开一个查询窗口,在编辑窗口又两个dbgrid 每次只有一个时显示的,
speedbutton clicked  事件的代吗时这样的
procedure TDataEdit_Form.SpeedButton14Click(Sender: TObject);
var
     Edit_CX_Form:TEdit_CX_Form;
begin
     Edit_CX_Form:=TEdit_CX_Form.Create(self);
     Edit_CX_Form.Update;
     Edit_CX_Form.Showmodal;
end;
------------------------------
然后在新窗体的formshow 有下面的代码;
procedure TEdit_CX_Form.FormShow(Sender: TObject);
var
index:integer;
begin
if dataedit_form.DBGrid_C.Visible=true then //到这里就出现地址访问出错之类的提示,请问这是什么原因?????
  //if  dataedit_form.ActiveControl.Name='DBGrid_C'then
   begin
   index:=dataedit_form.DBGrid_C.SelectedIndex;
   label2.Caption:=trim(dataedit_form.DBGrid_C.Columns.Item[index].Title.Caption);
   fieldname:=dataedit_form.DBGrid_C.Fields[index].FieldName;
   end;
if dataedit_form.DBGrid_E.Visible=true then
//if  dataedit_form.ActiveControl.Name='DBGrid_E'then
   begin
   index:=dataedit_form.DBGrid_E.SelectedIndex;
   label2.Caption:=trim(dataedit_form.DBGrid_E.Columns.Items[index].Title.Caption);
   fieldname:=dataedit_form.DBGrid_E.Fields[index].FieldName;
   end;
end;

解决方案 »

  1.   

    if dataedit_form.DBGrid_C.Visible=true then //到这里就出现地址访问出错之类的提示,请问这是什么原因?????
    因为dataedit_form.DBGrid_C 还没有被创建,你就进行了引用,逻辑上出现了问题,解决方法:k看看载调用之前?dataedit_form是否运行在内存之中了?设置断点,单步跟踪,(调试法宝:F7,F8)
      

  2.   

    因该已经创建了,我没有看到在Edit_CX_Form在创建之前就引用dataedit_form.DBGrid呀