我在DLL程序中写了一个过程:
procedure OpenForm(mainForm:TForm;DS:Tdataset);stdcall;
var
Form1: TForm;
ptr:PLongInt;
QuickRep1: TQuickRep;
begin
ptr:=@(Application.MainForm);
ptr^:=LongInt(mainForm);
Form1:=TForm.Create(mainForm);
QuickRep1:=TQuickRep.CreateParented();
QuickRep1:=TQuickRep.Create(Form1);
QuickRep1.DataSet:=DS;
QuickRep1.ReportTitle:=DLL;
QuickRep1.Zoom:=100;
QuickRep1.PreviewModal;
end;
但是在另外的程序中调用是提示“Control has no parent window”
而我把这个过程直接写在程序中,不用通过DLL来调用就不报错!
望高手来赐教,在线等
看你的写法程序应该是Mdi多文档的界面了
不知道你调用时怎样写的你如果传第Application.mainform 应该不会错,如果传self 或按牛所在的form1 肯定要错。
QuickRep1:=TQuickRep.CreateParented();
QuickRep1:=TQuickRep.Create(Form1);
--------
??
QuickRep1:=TQuickRep.CreateParented(from1.Handle);
procedure OpenForm(mainForm:TForm;DS:Tdataset);stdcall;
var
Form1: TForm;
ptr:PLongInt;
QuickRep1: TQuickRep;
begin
ptr:=@(Application.MainForm);
ptr^:=LongInt(mainForm);
Form1:=TForm.Create(mainForm);
QuickRep1:=TQuickRep.CreateParented();
QuickRep1:=TQuickRep.Create(Form1);
QuickRep1.Parent := Form1;
QuickRep1.DataSet:=DS;
QuickRep1.ReportTitle:=DLL;
QuickRep1.Zoom:=100;
QuickRep1.PreviewModal;
end;
没看代码 看了错误信息,可以认为 你引用对象是继承来的,而你没有添加对象的父类
加一句:QuickRep1.Parent:=Form1;