读书人

怎么识别不同类别中的相同定义

发布时间: 2012-02-14 19:19:19 作者: rapoo

如何识别不同类别中的相同定义
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中的定义名称改一下,但是工作量太大了,有没有更好的方法呢?请教高手...
谢谢了.

[解决办法]
反过来也是一样:

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;
[解决办法]
zswang(伴水清清)(专家门诊清洁工)

加在dbctrls中,有编译的问题,一般情况下最好不要动系统的pas

其实有个最简单的解决方法:

在uses 中,你把dbctrls放在你的类的前面就可以了,后面的类中的定义会把前面的类的定义覆盖掉.

呵呵,一个小窍门.

读书人网 >.NET

热点推荐