我在包A中定义了一个类'TdmDatabase',在包B中需要用到这个类;程序代码如下:
var
  AClass: TPersistentClass;
begin
  FPackageModule := LoadPackage('DatabaseLink.bpl');
  if FPackageModule <> 0 then
  begin
    AClass := GetClass('TdmDatabase');    if AClass <> nil then begin
      FDataModule := TComponentClass(AClass).Create(nil) as TdmDatabase;      ADOQuery.Connection := FDataModule.
      qryTemp.Connection := ADOCon;
      MasterQry.Connection := ADOCon;
      SubQry.Connection := ADOCon;
    end;
  end;
end;在上面的代码中,FDataModule := TComponentClass(AClass).Create(nil) as TdmDatabase;出错找不到TdmDatabase定义。
网上的例子都是显示窗体,showmodal,当然可以了,问题如果在包里定义了自己的类,那怎么创建自己的类呢,也就是怎么向下转型呢?

解决方案 »

  1.   

    你把TdmDatabase的所在单元包含了没有啊,你这个用LoadPackage隐式调用好像不合适,能否用直接显示调用呢?
    另外,如果你用到TdmDatabase只是ADOCon,那你可以直接
        if AClass  <> nil then begin 
          AComp := TComponentClass(AClass).Create(nil);      ADOQuery.Connection := AComp.FindComponent('ADOCon') as TADOConnection;
          qryTemp.Connection := ADOCon; 
          MasterQry.Connection := ADOCon; 
          SubQry.Connection := ADOCon;