我的做法是:
放置一个navigator,
再每个db控件的OnEnter事件都挂上:
procedure DBCtrlEnter(Sender: TObject);
begin
  if (ActiveControl is TDBEdit) then begin
    DBNavigator1.DataSource := TDBEdit(ActiveControl).DataSource;
    Exit;
  end;
  if ActiveControl.InheritsFrom(TDBGrid) then begin
    DBNavigator1.DataSource := TDBGrid(ActiveControl).DataSource;
    Exit;
  end;
  if (ActiveControl is TDBMemo) then begin
    DBNavigator1.DataSource := TDBMemo(ActiveControl).DataSource;
    Exit;
  end;
  if (ActiveControl is TDBListBox) then begin
    DBNavigator1.DataSource := TDBListBox(ActiveControl).DataSource;
    Exit;
  end;
  if (ActiveControl.ClassType = TDBText) then begin
    DBNavigator1.DataSource := TDBText(ActiveControl).DataSource;
    Exit;
  end;
  if (ActiveControl.ClassType = TDBComboBox) then begin
    DBNavigator1.DataSource := TDBComboBox(ActiveControl).DataSource;
    Exit;
  end;
end;这样只要判断一下是主表还是从表了~~