delphi dbnavigator中自定义了  TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast,
                  nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh);
我自己作了一个dbnavigator类,  TmyNavigateBtn = (nbInsert,nbfind,nbEdit,nbDelete,nbprint,nbFirst, nbPrior, nbNext, nbLast,
                 nbRefresh, nbcopy,nbPost, nbCancel, nbcheck,nbclose);在表单中的myNavigateBtn1click事件中,添加以下代码:
procedure tform1.myDBNavigator1Click(Sender: TObject;
  Button: TmyNavigateBtn);
begin
if button in [nbpost,nbdelete,nbcancel] then
....
end;
系统提示说:incompatible types:'TNavigateBtn and TmyNavigateBtn'最直接的解决的方法是把TmyNavigateBtn中的定义名称改一下,但是工作量太大了,有没有更好的方法呢?请教高手...
谢谢了.

解决方案 »

  1.   

    加上声明TmyNavigateBtn的单元名if button in [YourUnitName.nbpost, YourUnitName.nbdelete, YourUnitName.nbcancel] then
      

  2.   

    反过来也是一样:uses DBCtrls;type
      TmyNavigateBtn = (nbInsert, nbfind, nbEdit, nbDelete, nbprint, nbFirst,
        nbPrior, nbNext, nbLast, nbRefresh, nbcopy, nbPost, nbCancel, nbCheck,
        nbClose);procedure TForm1.Button1Click(Sender: TObject);
    var
      Button: TNavigateBtn;
    begin
      if Button in [DBCtrls.nbPost, DBCtrls.nbDelete, DBCtrls.nbCancel] then
    end;
      

  3.   

    zswang(伴水清清)(专家门诊清洁工)加在dbctrls中,有编译的问题,一般情况下最好不要动系统的pas其实有个最简单的解决方法:在uses 中,你把dbctrls放在你的类的前面就可以了,后面的类中的定义会把前面的类的定义覆盖掉.呵呵,一个小窍门.