我在MainForm上放了一个Panel,把DLL中的窗体作为子窗体放到这个Panel上。
调用后,如果子窗体中有ListView或TreeView,一点就出错。说ListView没有父亲窗体。怎么办?
调用后,如果子窗体中有ListView或TreeView,一点就出错。说ListView没有父亲窗体。怎么办?
解决方案 »
- ><><><><在Word的一个对话框里有YES 和 NO 两个按钮 ,怎么在我的程序里模拟点击哪个YES按钮..???><><><>
- TADOQuery记录的添加、删除、修改问题
- 在客户端采用ClientDataSet控件更新数据库,有什么好的办法?
- 关于窗体继承的问题?
- 提两个简单的问题
- 小弟想找工作!熟悉delphi+sql server200,开发过两个项目!在上海!请各位大侠出点意见
- 如何在报表中显示4位的日期,如:2002-7-18?
- 向Query插入大量数据的性能问题.
- 如何在创建窗体时给窗体传递参数?
- 这样使用缓存更新到底对不对!疑惑的……
- 请问高手这样的树形怎么实现?
- delphi中间遇到的一个小问题~
//我先自己做了一个窗体, ChildForm.FormStyle:=fsNormal;unit ChildFrm;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, Menus;type TChildForm = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction); private
FAsChild: Boolean;
FTempParent: TWinControl;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure Loaded; override;
public
constructor Create(AOwner: TComponent); overload; override;
constructor Create(AOwner: TComponent; AParent: TWinControl); reintroduce;
overload; end;var
ChildForm: TChildForm;
RequireAction: Boolean;implementation{$R *.DFM}constructor TChildForm.Create(AOwner: TComponent);
begin
FAsChild := False;
inherited Create(AOwner);end;constructor TChildForm.Create(AOwner: TComponent; AParent: TWinControl);
begin
FAsChild := True;
FTempParent := aParent;
inherited Create(AOwner);
end;
procedure TChildForm.Loaded;
begin
inherited;
if FAsChild then
begin
align := alClient;
BorderStyle := bsNone; //??
BorderIcons := [];
Parent := FTempParent;
Position := poDefault;
Scaled := false;
end;
end;procedure TChildForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
if FAsChild then
Params.Style := Params.Style or WS_CHILD;
end;procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
RequireAction := False;
Action:=caFree;
end;end./////////////////////////////////TDLLForm1 = class(TChildForm)
输出函数是这样写的:
function TestformCreat(mymainform:TForm; PWin: TWinControl): TChildForm; stdcall;
var
Form1: TDLLForm1;
ptr:PLongInt;
begin
ptr:=@(Application.MainForm);
ptr^:=LongInt(mymainform);
Application.Handle:=mymainform.Handle; //保存在任务栏不出现图标
Form1:=TDLLForm1.Create(Application, PWin);
Form1.Show;
Result:=Form1;
end;exports
TestformCreat;////////////////////////
调用后,如果DLL的窗体中有ListView或TreeView,一点就出错。说ListView没有父亲窗体。怎么办?