详细情况:
  一个主窗体和一个MDIChild窗体.
  在主窗体左边有一个treeview控件,它会在主窗体初始化时会自动加载资料!
  MDIChild窗体中在很多Edit控件和一个DBGrid窗件!
  点击TreeView控件中某一个特定选项A后,调用出MDIChild窗体.MDIChild窗体中DBGrid控件会显示相应的数据。
  好到为此,还正常。
  
  问题就是:再点击主窗体中TreeView控件任意地方后,再直接点击MDIChild窗体中DBGrid控件,DBGrid控件没有任何反映,
  那解决这个问题,只先点击MDIChild窗体其它控件后,才能点击DBGrid控件!  为什么会这样,以前不会这样啊!我以为是TreeView控件中点击事件有问题,但是我取消点击事件后,同出现上面的问题!

解决方案 »

  1.   

    点击TreeView控件中某一个特定选项A后,调用出MDIChild窗体.MDIChild窗体中DBGrid控件会显示相应的数据。把这段代码贴出来看看
      

  2.   

    procedure TMainForm.MainTreeViewDblClick(Sender: TObject);
    var
      i:integer;
      SQLString:string;
    begin
      if MainTreeView.Selected=nil then exit;
      if MainTreeView.Selected.Level=0 then
        begin
           if Trim(MainTreeView.Selected.Text)='业务受理' then
             begin
                Current_YWBH:='';
                application.CreateForm(TFrmSelectYWSQ,FrmSelectYWSQ);
                FrmSelectYWSQ.ShowModal;
                if YW_FormClass<>nil then
                  begin
                     HJ_FormClass:=TFrmHJ_SQ;
                     HJ_Form:=FrmHJ_SQ;
                     Current_SQBH:='';
                     if YW_FormClass=TFormYHXZ then
                       openform(TFormYHXZ,FormYHXZ,self,true)
                  end
                else begin
                    HJ_FormClass:=nil;
                    HJ_Form:=nil;
                    HJ_FormClass:=nil;
                    HJ_Form:=nil;
                    Current_HJBH:='';
                    Current_SQBH:='';
                    Current_YWBH:='';
                end;
             end;
        end
      else if MainTreeView.Selected.Level=1 then
        begin
           OpenForm(TFrmYWLL,FrmYWLL,self,true);
           if Trim(MainTreeView.Selected.Parent.Text)='日常营业' then
             begin
                FrmYWLL.ADOQuery_YWLL.Close;
                for i:=1 to 16 do
                  if POS(L_YWMC[i],Trim(MainTreeView.Selected.Text))>0 then
                    begin
                       with FrmYWLL.ADOQuery_YWLL do
                         begin
                            close;
                            sql.Clear;
                            SQLString:='Select YK_YWSQSLB.SQBH,YK_YWSQSLB.LB,YK_ZD_YWDY.DES as YWMC,YK_YWSQSLB.YDBH,YK_YWSQSLB.ZXXH,YK_YWSQSLB.HJBH,YK_ZD_HJDY.DES as HJMC,'
                                      +'case when YK_YWSQSLB.ZXZK=''0'' then ''待处理'' when YK_YWSQSLB.ZXZK=''1'' then ''已处理通过'' when YK_YWSQSLB.ZXZK=''2'' then ''未通过退回'' end as ZXZK ,'
                                      +'case when YK_YWSQSLB.WCBZ=''0'' then ''申请'' when YK_YWSQSLB.WCBZ=''1'' then ''正常执行'' when YK_YWSQSLB.WCBZ=''2'' then ''被追回'' when YK_YWSQSLB.WCBZ=''3'' then ''执行完'' end as WCBZ'
                                      +' ,YK_YWSQSLB.CLSJ,YK_YWSQSLB.RYBH,YK_YWSQSLB.MS '
                                      +' from YK_YWSQSLB,YK_ZD_YWDY,YK_ZD_HJDY where  YK_YWSQSLB.LB=YK_ZD_YWDY.ID and YK_YWSQSLB.HJBH=YK_ZD_HJDY.ID and YK_ZD_YWDY.DES like '''+'%'+L_YWMC[i]+'%'+''' order by YK_YWSQSLB.SQBH,YK_YWSQSLB.ZXXH ';
                            sql.Add(SQLString);
                            open;
                         end;
                       YW_HJInitTreeView(i);                   break;
                    end;//判断是内容是什么业务
                FrmYWLL.RadioButton1.SetFocus;
             end//判断这第二级是日常营业下
           else if Trim(MainTreeView.Selected.Parent.Text)='环节处理' then begin
               FrmYWLL.ADOQuery_YWLL.Close;
                for i:=1 to 12 do
                  if POS(L_HJMC[i],Trim(MainTreeView.Selected.Text))>0 then
                    begin
                       with FrmYWLL.ADOQuery_YWLL do
                         begin
                            close;
                            sql.Clear;
                            SQLString:='Select YK_YWSQSLB.SQBH,YK_YWSQSLB.LB,YK_ZD_YWDY.DES as YWMC,YK_YWSQSLB.YDBH,YK_YWSQSLB.ZXXH,YK_YWSQSLB.HJBH,YK_ZD_HJDY.DES as HJMC,'
                                      +'case when YK_YWSQSLB.ZXZK=''0'' then ''待处理'' when YK_YWSQSLB.ZXZK=''1'' then ''已处理通过'' when YK_YWSQSLB.ZXZK=''2'' then ''未通过退回'' end as ZXZK ,'
                                      +'case when YK_YWSQSLB.WCBZ=''0'' then ''申请'' when YK_YWSQSLB.WCBZ=''1'' then ''正常执行'' when YK_YWSQSLB.WCBZ=''2'' then ''被追回'' when YK_YWSQSLB.WCBZ=''3'' then ''执行完'' end as WCBZ'
                                      +' ,YK_YWSQSLB.CLSJ,YK_YWSQSLB.RYBH,YK_YWSQSLB.MS '
                                      +' from YK_YWSQSLB,YK_ZD_YWDY,YK_ZD_HJDY where  YK_YWSQSLB.LB=YK_ZD_YWDY.ID and YK_YWSQSLB.HJBH=YK_ZD_HJDY.ID and YK_ZD_YWDY.DES like '''+'%'+L_YWMC[i]+'%'+''' order by YK_YWSQSLB.SQBH,YK_YWSQSLB.ZXXH ';
                            sql.Add(SQLString);
                            open;
                         end;                   break;
                    end;//判断是内容是什么业务
                FrmYWLL.RadioButton1.SetFocus;
           end;
        end;//是第二级
      

  3.   

    myling(阿德) :
      
       我也在别的机子上做了同样的例子,主窗体初始化时treeview控件只加载一些数据。MDIChild窗体初始化时自动为DBGrid程序加载数据(ADOQuery控件Active为True,与DBGrid、datasource三个控件互联)。简化到两个窗体没有点击事件的关连!
    同样出现问题!
      
      还有一点运行以前没有这个问题的程序(已经做好了的),直接运行程序,也出现了这个问题!