delphi实现调用dll中的窗体 代码
新建一个dLL工程,新建一个窗体 Fr_bb80 ,我们先在它的单元里加入下面一个函数:
function Report(Title:Pchar):Boolean ;stdcall;
begin
if Fr_bb80=nil then
begin
Fr_bb80:=TFr_bb80.Create(application);
Fr_bb80.Caption:= Title;
try
Fr_bb80.ShowModal;
Result:=true;
finally
Fr_bb80.Free;
end;
end;
Result:=false;
end;
再在此dll工程文件(*dpr)文件中加入
exports Report; //加入这个之后,外面就可以调用这个函数了.
新建一个工程,在新窗体中加一个按钮,下面就是这个按钮的完全代码:
type
TLoadDLL2 = function(Title:Pchar):Boolean; stdcall; //这个是必须的,好像叫回调函数??,它的定义与dll中公开的函数要完全一致
var
FLoad: TLoadDLL2; //将TLoadDLL2 实例化
l:THandle;
begin
l:=LoadLibrary('CW.dll'); //动态调用刚才那个dll文件
// 给FLoad函数赋值,将指针指向 GetProcAddress(l, 'Report') ;"Report" 是这个dll公开的函数名
FLoad := TLoadDLL2(GetProcAddress(l, 'Report'));
if Assigned(FLoad) then //判断是否找到这个公开的函数
FLoad('自定义窗口的标题'); //执行函数,注意函数的参数到这时候才开始赋值
FreeLibrary(l); //释放资源
以上代码在delphi7.0通过!
相关文档:
重载 CreateParams 方法即可
声明:
procedure CreateParams(var Params: TCreateParams);override;
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := 0;
end; ......
XML文件
<?xml version="1.0" encoding="utf-8"?>
.......
因为原因很多,所以这个方法不一定能解决问题
XMLDocument1.LoadfromFile('test.XML');
XMLDocument1.Active:=TRUE;
XMLDocument1.Encoding:='gb2312';
memo1.Text:=XMLDocument1.XML.Text; ......
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button ......
索引是itemindex
item是里面的内容
索引的话,是从0开始
item itemindex
A 1
B 2
C 3
listbox1.items.count就是这个列表框里总共有多少项. ......