我现在再GRID(第三方GRID)中嵌入了一棵树,想在制定的CELL中输入值时显示这棵树,如果他在这个CELL中按向下键(VK_DOWN)我就将焦点转移到树上,可转移完后,他又执行了很多其他事件,现在我想阻止他执行这些,该怎么办
  if (Key = VK_DOWN) and (Treeview1.Visble) and (Acol = 1) then
  begin
     Treeview1.SetFocus;//刚刚转移完
     Exit;  
     //他又去执行了很多别的事件,使得焦点又移开了,我想让他不要去执行这些操作!
  end;

解决方案 »

  1.   

    你可以在调用Treeview1.SetFocus前把不想执行的事件保存下来,然后再将它赋为nil,调用Treeview1.SetFocus后再将它恢复,举个例子:
    var TempEvent:TNotifyEvent;
    if (Key = VK_DOWN) and (Treeview1.Visble) and (Acol = 1) then
      begin
         TempEvent :=Edit1.OnChange;
         Edit1.OnChange := nil;
         try
           Treeview1.SetFocus;//刚刚转移完
         finally
           Edit1.OnChange := TempEvent;
         end;
         Exit;  
         //他又去执行了很多别的事件,使得焦点又移开了,我想让他不要去执行这些操作!
      end;