下面是一个小程序的整个编写过程!
   建立二个窗体Form1,form2
   form1的窗体风格(formstyle)属性改为MDIForm
   form2的窗体风格属性改为MDIChild
   form1窗体中加入Coolbar控件,并在Coolbar控件上加几个按钮控件(作验证用)
          再加入TreeView控件,并使之位置为最左边
   form2窗体中分别加入DBGrid DataSource ADOQuery这三个控件。并使三者互连。
   ADOQuery在设定ConnectingStrings属性后,在SQL属性中输入一个查证语句“Select * from table”(随便选一个表),然后激活ADOQuery控件。
   在form1中加入uses unit2; 运行程序
  当看到两个窗体都出现后,点击一下treeView控件,再直接点击form2窗体中DBGrid控件选择一条记录(不要先点击Form2窗体中其它部分),DBGrid没有响应!
如果先点击form2窗体其它部分,再点击DBGrid窗体就响应了。
  再做如下动作:
  先点主窗体中Coolbar控件上按钮(或非Treeview控件部分),再直接点击form2中DBGrid控件,DBGrid控件就能马上响应!
  反正点击主窗体中TreeView控件不能马上点击form2中DBGrid控件.
公司里机子都这个样,连家里的机子也是这样!
所以到网上来问一个是程序本身有问题,还是希望大家能帮帮忙

解决方案 »

  1.   

    MDI程序有一些缺陷(不光是在Delphi中使用MDI)。这个问题的解决办法是:在treeView控件点击后重新显示子窗体(即使还是点击原来节点)—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    在 Form2 的 OnActivate 事件中对 DBGrid 处理一下。
    好象是  Refresh ,或 SetFocus,
    试试吧