DLL内容:
library calbom;
uses
ShareMem,
SysUtils,
DB,
ComCtrls,
Classes,
QDialogs,
BomDataMoudle in '..\BomDataMoudle.pas' {DataModule1: TDataModule};{$R *.res}Procedure expand(itname:Pchar;bomview:TTreeView);StdCall;
Begin
//程序中有调用ClientDataset
End;Exports
expand;begin
end.
调用DLL的程序如下:
unit BOMAdd;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, DBCtrls, Mask, Grids,
DBGrids,DB;type
TBom_Add = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
TItem: TEdit;
SBS1: TSpeedButton;
SBR1: TSpeedButton;
Label2: TLabel;
TDp: TEdit;
BOMTree: TTreeView;
procedure SBS1Click(Sender: TObject);
procedure BOMTreeClick(Sender: TObject);
procedure BOMTreeDblClick(Sender: TObject);
procedure SBR1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Bom_Add: TBom_Add;implementationuses BomDataMoudle;
Procedure expand(itname:Pchar;bomview:TTreeView);StdCall; external 'calbom.dll';{$R *.dfm}procedure TBom_Add.SBS1Click(Sender: TObject);
var
Str:String;
test:Pchar;
Begin
With BOMDM.C310 Do
Begin
close;
str:='Select item,part,unit,levels,begins,ends,Scrap From s310 Order by item,part';
commandtext:=str;
open;
End; With BOMDM.C310S Do
Begin
close;
str:='Select part,keys,um,dp,line from s130 Order by part';
commandtext:=str;
open;
End;
test:=pchar(trim(TItem.text));
expand(test,BOMTree);
end;
library calbom;
uses
ShareMem,
SysUtils,
DB,
ComCtrls,
Classes,
QDialogs,
BomDataMoudle in '..\BomDataMoudle.pas' {DataModule1: TDataModule};{$R *.res}Procedure expand(itname:Pchar;bomview:TTreeView);StdCall;
Begin
//程序中有调用ClientDataset
End;Exports
expand;begin
end.
调用DLL的程序如下:
unit BOMAdd;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, DBCtrls, Mask, Grids,
DBGrids,DB;type
TBom_Add = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
TItem: TEdit;
SBS1: TSpeedButton;
SBR1: TSpeedButton;
Label2: TLabel;
TDp: TEdit;
BOMTree: TTreeView;
procedure SBS1Click(Sender: TObject);
procedure BOMTreeClick(Sender: TObject);
procedure BOMTreeDblClick(Sender: TObject);
procedure SBR1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Bom_Add: TBom_Add;implementationuses BomDataMoudle;
Procedure expand(itname:Pchar;bomview:TTreeView);StdCall; external 'calbom.dll';{$R *.dfm}procedure TBom_Add.SBS1Click(Sender: TObject);
var
Str:String;
test:Pchar;
Begin
With BOMDM.C310 Do
Begin
close;
str:='Select item,part,unit,levels,begins,ends,Scrap From s310 Order by item,part';
commandtext:=str;
open;
End; With BOMDM.C310S Do
Begin
close;
str:='Select part,keys,um,dp,line from s130 Order by part';
commandtext:=str;
open;
End;
test:=pchar(trim(TItem.text));
expand(test,BOMTree);
end;
在工程文件的uses后第一个位置加上sharemem(记住是工程文件)看看能不能解决
program Project1;uses
sharemem,
Forms,
Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
我如果不用DLL的话,将函数里的代码放到调用DLL 的位置是正常的呀
怎么办
并在函数中修改这个控件的内容!